funasr-runtime-deploy-offline-cpu-zh.sh 47 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331
  1. #!/usr/bin/env bash
  2. scriptVersion="0.0.4"
  3. scriptDate="20230701"
  4. # Set color
  5. RED="\033[31;1m"
  6. GREEN="\033[32;1m"
  7. YELLOW="\033[33;1m"
  8. BLUE="\033[34;1m"
  9. CYAN="\033[36;1m"
  10. PLAIN="\033[0m"
  11. # Info messages
  12. DONE="${GREEN}[DONE]${PLAIN}"
  13. ERROR="${RED}[ERROR]${PLAIN}"
  14. WARNING="${YELLOW}[WARNING]${PLAIN}"
  15. # Font Format
  16. BOLD="\033[1m"
  17. UNDERLINE="\033[4m"
  18. # Current folder
  19. cur_dir=`pwd`
  20. DEFAULT_DOCKER_OFFLINE_CPU_ZH_LISTS="https://raw.githubusercontent.com/alibaba-damo-academy/FunASR/main/funasr/runtime/docs/docker_offline_cpu_zh_lists"
  21. DEFAULT_DOCKER_IMAGE_LISTS=$DEFAULT_DOCKER_OFFLINE_CPU_ZH_LISTS
  22. DEFAULT_FUNASR_DOCKER_URL="registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr"
  23. DEFAULT_FUNASR_RUNTIME_SDK_NAME="funasr-runtime-sdk"
  24. DEFAULT_FUNASR_LOCAL_WORKSPACE="${cur_dir}/${DEFAULT_FUNASR_RUNTIME_SDK_NAME}"
  25. DEFAULT_FUNASR_CONFIG_DIR="/var/funasr"
  26. DEFAULT_FUNASR_CONFIG_FILE="${DEFAULT_FUNASR_CONFIG_DIR}/config"
  27. DEFAULT_FUNASR_WORKSPACE_DIR="/workspace/models"
  28. DEFAULT_DOCKER_PORT="10095"
  29. DEFAULT_PROGRESS_FILENAME="progress.txt"
  30. DEFAULT_SERVER_EXEC_NAME="funasr-wss-server"
  31. DEFAULT_DOCKER_EXEC_DIR="/workspace/FunASR/funasr/runtime/websocket/build/bin"
  32. DEFAULT_DOCKER_EXEC_PATH=${DEFAULT_DOCKER_EXEC_DIR}/${DEFAULT_SERVER_EXEC_NAME}
  33. DEFAULT_SAMPLES_NAME="funasr_samples"
  34. DEFAULT_SAMPLES_URL="https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/sample/${DEFAULT_SAMPLES_NAME}.tar.gz"
  35. SAMPLE_CLIENTS=( \
  36. "Python" \
  37. "Linux_Cpp" \
  38. )
  39. DOCKER_IMAGES=()
  40. PROGRESS_TXT="/var/funasr/progress.txt"
  41. ASR_PERCENT_INT=0
  42. VAD_PERCENT_INT=0
  43. PUNC_PERCENT_INT=0
  44. ASR_TITLE="Downloading"
  45. ASR_PERCENT="0"
  46. ASR_SPEED="0KB/s"
  47. ASR_REVISION=""
  48. VAD_TITLE="Downloading"
  49. VAD_PERCENT="0"
  50. VAD_SPEED="0KB/s"
  51. VAD_REVISION=""
  52. PUNC_TITLE="Downloading"
  53. PUNC_PERCENT="0"
  54. PUNC_SPEED="0KB/s"
  55. PUNC_REVISION=""
  56. ServerProgress(){
  57. status_flag="STATUS:"
  58. stage=0
  59. wait=0
  60. server_status=""
  61. while true
  62. do
  63. if [ -f "$PROGRESS_TXT" ]; then
  64. break
  65. else
  66. sleep 1
  67. let wait=wait+1
  68. if [ ${wait} -ge 6 ]; then
  69. break
  70. fi
  71. fi
  72. done
  73. if [ ! -f "$PROGRESS_TXT" ]; then
  74. echo -e " ${RED}The note of progress does not exist.($PROGRESS_TXT) ${PLAIN}"
  75. return 98
  76. fi
  77. stage=1
  78. while read line
  79. do
  80. if [ $stage -eq 1 ]; then
  81. result=$(echo $line | grep "STATUS:")
  82. if [ "$result" != "" ]; then
  83. stage=2
  84. server_status=${line#*:}
  85. status=`expr $server_status + 0`
  86. if [ $status -eq 99 ]; then
  87. stage=99
  88. fi
  89. continue
  90. fi
  91. elif [ $stage -eq 2 ]; then
  92. result=$(echo $line | grep "ASR")
  93. if [ "$result" != "" ]; then
  94. stage=3
  95. continue
  96. fi
  97. elif [ $stage -eq 3 ]; then
  98. result=$(echo $line | grep "VAD")
  99. if [ "$result" != "" ]; then
  100. stage=4
  101. continue
  102. fi
  103. result=$(echo $line | grep "title:")
  104. if [ "$result" != "" ]; then
  105. ASR_TITLE=${line#*:}
  106. continue
  107. fi
  108. result=$(echo $line | grep "percent:")
  109. if [ "$result" != "" ]; then
  110. ASR_PERCENT=${line#*:}
  111. continue
  112. fi
  113. result=$(echo $line | grep "speed:")
  114. if [ "$result" != "" ]; then
  115. ASR_SPEED=${line#*:}
  116. continue
  117. fi
  118. result=$(echo $line | grep "revision:")
  119. if [ "$result" != "" ]; then
  120. ASR_REVISION=${line#*:}
  121. continue
  122. fi
  123. elif [ $stage -eq 4 ]; then
  124. result=$(echo $line | grep "PUNC")
  125. if [ "$result" != "" ]; then
  126. stage=5
  127. continue
  128. fi
  129. result=$(echo $line | grep "title:")
  130. if [ "$result" != "" ]; then
  131. VAD_TITLE=${line#*:}
  132. continue
  133. fi
  134. result=$(echo $line | grep "percent:")
  135. if [ "$result" != "" ]; then
  136. VAD_PERCENT=${line#*:}
  137. continue
  138. fi
  139. result=$(echo $line | grep "speed:")
  140. if [ "$result" != "" ]; then
  141. VAD_SPEED=${line#*:}
  142. continue
  143. fi
  144. result=$(echo $line | grep "revision:")
  145. if [ "$result" != "" ]; then
  146. VAD_REVISION=${line#*:}
  147. continue
  148. fi
  149. elif [ $stage -eq 5 ]; then
  150. result=$(echo $line | grep "DONE")
  151. if [ "$result" != "" ]; then
  152. # Done and break.
  153. stage=6
  154. break
  155. fi
  156. result=$(echo $line | grep "title:")
  157. if [ "$result" != "" ]; then
  158. PUNC_TITLE=${line#*:}
  159. continue
  160. fi
  161. result=$(echo $line | grep "percent:")
  162. if [ "$result" != "" ]; then
  163. PUNC_PERCENT=${line#*:}
  164. continue
  165. fi
  166. result=$(echo $line | grep "speed:")
  167. if [ "$result" != "" ]; then
  168. PUNC_SPEED=${line#*:}
  169. continue
  170. fi
  171. result=$(echo $line | grep "revision:")
  172. if [ "$result" != "" ]; then
  173. PUNC_REVISION=${line#*:}
  174. continue
  175. fi
  176. elif [ $stage -eq 99 ]; then
  177. echo -e " ${RED}ERROR: $line${PLAIN}"
  178. fi
  179. done < $PROGRESS_TXT
  180. if [ $stage -ne 99 ]; then
  181. DrawProgress "ASR " $ASR_TITLE $ASR_PERCENT $ASR_SPEED $ASR_REVISION $ASR_PERCENT_INT
  182. ASR_PERCENT_INT=$?
  183. DrawProgress "VAD " $VAD_TITLE $VAD_PERCENT $VAD_SPEED $VAD_REVISION $VAD_PERCENT_INT
  184. VAD_PERCENT_INT=$?
  185. DrawProgress "PUNC" $PUNC_TITLE $PUNC_PERCENT $PUNC_SPEED $PUNC_REVISION $PUNC_PERCENT_INT
  186. PUNC_PERCENT_INT=$?
  187. fi
  188. return $stage
  189. }
  190. DrawProgress(){
  191. model=$1
  192. title=$2
  193. percent_str=$3
  194. speed=$4
  195. revision=$5
  196. latest_percent=$6
  197. progress=0
  198. if [ ! -z "$percent_str" ]; then
  199. progress=`expr $percent_str + 0`
  200. latest_percent=`expr $latest_percent + 0`
  201. if [ $progress -ne 0 ] && [ $progress -lt $latest_percent ]; then
  202. progress=$latest_percent
  203. fi
  204. fi
  205. LOADING_FLAG="Loading"
  206. if [ "$title" = "$LOADING_FLAG" ]; then
  207. progress=100
  208. fi
  209. i=0
  210. str=""
  211. let max=progress/2
  212. while [ $i -lt $max ]
  213. do
  214. let i++
  215. str+='='
  216. done
  217. let color=36
  218. let index=max*2
  219. if [ -z "$speed" ]; then
  220. printf "\r \e[0;$color;1m[%s][%-11s][%-50s][%d%%][%s]\e[0m" "$model" "$title" "$str" "$$index" "$revision"
  221. else
  222. printf "\r \e[0;$color;1m[%s][%-11s][%-50s][%3d%%][%8s][%s]\e[0m" "$model" "$title" "$str" "$index" "$speed" "$revision"
  223. fi
  224. printf "\n"
  225. return $progress
  226. }
  227. menuSelection(){
  228. local menu
  229. menu=($(echo "$@"))
  230. result=1
  231. show_no=1
  232. menu_no=0
  233. len=${#menu[@]}
  234. while true
  235. do
  236. echo -e " ${BOLD}${show_no})${PLAIN} ${menu[menu_no]}"
  237. let show_no++
  238. let menu_no++
  239. if [ $menu_no -ge $len ]; then
  240. break
  241. fi
  242. done
  243. while true
  244. do
  245. echo -e " Enter your choice, default(${CYAN}1${PLAIN}): \c"
  246. read result
  247. if [ -z "$result" ]; then
  248. result=1
  249. fi
  250. expr $result + 0 &>/dev/null
  251. if [ $? -eq 0 ]; then
  252. if [ $result -ge 1 ] && [ $result -le $len ]; then
  253. break
  254. else
  255. echo -e " ${RED}Input error, please input correct number!${PLAIN}"
  256. fi
  257. else
  258. echo -e " ${RED}Input error, please input correct number!${PLAIN}"
  259. fi
  260. done
  261. return $result
  262. }
  263. initConfiguration(){
  264. mkdir -p $DEFAULT_FUNASR_CONFIG_DIR
  265. if [ ! -f $DEFAULT_FUNASR_CONFIG_FILE ]; then
  266. touch $DEFAULT_FUNASR_CONFIG_FILE
  267. fi
  268. }
  269. initParameters(){
  270. # Init workspace in local by new parameters.
  271. PARAMS_FUNASR_SAMPLES_LOCAL_DIR=${PARAMS_FUNASR_LOCAL_WORKSPACE}/${DEFAULT_SAMPLES_NAME}
  272. PARAMS_FUNASR_LOCAL_MODELS_DIR="${PARAMS_FUNASR_LOCAL_WORKSPACE}/models"
  273. mkdir -p $PARAMS_FUNASR_LOCAL_WORKSPACE
  274. mkdir -p $PARAMS_FUNASR_LOCAL_MODELS_DIR
  275. }
  276. # Parse the parameters from the docker list file.
  277. docker_info_cur_key=""
  278. docker_info_cur_val=""
  279. findTypeOfDockerInfo(){
  280. line=$1
  281. result=$(echo $line | grep ":")
  282. if [ "$result" != "" ]; then
  283. docker_info_cur_key=$result
  284. docker_info_cur_val=""
  285. else
  286. docker_info_cur_val=$(echo $line)
  287. fi
  288. }
  289. # Get a list of docker images.
  290. readDockerInfoFromUrl(){
  291. list_url=$DEFAULT_DOCKER_IMAGE_LISTS
  292. while true
  293. do
  294. content=$(curl --connect-timeout 10 -m 10 -s $list_url)
  295. if [ ! -z "$content" ]; then
  296. break
  297. else
  298. echo -e " ${RED}Unable to get docker image list due to network issues, try again.${PLAIN}"
  299. fi
  300. done
  301. array=($(echo "$content"))
  302. len=${#array[@]}
  303. stage=0
  304. docker_flag="DOCKER:"
  305. judge_flag=":"
  306. for i in ${array[@]}
  307. do
  308. findTypeOfDockerInfo $i
  309. if [ "$docker_info_cur_key" = "DOCKER:" ]; then
  310. if [ ! -z "$docker_info_cur_val" ]; then
  311. docker_name=${DEFAULT_FUNASR_DOCKER_URL}:${docker_info_cur_val}
  312. DOCKER_IMAGES[${#DOCKER_IMAGES[*]}]=$docker_name
  313. fi
  314. elif [ "$docker_info_cur_key" = "DEFAULT_ASR_MODEL:" ]; then
  315. if [ ! -z "$docker_info_cur_val" ]; then
  316. PARAMS_ASR_ID=$docker_info_cur_val
  317. fi
  318. elif [ "$docker_info_cur_key" = "DEFAULT_VAD_MODEL:" ]; then
  319. if [ ! -z "$docker_info_cur_val" ]; then
  320. PARAMS_VAD_ID=$docker_info_cur_val
  321. fi
  322. elif [ "$docker_info_cur_key" = "DEFAULT_PUNC_MODEL:" ]; then
  323. if [ ! -z "$docker_info_cur_val" ]; then
  324. PARAMS_PUNC_ID=$docker_info_cur_val
  325. fi
  326. fi
  327. done
  328. echo -e " $DONE"
  329. }
  330. # Make sure root user.
  331. rootNess(){
  332. echo -e "${UNDERLINE}${BOLD}[0/6]${PLAIN}"
  333. echo -e " ${YELLOW}Please check root access.${PLAIN}"
  334. echo
  335. echo -e " ${WARNING} MUST RUN AS ${RED}ROOT${PLAIN} USER!"
  336. if [[ $EUID -ne 0 ]]; then
  337. echo -e " ${ERROR} MUST RUN AS ${RED}ROOT${PLAIN} USER!"
  338. fi
  339. cd $cur_dir
  340. echo
  341. }
  342. # Set the host working path.
  343. setupLocalWorkspaceDir(){
  344. echo -e "${UNDERLINE}${BOLD}[1/6]${PLAIN}"
  345. params_local_workspace=`sed '/^PARAMS_FUNASR_LOCAL_WORKSPACE=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  346. if [ -z "$params_local_workspace" ]; then
  347. params_local_workspace=$DEFAULT_FUNASR_LOCAL_WORKSPACE
  348. fi
  349. while true
  350. do
  351. echo -e " ${YELLOW}Please enter the local path of workspace.${PLAIN}"
  352. echo -e " Setting the local path of workspace, default(${CYAN}${params_local_workspace}${PLAIN}): \c"
  353. read PARAMS_FUNASR_LOCAL_WORKSPACE
  354. if [ -z "$PARAMS_FUNASR_LOCAL_WORKSPACE" ]; then
  355. if [ -z "$params_local_workspace" ]; then
  356. continue
  357. else
  358. PARAMS_FUNASR_LOCAL_WORKSPACE=$params_local_workspace
  359. mkdir -p $PARAMS_FUNASR_LOCAL_WORKSPACE
  360. fi
  361. fi
  362. if [ ! -d "$PARAMS_FUNASR_LOCAL_WORKSPACE" ]; then
  363. echo -e " ${RED}The local workspace(${PARAMS_FUNASR_LOCAL_WORKSPACE}) set does not exist, please setup again.${PLAIN}"
  364. else
  365. PARAMS_FUNASR_LOCAL_MODELS_DIR="${PARAMS_FUNASR_LOCAL_WORKSPACE}/models"
  366. echo -e " The local workspace path is ${GREEN}${PARAMS_FUNASR_LOCAL_WORKSPACE}${PLAIN} ."
  367. echo -e " The models will store in local path(${GREEN}${PARAMS_FUNASR_LOCAL_MODELS_DIR}${PLAIN}) during the run."
  368. break
  369. fi
  370. done
  371. echo
  372. }
  373. # Get a list of docker images and select them.
  374. selectDockerImages(){
  375. echo -e "${UNDERLINE}${BOLD}[2/6]${PLAIN}"
  376. echo -e " ${YELLOW}Getting the list of docker images, please wait a few seconds.${PLAIN}"
  377. readDockerInfoFromUrl
  378. echo
  379. echo -e " ${YELLOW}Please choose the Docker image.${PLAIN}"
  380. menuSelection ${DOCKER_IMAGES[*]}
  381. result=$?
  382. index=`expr $result - 1`
  383. PARAMS_DOCKER_IMAGE=${DOCKER_IMAGES[${index}]}
  384. echo -e " ${UNDERLINE}You have chosen the Docker image:${PLAIN} ${GREEN}${PARAMS_DOCKER_IMAGE}${PLAIN}"
  385. checkDockerExist
  386. result=$?
  387. result=`expr $result + 0`
  388. if [ ${result} -eq 50 ]; then
  389. return 50
  390. fi
  391. echo
  392. }
  393. # Configure FunASR server host port setting.
  394. setupHostPort(){
  395. echo -e "${UNDERLINE}${BOLD}[3/6]${PLAIN}"
  396. params_host_port=`sed '/^PARAMS_HOST_PORT=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  397. if [ -z "$params_host_port" ]; then
  398. PARAMS_HOST_PORT="10095"
  399. else
  400. PARAMS_HOST_PORT=$params_host_port
  401. fi
  402. while true
  403. do
  404. echo -e " ${YELLOW}Please input the opened port in the host used for FunASR server.${PLAIN}"
  405. echo -e " Setting the opened host port [1-65535], default(${CYAN}${PARAMS_HOST_PORT}${PLAIN}): \c"
  406. read PARAMS_HOST_PORT
  407. if [ -z "$PARAMS_HOST_PORT" ]; then
  408. params_host_port=`sed '/^PARAMS_HOST_PORT=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  409. if [ -z "$params_host_port" ]; then
  410. PARAMS_HOST_PORT="10095"
  411. else
  412. PARAMS_HOST_PORT=$params_host_port
  413. fi
  414. fi
  415. expr $PARAMS_HOST_PORT + 0 &>/dev/null
  416. if [ $? -eq 0 ]; then
  417. if [ $PARAMS_HOST_PORT -ge 1 ] && [ $PARAMS_HOST_PORT -le 65535 ]; then
  418. echo -e " ${UNDERLINE}The port of the host is${PLAIN} ${GREEN}${PARAMS_HOST_PORT}${PLAIN}"
  419. echo -e " ${UNDERLINE}The port in Docker for FunASR server is${PLAIN} ${GREEN}${PARAMS_DOCKER_PORT}${PLAIN}"
  420. break
  421. else
  422. echo -e " ${RED}Input error, please input correct number!${PLAIN}"
  423. fi
  424. else
  425. echo -e " ${RED}Input error, please input correct number!${PLAIN}"
  426. fi
  427. done
  428. echo
  429. }
  430. complementParameters(){
  431. # parameters about ASR model
  432. if [ ! -z "$PARAMS_ASR_ID" ]; then
  433. PARAMS_DOCKER_ASR_PATH=${PARAMS_DOWNLOAD_MODEL_DIR}/${PARAMS_ASR_ID}
  434. PARAMS_DOCKER_ASR_DIR=$(dirname "$PARAMS_DOCKER_ASR_PATH")
  435. PARAMS_LOCAL_ASR_PATH=${PARAMS_FUNASR_LOCAL_MODELS_DIR}/${PARAMS_ASR_ID}
  436. PARAMS_LOCAL_ASR_DIR=$(dirname "$PARAMS_LOCAL_ASR_PATH")
  437. fi
  438. # parameters about VAD model
  439. if [ ! -z "$PARAMS_VAD_ID" ]; then
  440. PARAMS_DOCKER_VAD_PATH=${PARAMS_DOWNLOAD_MODEL_DIR}/${PARAMS_VAD_ID}
  441. PARAMS_DOCKER_VAD_DIR=$(dirname "$PARAMS_DOCKER_VAD_PATH")
  442. PARAMS_LOCAL_VAD_PATH=${PARAMS_FUNASR_LOCAL_MODELS_DIR}/${PARAMS_VAD_ID}
  443. PARAMS_LOCAL_VAD_DIR=$(dirname "$PARAMS_LOCAL_VAD_PATH")
  444. fi
  445. # parameters about PUNC model
  446. if [ ! -z "$PARAMS_PUNC_ID" ]; then
  447. PARAMS_DOCKER_PUNC_PATH=${PARAMS_DOWNLOAD_MODEL_DIR}/${PARAMS_PUNC_ID}
  448. PARAMS_DOCKER_PUNC_DIR=$(dirname "${PARAMS_DOCKER_PUNC_PATH}")
  449. PARAMS_LOCAL_PUNC_PATH=${PARAMS_FUNASR_LOCAL_MODELS_DIR}/${PARAMS_PUNC_ID}
  450. PARAMS_LOCAL_PUNC_DIR=$(dirname "${PARAMS_LOCAL_PUNC_PATH}")
  451. fi
  452. # parameters about thread_num
  453. params_decoder_thread_num=`sed '/^PARAMS_DECODER_THREAD_NUM=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  454. if [ -z "$params_decoder_thread_num" ]; then
  455. PARAMS_DECODER_THREAD_NUM=$CPUNUM
  456. else
  457. PARAMS_DECODER_THREAD_NUM=$params_decoder_thread_num
  458. fi
  459. multiple_io=4
  460. PARAMS_DECODER_THREAD_NUM=`expr ${PARAMS_DECODER_THREAD_NUM} + 0`
  461. PARAMS_IO_THREAD_NUM=`expr ${PARAMS_DECODER_THREAD_NUM} / ${multiple_io}`
  462. if [ $PARAMS_IO_THREAD_NUM -eq 0 ]; then
  463. PARAMS_IO_THREAD_NUM=1
  464. fi
  465. }
  466. paramsFromDefault(){
  467. initConfiguration
  468. echo -e "${UNDERLINE}${BOLD}[1-3/6]${PLAIN}"
  469. echo -e " ${YELLOW}Load parameters from ${DEFAULT_FUNASR_CONFIG_FILE}${PLAIN}"
  470. echo
  471. PARAMS_FUNASR_LOCAL_WORKSPACE=`sed '/^PARAMS_FUNASR_LOCAL_WORKSPACE=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  472. PARAMS_FUNASR_SAMPLES_LOCAL_DIR=`sed '/^PARAMS_FUNASR_SAMPLES_LOCAL_DIR=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  473. PARAMS_FUNASR_SAMPLES_LOCAL_PATH=`sed '/^PARAMS_FUNASR_SAMPLES_LOCAL_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  474. PARAMS_FUNASR_LOCAL_MODELS_DIR=`sed '/^PARAMS_FUNASR_LOCAL_MODELS_DIR=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  475. PARAMS_FUNASR_CONFIG_PATH=`sed '/^PARAMS_FUNASR_CONFIG_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  476. PARAMS_DOCKER_IMAGE=`sed '/^PARAMS_DOCKER_IMAGE=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  477. PARAMS_DOWNLOAD_MODEL_DIR=`sed '/^PARAMS_DOWNLOAD_MODEL_DIR=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  478. PARAMS_LOCAL_ASR_PATH=`sed '/^PARAMS_LOCAL_ASR_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  479. PARAMS_DOCKER_ASR_PATH=`sed '/^PARAMS_DOCKER_ASR_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  480. PARAMS_ASR_ID=`sed '/^PARAMS_ASR_ID=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  481. PARAMS_LOCAL_VAD_PATH=`sed '/^PARAMS_LOCAL_VAD_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  482. PARAMS_DOCKER_VAD_PATH=`sed '/^PARAMS_DOCKER_VAD_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  483. PARAMS_VAD_ID=`sed '/^PARAMS_VAD_ID=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  484. PARAMS_LOCAL_PUNC_PATH=`sed '/^PARAMS_LOCAL_PUNC_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  485. PARAMS_DOCKER_PUNC_PATH=`sed '/^PARAMS_DOCKER_PUNC_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  486. PARAMS_PUNC_ID=`sed '/^PARAMS_PUNC_ID=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  487. PARAMS_DOCKER_EXEC_PATH=`sed '/^PARAMS_DOCKER_EXEC_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  488. PARAMS_HOST_PORT=`sed '/^PARAMS_HOST_PORT=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  489. PARAMS_DOCKER_PORT=`sed '/^PARAMS_DOCKER_PORT=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  490. PARAMS_DECODER_THREAD_NUM=`sed '/^PARAMS_DECODER_THREAD_NUM=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  491. PARAMS_IO_THREAD_NUM=`sed '/^PARAMS_IO_THREAD_NUM=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  492. }
  493. saveParams(){
  494. echo "$i" > $DEFAULT_FUNASR_CONFIG_FILE
  495. echo -e " ${GREEN}Parameters are stored in the file ${DEFAULT_FUNASR_CONFIG_FILE}${PLAIN}"
  496. echo "PARAMS_DOCKER_IMAGE=${PARAMS_DOCKER_IMAGE}" > $DEFAULT_FUNASR_CONFIG_FILE
  497. echo "PARAMS_FUNASR_LOCAL_WORKSPACE=${PARAMS_FUNASR_LOCAL_WORKSPACE}" >> $DEFAULT_FUNASR_CONFIG_FILE
  498. echo "PARAMS_FUNASR_SAMPLES_LOCAL_DIR=${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  499. echo "PARAMS_FUNASR_SAMPLES_LOCAL_PATH=${PARAMS_FUNASR_SAMPLES_LOCAL_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  500. echo "PARAMS_FUNASR_LOCAL_MODELS_DIR=${PARAMS_FUNASR_LOCAL_MODELS_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  501. echo "PARAMS_FUNASR_CONFIG_PATH=${PARAMS_FUNASR_CONFIG_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  502. echo "PARAMS_DOWNLOAD_MODEL_DIR=${PARAMS_DOWNLOAD_MODEL_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  503. echo "PARAMS_DOCKER_EXEC_PATH=${PARAMS_DOCKER_EXEC_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  504. echo "PARAMS_DOCKER_EXEC_DIR=${PARAMS_DOCKER_EXEC_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  505. echo "PARAMS_LOCAL_ASR_PATH=${PARAMS_LOCAL_ASR_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  506. echo "PARAMS_LOCAL_ASR_DIR=${PARAMS_LOCAL_ASR_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  507. echo "PARAMS_DOCKER_ASR_PATH=${PARAMS_DOCKER_ASR_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  508. echo "PARAMS_DOCKER_ASR_DIR=${PARAMS_DOCKER_ASR_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  509. echo "PARAMS_ASR_ID=${PARAMS_ASR_ID}" >> $DEFAULT_FUNASR_CONFIG_FILE
  510. echo "PARAMS_LOCAL_PUNC_PATH=${PARAMS_LOCAL_PUNC_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  511. echo "PARAMS_LOCAL_PUNC_DIR=${PARAMS_LOCAL_PUNC_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  512. echo "PARAMS_DOCKER_PUNC_PATH=${PARAMS_DOCKER_PUNC_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  513. echo "PARAMS_DOCKER_PUNC_DIR=${PARAMS_DOCKER_PUNC_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  514. echo "PARAMS_PUNC_ID=${PARAMS_PUNC_ID}" >> $DEFAULT_FUNASR_CONFIG_FILE
  515. echo "PARAMS_LOCAL_VAD_PATH=${PARAMS_LOCAL_VAD_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  516. echo "PARAMS_LOCAL_VAD_DIR=${PARAMS_LOCAL_VAD_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  517. echo "PARAMS_DOCKER_VAD_PATH=${PARAMS_DOCKER_VAD_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  518. echo "PARAMS_DOCKER_VAD_DIR=${PARAMS_DOCKER_VAD_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  519. echo "PARAMS_VAD_ID=${PARAMS_VAD_ID}" >> $DEFAULT_FUNASR_CONFIG_FILE
  520. echo "PARAMS_HOST_PORT=${PARAMS_HOST_PORT}" >> $DEFAULT_FUNASR_CONFIG_FILE
  521. echo "PARAMS_DOCKER_PORT=${PARAMS_DOCKER_PORT}" >> $DEFAULT_FUNASR_CONFIG_FILE
  522. echo "PARAMS_DECODER_THREAD_NUM=${PARAMS_DECODER_THREAD_NUM}" >> $DEFAULT_FUNASR_CONFIG_FILE
  523. echo "PARAMS_IO_THREAD_NUM=${PARAMS_IO_THREAD_NUM}" >> $DEFAULT_FUNASR_CONFIG_FILE
  524. }
  525. showAllParams(){
  526. echo -e "${UNDERLINE}${BOLD}[4/6]${PLAIN}"
  527. echo -e " ${YELLOW}Show parameters of FunASR server setting and confirm to run ...${PLAIN}"
  528. echo
  529. if [ ! -z "$PARAMS_DOCKER_IMAGE" ]; then
  530. echo -e " The current Docker image is : ${GREEN}${PARAMS_DOCKER_IMAGE}${PLAIN}"
  531. fi
  532. if [ ! -z "$PARAMS_FUNASR_LOCAL_WORKSPACE" ]; then
  533. echo -e " The local workspace path is : ${GREEN}${PARAMS_FUNASR_LOCAL_WORKSPACE}${PLAIN}"
  534. fi
  535. if [ ! -z "$PARAMS_DOWNLOAD_MODEL_DIR" ]; then
  536. echo -e " The model will be automatically downloaded in Docker : ${GREEN}${PARAMS_DOWNLOAD_MODEL_DIR}${PLAIN}"
  537. fi
  538. echo
  539. if [ ! -z "$PARAMS_ASR_ID" ]; then
  540. echo -e " The ASR model_id used : ${GREEN}${PARAMS_ASR_ID}${PLAIN}"
  541. fi
  542. if [ ! -z "$PARAMS_LOCAL_ASR_PATH" ]; then
  543. echo -e " The path to the local ASR model directory for the load : ${GREEN}${PARAMS_LOCAL_ASR_PATH}${PLAIN}"
  544. fi
  545. echo -e " The ASR model directory corresponds to the directory in Docker : ${GREEN}${PARAMS_DOCKER_ASR_PATH}${PLAIN}"
  546. if [ ! -z "$PARAMS_VAD_ID" ]; then
  547. echo -e " The VAD model_id used : ${GREEN}${PARAMS_VAD_ID}${PLAIN}"
  548. fi
  549. if [ ! -z "$PARAMS_LOCAL_VAD_PATH" ]; then
  550. echo -e " The path to the local VAD model directory for the load : ${GREEN}${PARAMS_LOCAL_VAD_PATH}${PLAIN}"
  551. fi
  552. echo -e " The VAD model directory corresponds to the directory in Docker : ${GREEN}${PARAMS_DOCKER_VAD_PATH}${PLAIN}"
  553. if [ ! -z "$PARAMS_PUNC_ID" ]; then
  554. echo -e " The PUNC model_id used : ${GREEN}${PARAMS_PUNC_ID}${PLAIN}"
  555. fi
  556. if [ ! -z "$PARAMS_LOCAL_PUNC_PATH" ]; then
  557. echo -e " The path to the local PUNC model directory for the load : ${GREEN}${PARAMS_LOCAL_PUNC_PATH}${PLAIN}"
  558. fi
  559. echo -e " The PUNC model directory corresponds to the directory in Docker: ${GREEN}${PARAMS_DOCKER_PUNC_PATH}${PLAIN}"
  560. echo
  561. echo -e " The path in the docker of the FunASR service executor : ${GREEN}${PARAMS_DOCKER_EXEC_PATH}${PLAIN}"
  562. echo -e " Set the host port used for use by the FunASR service : ${GREEN}${PARAMS_HOST_PORT}${PLAIN}"
  563. echo -e " Set the docker port used by the FunASR service : ${GREEN}${PARAMS_DOCKER_PORT}${PLAIN}"
  564. echo -e " Set the number of threads used for decoding the FunASR service : ${GREEN}${PARAMS_DECODER_THREAD_NUM}${PLAIN}"
  565. echo -e " Set the number of threads used for IO the FunASR service : ${GREEN}${PARAMS_IO_THREAD_NUM}${PLAIN}"
  566. echo
  567. if [ ! -z "$PARAMS_FUNASR_SAMPLES_LOCAL_DIR" ]; then
  568. echo -e " Sample code will be store in local : ${GREEN}${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}${PLAIN}"
  569. fi
  570. echo
  571. while true
  572. do
  573. params_confirm="y"
  574. echo -e " ${YELLOW}Please input [Y/n] to confirm the parameters.${PLAIN}"
  575. echo -e " [y] Verify that these parameters are correct and that the service will run."
  576. echo -e " [n] The parameters set are incorrect, it will be rolled out, please rerun."
  577. echo -e " read confirmation[${CYAN}Y${PLAIN}/n]: \c"
  578. read params_confirm
  579. if [ -z "$params_confirm" ]; then
  580. params_confirm="y"
  581. fi
  582. YES="Y"
  583. yes="y"
  584. NO="N"
  585. no="n"
  586. echo
  587. if [ "$params_confirm" = "$YES" ] || [ "$params_confirm" = "$yes" ]; then
  588. echo -e " ${GREEN}Will run FunASR server later ...${PLAIN}"
  589. break
  590. elif [ "$params_confirm" = "$NO" ] || [ "$params_confirm" = "$no" ]; then
  591. echo -e " ${RED}The parameters set are incorrect, please rerun ...${PLAIN}"
  592. exit 1
  593. else
  594. echo "again ..."
  595. fi
  596. done
  597. saveParams
  598. echo
  599. sleep 1
  600. }
  601. # Install docker
  602. installFunasrDocker(){
  603. echo -e "${UNDERLINE}${BOLD}[5/6]${PLAIN}"
  604. if [ $DOCKERINFOLEN -gt 30 ]; then
  605. echo -e " ${YELLOW}Docker has installed.${PLAIN}"
  606. else
  607. lowercase_osid=$(echo $OSID | tr '[A-Z]' '[a-z]')
  608. echo -e " ${YELLOW}Start install docker for ${lowercase_osid} ${PLAIN}"
  609. DOCKER_INSTALL_CMD="curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun"
  610. DOCKER_INSTALL_RUN_CMD=""
  611. case "$lowercase_osid" in
  612. ubuntu)
  613. DOCKER_INSTALL_CMD="curl -fsSL https://test.docker.com -o test-docker.sh"
  614. DOCKER_INSTALL_RUN_CMD="sudo sh test-docker.sh"
  615. ;;
  616. centos)
  617. DOCKER_INSTALL_CMD="curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun"
  618. ;;
  619. debian)
  620. DOCKER_INSTALL_CMD="curl -fsSL https://get.docker.com -o get-docker.sh"
  621. DOCKER_INSTALL_RUN_CMD="sudo sh get-docker.sh"
  622. ;;
  623. \"alios\")
  624. DOCKER_INSTALL_CMD="curl -fsSL https://get.docker.com -o get-docker.sh"
  625. DOCKER_INSTALL_RUN_CMD="sudo sh get-docker.sh"
  626. ;;
  627. \"alinux\")
  628. DOCKER_INSTALL_CMD="sudo yum -y install dnf"
  629. DOCKER_INSTALL_RUN_CMD="sudo dnf -y install docker"
  630. ;;
  631. *)
  632. echo -e " ${RED}$lowercase_osid is not supported.${PLAIN}"
  633. ;;
  634. esac
  635. echo -e " Get docker installer: ${GREEN}${DOCKER_INSTALL_CMD}${PLAIN}"
  636. echo -e " Get docker run: ${GREEN}${DOCKER_INSTALL_RUN_CMD}${PLAIN}"
  637. $DOCKER_INSTALL_CMD
  638. if [ ! -z "$DOCKER_INSTALL_RUN_CMD" ]; then
  639. $DOCKER_INSTALL_RUN_CMD
  640. fi
  641. sudo systemctl start docker
  642. DOCKERINFO=$(sudo docker info | wc -l)
  643. DOCKERINFOLEN=`expr ${DOCKERINFO} + 0`
  644. if [ $DOCKERINFOLEN -gt 30 ]; then
  645. echo -e " ${GREEN}Docker install success, start docker server.${PLAIN}"
  646. sudo systemctl start docker
  647. else
  648. echo -e " ${RED}Docker install failed!${PLAIN}"
  649. exit 1
  650. fi
  651. fi
  652. echo
  653. sleep 1
  654. # Download docker image
  655. echo -e " ${YELLOW}Pull docker image(${PARAMS_DOCKER_IMAGE})...${PLAIN}"
  656. sudo docker pull $PARAMS_DOCKER_IMAGE
  657. echo
  658. sleep 1
  659. }
  660. dockerRun(){
  661. echo -e "${UNDERLINE}${BOLD}[6/6]${PLAIN}"
  662. echo -e " ${YELLOW}Construct command and run docker ...${PLAIN}"
  663. RUN_CMD="sudo docker run"
  664. PORT_MAP=" -p ${PARAMS_HOST_PORT}:${PARAMS_DOCKER_PORT}"
  665. DIR_PARAMS=" --privileged=true"
  666. DIR_MAP_PARAMS=""
  667. if [ ! -z "$PARAMS_LOCAL_ASR_DIR" ]; then
  668. if [ -z "$DIR_MAP_PARAMS" ]; then
  669. DIR_MAP_PARAMS="${DIR_PARAMS} -v ${PARAMS_LOCAL_ASR_DIR}:${PARAMS_DOCKER_ASR_DIR}"
  670. else
  671. DIR_MAP_PARAMS="${DIR_MAP_PARAMS} -v ${PARAMS_LOCAL_ASR_DIR}:${PARAMS_DOCKER_ASR_DIR}"
  672. fi
  673. fi
  674. if [ ! -z "$PARAMS_LOCAL_VAD_DIR" ]; then
  675. if [ -z "$DIR_MAP_PARAMS" ]; then
  676. DIR_MAP_PARAMS="${DIR_PARAMS} -v ${PARAMS_LOCAL_VAD_DIR}:${PARAMS_DOCKER_VAD_DIR}"
  677. else
  678. DIR_MAP_PARAMS="${DIR_MAP_PARAMS} -v ${PARAMS_LOCAL_VAD_DIR}:${PARAMS_DOCKER_VAD_DIR}"
  679. fi
  680. fi
  681. if [ ! -z "$PARAMS_LOCAL_PUNC_DIR" ]; then
  682. if [ -z "$DIR_MAP_PARAMS" ]; then
  683. DIR_MAP_PARAMS="${DIR_PARAMS} -v ${PARAMS_LOCAL_PUNC_DIR}:${PARAMS_DOCKER_PUNC_DIR}"
  684. else
  685. DIR_MAP_PARAMS="${DIR_MAP_PARAMS} -v ${PARAMS_LOCAL_VAD_DIR}:${PARAMS_DOCKER_VAD_DIR}"
  686. fi
  687. fi
  688. EXEC_PARAMS="\"exec\":\"${PARAMS_DOCKER_EXEC_PATH}\""
  689. if [ ! -z "$PARAMS_ASR_ID" ]; then
  690. ASR_PARAMS="\"--model-dir\":\"${PARAMS_ASR_ID}\""
  691. else
  692. ASR_PARAMS="\"--model-dir\":\"${PARAMS_DOCKER_ASR_PATH}\""
  693. fi
  694. if [ ! -z "$PARAMS_VAD_ID" ]; then
  695. VAD_PARAMS="\"--vad-dir\":\"${PARAMS_VAD_ID}\""
  696. else
  697. VAD_PARAMS="\"--vad-dir\":\"${PARAMS_DOCKER_VAD_PATH}\""
  698. fi
  699. if [ ! -z "$PARAMS_PUNC_ID" ]; then
  700. PUNC_PARAMS="\"--punc-dir\":\"${PARAMS_PUNC_ID}\""
  701. else
  702. PUNC_PARAMS="\"--punc-dir\":\"${PARAMS_DOCKER_PUNC_PATH}\""
  703. fi
  704. DOWNLOAD_PARARMS="\"--download-model-dir\":\"${PARAMS_DOWNLOAD_MODEL_DIR}\""
  705. if [ -z "$PARAMS_DOWNLOAD_MODEL_DIR" ]; then
  706. MODEL_PARAMS="${ASR_PARAMS},${VAD_PARAMS},${PUNC_PARAMS}"
  707. else
  708. MODEL_PARAMS="${ASR_PARAMS},${VAD_PARAMS},${PUNC_PARAMS},${DOWNLOAD_PARARMS}"
  709. fi
  710. DECODER_PARAMS="\"--decoder-thread-num\":\"${PARAMS_DECODER_THREAD_NUM}\""
  711. IO_PARAMS="\"--io-thread-num\":\"${PARAMS_IO_THREAD_NUM}\""
  712. THREAD_PARAMS=${DECODER_PARAMS},${IO_PARAMS}
  713. PORT_PARAMS="\"--port\":\"${PARAMS_DOCKER_PORT}\""
  714. CRT_PATH="\"--certfile\":\"/workspace/FunASR/funasr/runtime/ssl_key/server.crt\""
  715. KEY_PATH="\"--keyfile\":\"/workspace/FunASR/funasr/runtime/ssl_key/server.key\""
  716. ENV_PARAMS=" -v /var/funasr:/workspace/.config"
  717. ENV_PARAMS=" ${ENV_PARAMS} --env DAEMON_SERVER_CONFIG={\"server\":[{${EXEC_PARAMS},${MODEL_PARAMS},${THREAD_PARAMS},${PORT_PARAMS},${CRT_PATH},${KEY_PATH}}]}"
  718. RUN_CMD="${RUN_CMD}${PORT_MAP}${DIR_MAP_PARAMS}${ENV_PARAMS}"
  719. RUN_CMD="${RUN_CMD} -it -d ${PARAMS_DOCKER_IMAGE}"
  720. # check Docker
  721. checkDockerExist
  722. result=$?
  723. result=`expr ${result} + 0`
  724. if [ ${result} -eq 50 ]; then
  725. return 50
  726. fi
  727. server_log="/var/funasr/server_console.log"
  728. rm -f ${PROGRESS_TXT}
  729. rm -f ${server_log}
  730. ${RUN_CMD}
  731. echo
  732. echo -e " ${YELLOW}Loading models:${PLAIN}"
  733. # Hide the cursor, start draw progress.
  734. printf "\e[?25l"
  735. while true
  736. do
  737. ServerProgress
  738. result=$?
  739. stage=`expr ${result} + 0`
  740. if [ ${stage} -eq 0 ]; then
  741. break
  742. elif [ ${stage} -gt 0 ] && [ ${stage} -lt 6 ]; then
  743. sleep 0.1
  744. # clear 3 lines
  745. printf "\033[3A"
  746. elif [ ${stage} -eq 6 ]; then
  747. break
  748. elif [ ${stage} -eq 98 ]; then
  749. return 98
  750. else
  751. echo -e " ${RED}Starting FunASR server failed.${PLAIN}"
  752. echo
  753. # Display the cursor
  754. printf "\e[?25h"
  755. return 99
  756. fi
  757. done
  758. # Display the cursor
  759. printf "\e[?25h"
  760. echo -e " ${GREEN}The service has been started.${PLAIN}"
  761. echo
  762. downloadSamples
  763. echo -e " ${BOLD}The sample code is already stored in the ${PLAIN}(${GREEN}${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}${PLAIN}) ."
  764. echo -e " ${BOLD}If you want to see an example of how to use the client, you can run ${PLAIN}${GREEN}sudo bash funasr-runtime-deploy-offline-cpu-zh.sh -c${PLAIN} ."
  765. echo
  766. }
  767. downloadSamples(){
  768. if [ ! -d $PARAMS_FUNASR_SAMPLES_LOCAL_DIR ]; then
  769. echo -e "${YELLOW}Downloading samples to $PARAMS_FUNASR_LOCAL_WORKSPACE ...${PLAIN}"
  770. DOWNLOAD_CMD="curl ${DEFAULT_SAMPLES_URL} -o ${PARAMS_FUNASR_SAMPLES_LOCAL_PATH}"
  771. UNTAR_CMD="tar -zxf ${PARAMS_FUNASR_SAMPLES_LOCAL_PATH} -C ${PARAMS_FUNASR_LOCAL_WORKSPACE}"
  772. if [ ! -f "$PARAMS_FUNASR_SAMPLES_LOCAL_PATH" ]; then
  773. $DOWNLOAD_CMD
  774. fi
  775. $UNTAR_CMD
  776. fi
  777. }
  778. checkDockerExist(){
  779. result=$(sudo docker ps | grep ${PARAMS_DOCKER_IMAGE} | wc -l)
  780. result=`expr ${result} + 0`
  781. if [ ${result} -ne 0 ]; then
  782. echo
  783. echo -e " ${RED}Docker: ${PARAMS_DOCKER_IMAGE} has been launched, please run (${PLAIN}${GREEN}sudo bash funasr-runtime-deploy.sh -p${PLAIN}${RED}) to stop Docker first.${PLAIN}"
  784. return 50
  785. fi
  786. }
  787. dockerExit(){
  788. echo -e " ${YELLOW}Stop docker(${PARAMS_DOCKER_IMAGE}) server ...${PLAIN}"
  789. sudo docker stop `sudo docker ps -a| grep ${PARAMS_DOCKER_IMAGE} | awk '{print $1}' `
  790. echo
  791. sleep 1
  792. }
  793. modelChange(){
  794. model_type=$1
  795. model_id=$2
  796. local_flag=0
  797. if [ -d "$model_id" ]; then
  798. local_flag=1
  799. else
  800. local_flag=0
  801. fi
  802. result=$(echo $model_type | grep "asr_model")
  803. if [ "$result" != "" ]; then
  804. if [ $local_flag -eq 0 ]; then
  805. PARAMS_ASR_ID=$model_id
  806. PARAMS_DOCKER_ASR_PATH=${PARAMS_DOWNLOAD_MODEL_DIR}/${PARAMS_ASR_ID}
  807. PARAMS_DOCKER_ASR_DIR=$(dirname "${PARAMS_DOCKER_ASR_PATH}")
  808. PARAMS_LOCAL_ASR_PATH=${PARAMS_FUNASR_LOCAL_MODELS_DIR}/${PARAMS_ASR_ID}
  809. PARAMS_LOCAL_ASR_DIR=$(dirname "${PARAMS_LOCAL_ASR_PATH}")
  810. else
  811. PARAMS_ASR_ID=""
  812. PARAMS_LOCAL_ASR_PATH=$model_id
  813. if [ ! -d "$PARAMS_LOCAL_ASR_PATH" ]; then
  814. echo -e " ${RED}${PARAMS_LOCAL_ASR_PATH} does not exist, please set again.${PLAIN}"
  815. else
  816. model_name=$(basename "${PARAMS_LOCAL_ASR_PATH}")
  817. PARAMS_LOCAL_ASR_DIR=$(dirname "${PARAMS_LOCAL_ASR_PATH}")
  818. middle=${PARAMS_LOCAL_ASR_DIR#*"${PARAMS_FUNASR_LOCAL_MODELS_DIR}"}
  819. PARAMS_DOCKER_ASR_DIR=$PARAMS_DOWNLOAD_MODEL_DIR
  820. PARAMS_DOCKER_ASR_PATH=${PARAMS_DOCKER_ASR_DIR}/${middle}/${model_name}
  821. fi
  822. fi
  823. fi
  824. result=$(echo ${model_type} | grep "vad_model")
  825. if [ "$result" != "" ]; then
  826. if [ $local_flag -eq 0 ]; then
  827. PARAMS_VAD_ID=$model_id
  828. PARAMS_DOCKER_VAD_PATH=${PARAMS_DOWNLOAD_MODEL_DIR}/${PARAMS_VAD_ID}
  829. PARAMS_DOCKER_VAD_DIR=$(dirname "${PARAMS_DOCKER_VAD_PATH}")
  830. PARAMS_LOCAL_VAD_PATH=${PARAMS_FUNASR_LOCAL_MODELS_DIR}/${PARAMS_VAD_ID}
  831. PARAMS_LOCAL_VAD_DIR=$(dirname "${PARAMS_LOCAL_VAD_PATH}")
  832. else
  833. PARAMS_VAD_ID=""
  834. PARAMS_LOCAL_VAD_PATH=$model_id
  835. if [ ! -d "$PARAMS_LOCAL_VAD_PATH" ]; then
  836. echo -e " ${RED}${PARAMS_LOCAL_VAD_PATH} does not exist, please set again.${PLAIN}"
  837. else
  838. model_name=$(basename "${PARAMS_LOCAL_VAD_PATH}")
  839. PARAMS_LOCAL_VAD_DIR=$(dirname "${PARAMS_LOCAL_VAD_PATH}")
  840. middle=${PARAMS_LOCAL_VAD_DIR#*"${PARAMS_FUNASR_LOCAL_MODELS_DIR}"}
  841. PARAMS_DOCKER_VAD_DIR=$PARAMS_DOWNLOAD_MODEL_DIR
  842. PARAMS_DOCKER_VAD_PATH=${PARAMS_DOCKER_VAD_DIR}/${middle}/${model_name}
  843. fi
  844. fi
  845. fi
  846. result=$(echo $model_type | grep "punc_model")
  847. if [ "$result" != "" ]; then
  848. if [ $local_flag -eq 0 ]; then
  849. PARAMS_PUNC_ID=$model_id
  850. PARAMS_DOCKER_PUNC_PATH=${PARAMS_DOWNLOAD_MODEL_DIR}/${PARAMS_PUNC_ID}
  851. PARAMS_DOCKER_PUNC_DIR=$(dirname "${PARAMS_DOCKER_PUNC_PATH}")
  852. PARAMS_LOCAL_PUNC_PATH=${PARAMS_FUNASR_LOCAL_MODELS_DIR}/${PARAMS_PUNC_ID}
  853. PARAMS_LOCAL_PUNC_DIR=$(dirname "${PARAMS_LOCAL_PUNC_PATH}")
  854. else
  855. model_name=$(basename "${PARAMS_LOCAL_PUNC_PATH}")
  856. PARAMS_LOCAL_PUNC_DIR=$(dirname "${PARAMS_LOCAL_PUNC_PATH}")
  857. middle=${PARAMS_LOCAL_PUNC_DIR#*"${PARAMS_FUNASR_LOCAL_MODELS_DIR}"}
  858. PARAMS_DOCKER_PUNC_DIR=$PARAMS_DOWNLOAD_MODEL_DIR
  859. PARAMS_DOCKER_PUNC_PATH=${PARAMS_DOCKER_PUNC_DIR}/${middle}/${model_name}
  860. fi
  861. fi
  862. }
  863. threadNumChange() {
  864. type=$1
  865. val=$2
  866. if [ -z "$val"]; then
  867. num=`expr ${val} + 0`
  868. if [ $num -ge 1 ] && [ $num -le 1024 ]; then
  869. result=$(echo ${type} | grep "decode_thread_num")
  870. if [ "$result" != "" ]; then
  871. PARAMS_DECODER_THREAD_NUM=$num
  872. fi
  873. result=$(echo ${type} | grep "io_thread_num")
  874. if [ "$result" != "" ]; then
  875. PARAMS_IO_THREAD_NUM=$num
  876. fi
  877. fi
  878. fi
  879. }
  880. portChange() {
  881. type=$1
  882. val=$2
  883. if [ ! -z "$val" ]; then
  884. port=`expr ${val} + 0`
  885. if [ $port -ge 1 ] && [ $port -le 65536 ]; then
  886. result=$(echo ${type} | grep "host_port")
  887. if [ "$result" != "" ]; then
  888. PARAMS_HOST_PORT=$port
  889. fi
  890. result=$(echo ${type} | grep "docker_port")
  891. if [ "$result" != "" ]; then
  892. PARAMS_DOCKER_PORT=$port
  893. fi
  894. fi
  895. fi
  896. }
  897. sampleClientRun(){
  898. echo -e "${YELLOW}Will download sample tools for the client to show how speech recognition works.${PLAIN}"
  899. DOWNLOAD_CMD="curl ${DEFAULT_SAMPLES_URL} -o ${PARAMS_FUNASR_SAMPLES_LOCAL_PATH}"
  900. UNTAR_CMD="tar -zxf ${PARAMS_FUNASR_SAMPLES_LOCAL_PATH} ${PARAMS_FUNASR_LOCAL_WORKSPACE}"
  901. if [ ! -f "$PARAMS_FUNASR_SAMPLES_LOCAL_PATH" ]; then
  902. $DOWNLOAD_CMD
  903. fi
  904. if [ -f "$PARAMS_FUNASR_SAMPLES_LOCAL_PATH" ]; then
  905. $UNTAR_CMD
  906. fi
  907. if [ -d "$PARAMS_FUNASR_SAMPLES_LOCAL_DIR" ]; then
  908. echo -e " Please select the client you want to run."
  909. menuSelection ${SAMPLE_CLIENTS[*]}
  910. result=$?
  911. index=`expr ${result} - 1`
  912. lang=${SAMPLE_CLIENTS[${index}]}
  913. echo
  914. SERVER_IP="127.0.0.1"
  915. read -p " Please enter the IP of server, default($SERVER_IP): " SERVER_IP
  916. if [ -z "$SERVER_IP" ]; then
  917. SERVER_IP="127.0.0.1"
  918. fi
  919. HOST_PORT=`sed '/^PARAMS_HOST_PORT=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  920. if [ -z "$HOST_PORT" ]; then
  921. HOST_PORT="10095"
  922. fi
  923. read -p " Please enter the port of server, default($HOST_PORT): " HOST_PORT
  924. if [ -z "$HOST_PORT" ]; then
  925. HOST_PORT=`sed '/^PARAMS_HOST_PORT=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  926. if [ -z "$HOST_PORT" ]; then
  927. HOST_PORT="10095"
  928. fi
  929. fi
  930. WAV_PATH="${PARAMS_FUNASR_LOCAL_WORKSPACE}/funasr_samples/audio/asr_example.wav"
  931. read -p " Please enter the audio path, default(${WAV_PATH}): " WAV_PATH
  932. if [ -z "$WAV_PATH" ]; then
  933. WAV_PATH="${PARAMS_FUNASR_LOCAL_WORKSPACE}/funasr_samples/audio/asr_example.wav"
  934. fi
  935. echo
  936. PRE_CMD=”“
  937. case "$lang" in
  938. Linux_Cpp)
  939. PRE_CMD="export LD_LIBRARY_PATH=${PARAMS_FUNASR_LOCAL_WORKSPACE}/funasr_samples/cpp/libs:\$LD_LIBRARY_PATH"
  940. CLIENT_EXEC="${PARAMS_FUNASR_LOCAL_WORKSPACE}/funasr_samples/cpp/funasr-wss-client"
  941. RUN_CMD="${CLIENT_EXEC} --server-ip ${SERVER_IP} --port ${HOST_PORT} --wav-path ${WAV_PATH}"
  942. echo -e " Run ${BLUE}${PRE_CMD}${PLAIN}"
  943. $PRE_CMD
  944. echo
  945. ;;
  946. Python)
  947. CLIENT_EXEC="${PARAMS_FUNASR_LOCAL_WORKSPACE}/funasr_samples/python/wss_client_asr.py"
  948. RUN_CMD="python3 ${CLIENT_EXEC} --host ${SERVER_IP} --port ${HOST_PORT} --mode offline --audio_in ${WAV_PATH} --send_without_sleep --output_dir ${PARAMS_FUNASR_LOCAL_WORKSPACE}/funasr_samples/python"
  949. PRE_CMD="pip3 install click>=8.0.4"
  950. echo -e " Run ${BLUE}${PRE_CMD}${PLAIN}"
  951. $PRE_CMD
  952. echo
  953. PRE_CMD="pip3 install -r ${PARAMS_FUNASR_LOCAL_WORKSPACE}/funasr_samples/python/requirements_client.txt"
  954. echo -e " Run ${BLUE}${PRE_CMD}${PLAIN}"
  955. $PRE_CMD
  956. echo
  957. ;;
  958. *)
  959. echo "${lang} is not supported."
  960. ;;
  961. esac
  962. echo -e " Run ${BLUE}${RUN_CMD}${PLAIN}"
  963. $RUN_CMD
  964. echo
  965. echo -e " If failed, you can try (${GREEN}${RUN_CMD}${PLAIN}) in your Shell."
  966. echo
  967. fi
  968. }
  969. paramsConfigure(){
  970. initConfiguration
  971. setupLocalWorkspaceDir
  972. initParameters
  973. selectDockerImages
  974. result=$?
  975. result=`expr ${result} + 0`
  976. if [ ${result} -eq 50 ]; then
  977. return 50
  978. fi
  979. setupHostPort
  980. complementParameters
  981. }
  982. # Display Help info
  983. displayHelp(){
  984. echo -e "${UNDERLINE}Usage${PLAIN}:"
  985. echo -e " $0 [OPTIONAL FLAGS]"
  986. echo
  987. echo -e "funasr-runtime-deploy-offline-cpu.sh - a Bash script to install&run FunASR docker."
  988. echo
  989. echo -e "${UNDERLINE}Options${PLAIN}:"
  990. echo -e " ${BOLD}-i, install, --install${PLAIN} Install and run FunASR docker."
  991. echo -e " ${BOLD}-s, start , --start${PLAIN} Run FunASR docker with configuration that has already been set."
  992. echo -e " ${BOLD}-p, stop , --stop${PLAIN} Stop FunASR docker."
  993. echo -e " ${BOLD}-r, restart, --restart${PLAIN} Restart FunASR docker."
  994. echo -e " ${BOLD}-u, update , --update${PLAIN} Update parameters that has already been set."
  995. echo -e " --update [asr_model | vad_model | punc_model] <model_id or local model path>"
  996. echo -e " --update [host_port | docker_port] <port number>"
  997. echo -e " --update [decode_thread_num | io_thread_num] <the number of threads>"
  998. echo -e " ${BOLD}-c, client , --client${PLAIN} Get a client example to show how to initiate speech recognition."
  999. echo -e " ${BOLD}-o, show , --show${PLAIN} Displays all parameters that have been set."
  1000. echo -e " ${BOLD}-v, version, --version${PLAIN} Display current script version."
  1001. echo -e " ${BOLD}-h, help , --help${PLAIN} Display this help."
  1002. echo
  1003. echo -e " Version : ${scriptVersion} "
  1004. echo -e " Modify Date: ${scriptDate}"
  1005. }
  1006. parseInput(){
  1007. local menu
  1008. menu=($(echo "$@"))
  1009. len=${#menu[@]}
  1010. stage=""
  1011. if [ $len -ge 2 ]; then
  1012. for val in ${menu[@]}
  1013. do
  1014. result=$(echo $val | grep "\-\-")
  1015. if [ "$result" != "" ]; then
  1016. stage=$result
  1017. else
  1018. if [ "$stage" = "--workspace" ]; then
  1019. DEFAULT_FUNASR_LOCAL_WORKSPACE=$val
  1020. fi
  1021. fi
  1022. done
  1023. fi
  1024. }
  1025. # OS
  1026. OSID=$(grep ^ID= /etc/os-release | cut -d= -f2)
  1027. OSVER=$(lsb_release -cs)
  1028. OSNUM=$(grep -oE "[0-9.]+" /etc/issue)
  1029. CPUNUM=$(cat /proc/cpuinfo |grep "processor"|wc -l)
  1030. DOCKERINFO=$(sudo docker info | wc -l)
  1031. DOCKERINFOLEN=`expr ${DOCKERINFO} + 0`
  1032. # PARAMS
  1033. # The workspace for FunASR in local
  1034. PARAMS_FUNASR_LOCAL_WORKSPACE=$DEFAULT_FUNASR_LOCAL_WORKSPACE
  1035. # The dir stored sample code in local
  1036. PARAMS_FUNASR_SAMPLES_LOCAL_DIR=${PARAMS_FUNASR_LOCAL_WORKSPACE}/${DEFAULT_SAMPLES_NAME}
  1037. # The path of sample code in local
  1038. PARAMS_FUNASR_SAMPLES_LOCAL_PATH=${PARAMS_FUNASR_LOCAL_WORKSPACE}/${DEFAULT_SAMPLES_NAME}.tar.gz
  1039. # The dir stored models in local
  1040. PARAMS_FUNASR_LOCAL_MODELS_DIR="${PARAMS_FUNASR_LOCAL_WORKSPACE}/models"
  1041. # The path of configuration in local
  1042. PARAMS_FUNASR_CONFIG_PATH="${PARAMS_FUNASR_LOCAL_WORKSPACE}/config"
  1043. # The server excutor in local
  1044. PARAMS_DOCKER_EXEC_PATH=$DEFAULT_DOCKER_EXEC_PATH
  1045. # The dir stored server excutor in docker
  1046. PARAMS_DOCKER_EXEC_DIR=$DEFAULT_DOCKER_EXEC_DIR
  1047. # The dir for downloading model in docker
  1048. PARAMS_DOWNLOAD_MODEL_DIR=$DEFAULT_FUNASR_WORKSPACE_DIR
  1049. # The Docker image name
  1050. PARAMS_DOCKER_IMAGE=""
  1051. # The dir stored punc model in local
  1052. PARAMS_LOCAL_PUNC_DIR=""
  1053. # The path of punc model in local
  1054. PARAMS_LOCAL_PUNC_PATH=""
  1055. # The dir stored punc model in docker
  1056. PARAMS_DOCKER_PUNC_DIR=""
  1057. # The path of punc model in docker
  1058. PARAMS_DOCKER_PUNC_PATH=""
  1059. # The punc model ID in ModelScope
  1060. PARAMS_PUNC_ID="damo/punc_ct-transformer_zh-cn-common-vocab272727-onnx"
  1061. # The dir stored vad model in local
  1062. PARAMS_LOCAL_VAD_DIR=""
  1063. # The path of vad model in local
  1064. PARAMS_LOCAL_VAD_PATH=""
  1065. # The dir stored vad model in docker
  1066. PARAMS_DOCKER_VAD_DIR=""
  1067. # The path of vad model in docker
  1068. PARAMS_DOCKER_VAD_PATH=""
  1069. # The vad model ID in ModelScope
  1070. PARAMS_VAD_ID="damo/speech_fsmn_vad_zh-cn-16k-common-onnx"
  1071. # The dir stored asr model in local
  1072. PARAMS_LOCAL_ASR_DIR=""
  1073. # The path of asr model in local
  1074. PARAMS_LOCAL_ASR_PATH=""
  1075. # The dir stored asr model in docker
  1076. PARAMS_DOCKER_ASR_DIR=""
  1077. # The path of asr model in docker
  1078. PARAMS_DOCKER_ASR_PATH=""
  1079. # The asr model ID in ModelScope
  1080. PARAMS_ASR_ID="damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx"
  1081. PARAMS_HOST_PORT="10095"
  1082. PARAMS_DOCKER_PORT="10095"
  1083. PARAMS_DECODER_THREAD_NUM="32"
  1084. PARAMS_IO_THREAD_NUM="8"
  1085. echo -e "#############################################################"
  1086. echo -e "# ${RED}OS${PLAIN}: ${OSID} ${OSNUM} ${OSVER}"
  1087. echo -e "# ${RED}Kernel${PLAIN}: $(uname -m) Linux $(uname -r)"
  1088. echo -e "# ${RED}CPU${PLAIN}: $(grep 'model name' /proc/cpuinfo | uniq | awk -F : '{print $2}' | sed 's/^[ \t]*//g' | sed 's/ \+/ /g') "
  1089. echo -e "# ${RED}CPU NUM${PLAIN}: ${CPUNUM}"
  1090. echo -e "# ${RED}RAM${PLAIN}: $(cat /proc/meminfo | grep 'MemTotal' | awk -F : '{print $2}' | sed 's/^[ \t]*//g') "
  1091. echo -e "#"
  1092. echo -e "# ${RED}Version${PLAIN}: ${scriptVersion} "
  1093. echo -e "# ${RED}Modify Date${PLAIN}: ${scriptDate}"
  1094. echo -e "#############################################################"
  1095. echo
  1096. # Initialization step
  1097. case "$1" in
  1098. install|-i|--install)
  1099. rootNess
  1100. parseInput $@
  1101. paramsConfigure
  1102. result=$?
  1103. result=`expr ${result} + 0`
  1104. if [ ${result} -ne 50 ]; then
  1105. showAllParams
  1106. installFunasrDocker
  1107. dockerRun
  1108. result=$?
  1109. stage=`expr ${result} + 0`
  1110. if [ $stage -eq 98 ]; then
  1111. dockerExit
  1112. dockerRun
  1113. fi
  1114. fi
  1115. ;;
  1116. start|-s|--start)
  1117. rootNess
  1118. paramsFromDefault
  1119. showAllParams
  1120. dockerRun
  1121. result=$?
  1122. stage=`expr ${result} + 0`
  1123. if [ $stage -eq 98 ]; then
  1124. dockerExit
  1125. dockerRun
  1126. fi
  1127. ;;
  1128. restart|-r|--restart)
  1129. rootNess
  1130. paramsFromDefault
  1131. showAllParams
  1132. dockerExit
  1133. dockerRun
  1134. result=$?
  1135. stage=`expr ${result} + 0`
  1136. if [ $stage -eq 98 ]; then
  1137. dockerExit
  1138. dockerRun
  1139. fi
  1140. ;;
  1141. stop|-p|--stop)
  1142. rootNess
  1143. paramsFromDefault
  1144. dockerExit
  1145. ;;
  1146. update|-u|--update)
  1147. rootNess
  1148. paramsFromDefault
  1149. if [ $# -eq 3 ]; then
  1150. type=$2
  1151. val=$3
  1152. if [ "$type" = "asr_model" ] || [ "$type" = "vad_model" ] || [ "$type" = "punc_model" ]; then
  1153. modelChange $type $val
  1154. elif [ "$type" = "decode_thread_num" ] || [ "$type" = "io_thread_num" ]; then
  1155. threadNumChange $type $val
  1156. elif [ "$type" = "host_port" ] || [ "$type" = "docker_port" ]; then
  1157. portChange $type $val
  1158. else
  1159. setupLocalWorkspaceDir
  1160. fi
  1161. else
  1162. setupLocalWorkspaceDir
  1163. fi
  1164. complementParameters
  1165. initParameters
  1166. showAllParams
  1167. dockerExit
  1168. dockerRun
  1169. result=$?
  1170. stage=`expr ${result} + 0`
  1171. if [ $stage -eq 98 ]; then
  1172. dockerExit
  1173. dockerRun
  1174. fi
  1175. ;;
  1176. client|-c|--client)
  1177. rootNess
  1178. paramsFromDefault
  1179. sampleClientRun
  1180. ;;
  1181. show|-o|--show)
  1182. rootNess
  1183. paramsFromDefault
  1184. showAllParams
  1185. ;;
  1186. *)
  1187. displayHelp
  1188. exit 0
  1189. ;;
  1190. esac