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

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825
  1. #!/usr/bin/env bash
  2. scriptVersion="0.0.8"
  3. scriptDate="20231030"
  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. SUDO_CMD="sudo"
  21. DEFAULT_DOCKER_OFFLINE_CPU_ZH_LISTS_OSS="https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/docker_lists/docker_offline_cpu_zh_lists"
  22. DEFAULT_DOCKER_OFFLINE_CPU_ZH_LISTS_GIT="https://raw.githubusercontent.com/alibaba-damo-academy/FunASR/main/runtime/docs/docker_offline_cpu_zh_lists"
  23. DEFAULT_DOCKER_IMAGE_LISTS=$DEFAULT_DOCKER_OFFLINE_CPU_ZH_LISTS_OSS
  24. DEFAULT_FUNASR_DOCKER_URL="registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr"
  25. DEFAULT_FUNASR_RUNTIME_RESOURCES="funasr-runtime-resources"
  26. DEFAULT_FUNASR_LOCAL_WORKSPACE=${CUR_DIR}/${DEFAULT_FUNASR_RUNTIME_RESOURCES}
  27. DEFAULT_FUNASR_CONFIG_DIR=""
  28. DEFAULT_FUNASR_CONFIG_DIR_BAK="/var/funasr"
  29. DEFAULT_FUNASR_CONFIG_FILE="${DEFAULT_FUNASR_CONFIG_DIR}/config"
  30. DEFAULT_FUNASR_SERVER_CONFIG_FILE="${DEFAULT_FUNASR_CONFIG_DIR}/server_config"
  31. DEFAULT_FUNASR_PROGRESS_TXT="${DEFAULT_FUNASR_CONFIG_DIR}/progress.txt"
  32. DEFAULT_FUNASR_SERVER_LOG="${DEFAULT_FUNASR_CONFIG_DIR}/server_console.log"
  33. DEFAULT_FUNASR_WORKSPACE_DIR="/workspace/models"
  34. DEFAULT_DOCKER_PORT="10095"
  35. DEFAULT_PROGRESS_FILENAME="progress.txt"
  36. DEFAULT_SERVER_EXEC_NAME="funasr-wss-server"
  37. DEFAULT_DOCKER_EXEC_DIR="/workspace/FunASR/runtime/websocket/build/bin"
  38. DEFAULT_DOCKER_EXEC_PATH=${DEFAULT_DOCKER_EXEC_DIR}/${DEFAULT_SERVER_EXEC_NAME}
  39. DEFAULT_SAMPLES_NAME="funasr_samples"
  40. DEFAULT_SAMPLES_DIR="samples"
  41. DEFAULT_SAMPLES_URL="https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/sample/${DEFAULT_SAMPLES_NAME}.tar.gz"
  42. SAMPLE_CLIENTS=( \
  43. "Python" \
  44. "Linux_Cpp" \
  45. )
  46. DOCKER_IMAGES=()
  47. ASR_MODELS=()
  48. VAD_MODELS=()
  49. PUNC_MODELS=()
  50. LM_MODELS=()
  51. # Handles the download progress bar
  52. asr_percent_int=0
  53. vad_percent_int=0
  54. punc_percent_int=0
  55. asr_title="Downloading"
  56. asr_percent="0"
  57. asr_speed="0KB/s"
  58. asr_revision=""
  59. vad_title="Downloading"
  60. vad_percent="0"
  61. vad_speed="0KB/s"
  62. vad_revision=""
  63. punc_title="Downloading"
  64. punc_percent="0"
  65. punc_speed="0KB/s"
  66. punc_revision=""
  67. serverProgress(){
  68. status_flag="STATUS:"
  69. stage=0
  70. wait=0
  71. server_status=""
  72. while true
  73. do
  74. if [ -f "$DEFAULT_FUNASR_PROGRESS_TXT" ]; then
  75. break
  76. else
  77. sleep 1
  78. let wait=wait+1
  79. if [ ${wait} -ge 6 ]; then
  80. break
  81. fi
  82. fi
  83. done
  84. if [ ! -f "$DEFAULT_FUNASR_PROGRESS_TXT" ]; then
  85. echo -e " ${RED}The note of progress does not exist.($DEFAULT_FUNASR_PROGRESS_TXT) ${PLAIN}"
  86. return 98
  87. fi
  88. stage=1
  89. while read line
  90. do
  91. if [ $stage -eq 1 ]; then
  92. result=$(echo $line | grep "STATUS:")
  93. if [ "$result" != "" ]; then
  94. stage=2
  95. server_status=${line#*:}
  96. status=`expr $server_status + 0`
  97. if [ $status -eq 99 ]; then
  98. stage=99
  99. fi
  100. continue
  101. fi
  102. elif [ $stage -eq 2 ]; then
  103. result=$(echo $line | grep "ASR")
  104. if [ "$result" != "" ]; then
  105. stage=3
  106. continue
  107. fi
  108. elif [ $stage -eq 3 ]; then
  109. result=$(echo $line | grep "VAD")
  110. if [ "$result" != "" ]; then
  111. stage=4
  112. continue
  113. fi
  114. result=$(echo $line | grep "title:")
  115. if [ "$result" != "" ]; then
  116. asr_title=${line#*:}
  117. continue
  118. fi
  119. result=$(echo $line | grep "percent:")
  120. if [ "$result" != "" ]; then
  121. asr_percent=${line#*:}
  122. continue
  123. fi
  124. result=$(echo $line | grep "speed:")
  125. if [ "$result" != "" ]; then
  126. asr_speed=${line#*:}
  127. continue
  128. fi
  129. result=$(echo $line | grep "revision:")
  130. if [ "$result" != "" ]; then
  131. asr_revision=${line#*:}
  132. continue
  133. fi
  134. elif [ $stage -eq 4 ]; then
  135. result=$(echo $line | grep "PUNC")
  136. if [ "$result" != "" ]; then
  137. stage=5
  138. continue
  139. fi
  140. result=$(echo $line | grep "title:")
  141. if [ "$result" != "" ]; then
  142. vad_title=${line#*:}
  143. continue
  144. fi
  145. result=$(echo $line | grep "percent:")
  146. if [ "$result" != "" ]; then
  147. vad_percent=${line#*:}
  148. continue
  149. fi
  150. result=$(echo $line | grep "speed:")
  151. if [ "$result" != "" ]; then
  152. vad_speed=${line#*:}
  153. continue
  154. fi
  155. result=$(echo $line | grep "revision:")
  156. if [ "$result" != "" ]; then
  157. vad_revision=${line#*:}
  158. continue
  159. fi
  160. elif [ $stage -eq 5 ]; then
  161. result=$(echo $line | grep "DONE")
  162. if [ "$result" != "" ]; then
  163. # Done and break.
  164. stage=6
  165. break
  166. fi
  167. result=$(echo $line | grep "title:")
  168. if [ "$result" != "" ]; then
  169. punc_title=${line#*:}
  170. continue
  171. fi
  172. result=$(echo $line | grep "percent:")
  173. if [ "$result" != "" ]; then
  174. punc_percent=${line#*:}
  175. continue
  176. fi
  177. result=$(echo $line | grep "speed:")
  178. if [ "$result" != "" ]; then
  179. punc_speed=${line#*:}
  180. continue
  181. fi
  182. result=$(echo $line | grep "revision:")
  183. if [ "$result" != "" ]; then
  184. punc_revision=${line#*:}
  185. continue
  186. fi
  187. elif [ $stage -eq 99 ]; then
  188. echo -e " ${RED}ERROR: $line${PLAIN}"
  189. fi
  190. done < $DEFAULT_FUNASR_PROGRESS_TXT
  191. if [ $stage -ne 99 ]; then
  192. drawProgress "ASR " $asr_title $asr_percent $asr_speed $asr_revision $asr_percent_int
  193. asr_percent_int=$?
  194. drawProgress "VAD " $vad_title $vad_percent $vad_speed $vad_revision $vad_percent_int
  195. vad_percent_int=$?
  196. drawProgress "PUNC" $punc_title $punc_percent $punc_speed $punc_revision $punc_percent_int
  197. punc_percent_int=$?
  198. fi
  199. return $stage
  200. }
  201. drawProgress(){
  202. model=$1
  203. title=$2
  204. percent_str=$3
  205. speed=$4
  206. revision=$5
  207. latest_percent=$6
  208. progress=0
  209. if [ ! -z "$percent_str" ]; then
  210. progress=`expr $percent_str + 0`
  211. latest_percent=`expr $latest_percent + 0`
  212. if [ $progress -ne 0 ] && [ $progress -lt $latest_percent ]; then
  213. progress=$latest_percent
  214. fi
  215. fi
  216. loading_flag="Loading"
  217. if [ "$title" = "$loading_flag" ]; then
  218. progress=100
  219. fi
  220. i=0
  221. str=""
  222. let max=progress/2
  223. while [ $i -lt $max ]
  224. do
  225. let i++
  226. str+='='
  227. done
  228. let color=36
  229. let index=max*2
  230. if [ -z "$speed" ]; then
  231. printf "\r \e[0;${CYAN}[%s][%-11s][%-50s][%d%%][%s]\e[0m" "$model" "$title" "$str" "$$index" "$revision"
  232. else
  233. printf "\r \e[0;${CYAN}[%s][%-11s][%-50s][%3d%%][%8s][%s]\e[0m" "$model" "$title" "$str" "$index" "$speed" "$revision"
  234. fi
  235. printf "\n"
  236. return $progress
  237. }
  238. menuSelection(){
  239. local menu
  240. menu=($(echo "$@"))
  241. result=1
  242. show_no=1
  243. menu_no=0
  244. len=${#menu[@]}
  245. while true
  246. do
  247. echo -e " ${BOLD}${show_no})${PLAIN} ${menu[menu_no]}"
  248. let show_no++
  249. let menu_no++
  250. if [ $menu_no -ge $len ]; then
  251. break
  252. fi
  253. done
  254. while true
  255. do
  256. echo -e " Enter your choice, default(${CYAN}1${PLAIN}): \c"
  257. read result
  258. if [ -z "$result" ]; then
  259. result=1
  260. fi
  261. expr $result + 0 &>/dev/null
  262. if [ $? -eq 0 ]; then
  263. if [ $result -ge 1 ] && [ $result -le $len ]; then
  264. break
  265. else
  266. echo -e " ${RED}Input error, please input correct number!${PLAIN}"
  267. fi
  268. else
  269. echo -e " ${RED}Input error, please input correct number!${PLAIN}"
  270. fi
  271. done
  272. return $result
  273. }
  274. full_path=""
  275. relativePathToFullPath(){
  276. relativePath=$1
  277. firstChar=${relativePath: 0: 1}
  278. if [[ "$firstChar" == "" ]]; then
  279. full_path=$relativePath
  280. elif [[ "$firstChar" == "/" ]]; then
  281. full_path=$relativePath
  282. fi
  283. tmpPath1=`dirname $relativePath`
  284. tmpFullpath1=`cd $tmpPath1 && pwd`
  285. tmpPath2=`basename $relativePath`
  286. full_path=${tmpFullpath1}/${tmpPath2}
  287. }
  288. initConfiguration(){
  289. if [ -z "$DEFAULT_FUNASR_CONFIG_DIR" ];then
  290. DEFAULT_FUNASR_CONFIG_DIR="$HOME"
  291. if [ -z "$DEFAULT_FUNASR_CONFIG_DIR" ];then
  292. $DEFAULT_FUNASR_CONFIG_DIR=$(echo ~/)
  293. if [ -z "$DEFAULT_FUNASR_CONFIG_DIR" ];then
  294. $DEFAULT_FUNASR_CONFIG_DIR=$DEFAULT_FUNASR_CONFIG_DIR_BAK
  295. fi
  296. fi
  297. DEFAULT_FUNASR_CONFIG_DIR=${DEFAULT_FUNASR_CONFIG_DIR}/.funasr_offline
  298. fi
  299. if [ ! -z "$DEFAULT_FUNASR_CONFIG_DIR" ]; then
  300. $SUDO_CMD mkdir -p $DEFAULT_FUNASR_CONFIG_DIR
  301. else
  302. echo -e " ${RED}DEFAULT_FUNASR_CONFIG_DIR is empty!${PLAIN}"
  303. exit 1
  304. fi
  305. if [ ! -d "$DEFAULT_FUNASR_CONFIG_DIR" ]; then
  306. echo -e " ${RED}${DEFAULT_FUNASR_CONFIG_DIR} does not exist!${PLAIN}"
  307. exit 2
  308. fi
  309. DEFAULT_FUNASR_CONFIG_FILE="${DEFAULT_FUNASR_CONFIG_DIR}/config"
  310. DEFAULT_FUNASR_SERVER_CONFIG_FILE="${DEFAULT_FUNASR_CONFIG_DIR}/server_config"
  311. DEFAULT_FUNASR_PROGRESS_TXT="${DEFAULT_FUNASR_CONFIG_DIR}/progress.txt"
  312. DEFAULT_FUNASR_SERVER_LOG="${DEFAULT_FUNASR_CONFIG_DIR}/server_console.log"
  313. if [ ! -f $DEFAULT_FUNASR_CONFIG_FILE ]; then
  314. $SUDO_CMD touch $DEFAULT_FUNASR_CONFIG_FILE
  315. fi
  316. if [ ! -f $DEFAULT_FUNASR_SERVER_CONFIG_FILE ]; then
  317. $SUDO_CMD touch $DEFAULT_FUNASR_SERVER_CONFIG_FILE
  318. fi
  319. }
  320. initParameters(){
  321. # Init workspace in local by new parameters.
  322. PARAMS_FUNASR_SAMPLES_LOCAL_PATH=${PARAMS_FUNASR_LOCAL_WORKSPACE}/${DEFAULT_SAMPLES_NAME}.tar.gz
  323. PARAMS_FUNASR_SAMPLES_LOCAL_DIR=${PARAMS_FUNASR_LOCAL_WORKSPACE}/${DEFAULT_SAMPLES_DIR}
  324. PARAMS_FUNASR_LOCAL_MODELS_DIR="${PARAMS_FUNASR_LOCAL_WORKSPACE}/models"
  325. if [ ! -z "$PARAMS_FUNASR_LOCAL_WORKSPACE" ]; then
  326. mkdir -p $PARAMS_FUNASR_LOCAL_WORKSPACE
  327. fi
  328. if [ ! -z "$PARAMS_FUNASR_LOCAL_MODELS_DIR" ]; then
  329. mkdir -p $PARAMS_FUNASR_LOCAL_MODELS_DIR
  330. fi
  331. }
  332. # Parse the parameters from the docker list file.
  333. docker_info_cur_key=""
  334. docker_info_cur_val=""
  335. findTypeOfDockerInfo(){
  336. line=$1
  337. result=$(echo $line | grep ":")
  338. if [ "$result" != "" ]; then
  339. docker_info_cur_key=$result
  340. docker_info_cur_val=""
  341. else
  342. docker_info_cur_val=$(echo $line)
  343. fi
  344. }
  345. # Get a list of docker images.
  346. readDockerInfoFromUrl(){
  347. while true
  348. do
  349. list_url=$DEFAULT_DOCKER_IMAGE_LISTS
  350. content=$(curl --connect-timeout 10 -m 10 -s $list_url)
  351. if [ ! -z "$content" ]; then
  352. break
  353. else
  354. echo -e " ${RED}Unable to get docker image list due to network issues, try again.${PLAIN}"
  355. # switch sources of docker image lists
  356. if [ "$list_url" = "$DEFAULT_DOCKER_OFFLINE_CPU_ZH_LISTS_OSS" ]; then
  357. DEFAULT_DOCKER_IMAGE_LISTS=$DEFAULT_DOCKER_OFFLINE_CPU_ZH_LISTS_GIT
  358. else
  359. DEFAULT_DOCKER_IMAGE_LISTS=$DEFAULT_DOCKER_OFFLINE_CPU_ZH_LISTS_OSS
  360. fi
  361. fi
  362. done
  363. array=($(echo "$content"))
  364. len=${#array[@]}
  365. for i in ${array[@]}
  366. do
  367. findTypeOfDockerInfo $i
  368. if [ "$docker_info_cur_key" = "DOCKER:" ]; then
  369. if [ ! -z "$docker_info_cur_val" ]; then
  370. docker_name=${DEFAULT_FUNASR_DOCKER_URL}:${docker_info_cur_val}
  371. DOCKER_IMAGES[${#DOCKER_IMAGES[*]}]=$docker_name
  372. fi
  373. elif [ "$docker_info_cur_key" = "DEFAULT_ASR_MODEL:" ]; then
  374. if [ ! -z "$docker_info_cur_val" ]; then
  375. ASR_MODELS[${#ASR_MODELS[*]}]=$docker_info_cur_val
  376. fi
  377. elif [ "$docker_info_cur_key" = "DEFAULT_VAD_MODEL:" ]; then
  378. if [ ! -z "$docker_info_cur_val" ]; then
  379. VAD_MODELS[${#VAD_MODELS[*]}]=$docker_info_cur_val
  380. fi
  381. elif [ "$docker_info_cur_key" = "DEFAULT_PUNC_MODEL:" ]; then
  382. if [ ! -z "$docker_info_cur_val" ]; then
  383. PUNC_MODELS[${#PUNC_MODELS[*]}]=$docker_info_cur_val
  384. fi
  385. elif [ "$docker_info_cur_key" = "DEFAULT_LM_MODEL:" ]; then
  386. if [ ! -z "$docker_info_cur_val" ]; then
  387. LM_MODELS[${#LM_MODELS[*]}]=$docker_info_cur_val
  388. fi
  389. fi
  390. done
  391. echo -e " $DONE"
  392. }
  393. # Make sure root user.
  394. rootNess(){
  395. echo -e "${UNDERLINE}${BOLD}[0/6]${PLAIN}"
  396. echo -e " ${YELLOW}Please check root access.${PLAIN}"
  397. echo -e " ${WARNING} MUST RUN AS ${RED}ROOT${PLAIN} USER!"
  398. if [[ $EUID -ne 0 ]]; then
  399. echo -e " ${ERROR} MUST RUN AS ${RED}ROOT${PLAIN} USER!"
  400. fi
  401. check_sudo=$(which sudo | wc -l)
  402. if [ $check_sudo -eq 0 ]; then
  403. SUDO_CMD=""
  404. fi
  405. cd $CUR_DIR
  406. echo
  407. }
  408. # Get a list of docker images and select them.
  409. selectDockerImages(){
  410. echo -e "${UNDERLINE}${BOLD}[1/6]${PLAIN}"
  411. echo -e " ${YELLOW}Getting the list of docker images, please wait a few seconds.${PLAIN}"
  412. readDockerInfoFromUrl
  413. echo
  414. the_latest_docker_image=$PARAMS_DOCKER_IMAGE
  415. echo -e " ${YELLOW}Please choose the Docker image.${PLAIN}"
  416. menuSelection ${DOCKER_IMAGES[*]}
  417. result=$?
  418. index=`expr ${result} - 1`
  419. PARAMS_DOCKER_IMAGE=${DOCKER_IMAGES[${index}]}
  420. echo -e " ${UNDERLINE}You have chosen the Docker image:${PLAIN} ${GREEN}${PARAMS_DOCKER_IMAGE}${PLAIN}"
  421. if [ -z "$the_latest_docker_image" ] && [ -z "$PARAMS_FUNASR_DOCKER_ID" ]; then
  422. result=0
  423. else
  424. # 0: DOCKER is not running
  425. # 60: DOCKER_ID is empty
  426. # 61: DOCKER_IMAGE is empty
  427. # 62: DOCKER is running
  428. # 63: DOCKER_ID and DOCKER_IMAGE are empty
  429. checkDockerIdExist "install"
  430. result=$?
  431. result=`expr ${result} + 0`
  432. if [ $result -eq 60 ]; then
  433. result=0
  434. elif [ $result -eq 61 ]; then
  435. echo
  436. echo -e " ${RED}Please run (${PLAIN}${GREEN}${SUDO_CMD} bash funasr-runtime-deploy-offline-cpu-zh.sh install${PLAIN}${RED}) to install Docker first.${PLAIN}"
  437. elif [ $result -eq 62 ]; then
  438. echo
  439. echo -e " ${RED}Docker: ${PARAMS_DOCKER_IMAGE} ${PARAMS_FUNASR_DOCKER_ID} has been launched, please run (${PLAIN}${GREEN}${SUDO_CMD} bash funasr-runtime-deploy-offline-cpu-zh.sh remove${PLAIN}${RED}) to remove Docker first ant then install.${PLAIN}"
  440. elif [ $result -eq 63 ]; then
  441. result=0
  442. fi
  443. fi
  444. echo
  445. }
  446. # Get a list of models and select them.
  447. selectModels(){
  448. echo -e "${UNDERLINE}${BOLD}[2/6]${PLAIN}"
  449. echo -e " ${YELLOW}Get a list of selectable models.${PLAIN}"
  450. echo
  451. selectAsrModels
  452. selectVadModels
  453. selectPuncModels
  454. selectLMModels
  455. echo
  456. }
  457. selectAsrModels(){
  458. echo -e " ${YELLOW}Please choose the ASR model.${PLAIN}"
  459. menuSelection ${ASR_MODELS[*]}
  460. result=$?
  461. index=`expr ${result} - 1`
  462. PARAMS_ASR_ID=${ASR_MODELS[${index}]}
  463. echo -e " ${UNDERLINE}You have chosen the ASR model:${PLAIN} ${GREEN}${PARAMS_ASR_ID}${PLAIN}"
  464. echo
  465. }
  466. selectVadModels(){
  467. echo -e " ${YELLOW}Please choose the VAD model.${PLAIN}"
  468. menuSelection ${VAD_MODELS[*]}
  469. result=$?
  470. index=`expr ${result} - 1`
  471. PARAMS_VAD_ID=${VAD_MODELS[${index}]}
  472. echo -e " ${UNDERLINE}You have chosen the VAD model:${PLAIN} ${GREEN}${PARAMS_VAD_ID}${PLAIN}"
  473. echo
  474. }
  475. selectPuncModels(){
  476. echo -e " ${YELLOW}Please choose the PUNC model.${PLAIN}"
  477. menuSelection ${PUNC_MODELS[*]}
  478. result=$?
  479. index=`expr ${result} - 1`
  480. PARAMS_PUNC_ID=${PUNC_MODELS[${index}]}
  481. echo -e " ${UNDERLINE}You have chosen the PUNC model:${PLAIN} ${GREEN}${PARAMS_PUNC_ID}${PLAIN}"
  482. echo
  483. }
  484. selectLMModels(){
  485. echo -e " ${YELLOW}Please choose the LM model.${PLAIN}"
  486. menuSelection ${LM_MODELS[*]}
  487. result=$?
  488. index=`expr ${result} - 1`
  489. PARAMS_LM_ID=${LM_MODELS[${index}]}
  490. echo -e " ${UNDERLINE}You have chosen the LM model:${PLAIN} ${GREEN}${PARAMS_LM_ID}${PLAIN}"
  491. echo
  492. }
  493. # Configure FunASR server host port setting.
  494. setupHostPort(){
  495. echo -e "${UNDERLINE}${BOLD}[3/6]${PLAIN}"
  496. params_host_port=`sed '/^PARAMS_HOST_PORT=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  497. if [ -z "$params_host_port" ]; then
  498. PARAMS_HOST_PORT="10095"
  499. else
  500. PARAMS_HOST_PORT=$params_host_port
  501. fi
  502. while true
  503. do
  504. echo -e " ${YELLOW}Please input the opened port in the host used for FunASR server.${PLAIN}"
  505. echo -e " Setting the opened host port [1-65535], default(${CYAN}${PARAMS_HOST_PORT}${PLAIN}): \c"
  506. read PARAMS_HOST_PORT
  507. if [ -z "$PARAMS_HOST_PORT" ]; then
  508. params_host_port=`sed '/^PARAMS_HOST_PORT=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  509. if [ -z "$params_host_port" ]; then
  510. PARAMS_HOST_PORT="10095"
  511. else
  512. PARAMS_HOST_PORT=$params_host_port
  513. fi
  514. fi
  515. expr $PARAMS_HOST_PORT + 0 &>/dev/null
  516. if [ $? -eq 0 ]; then
  517. if [ $PARAMS_HOST_PORT -ge 1 ] && [ $PARAMS_HOST_PORT -le 65535 ]; then
  518. echo -e " ${UNDERLINE}The port of the host is${PLAIN} ${GREEN}${PARAMS_HOST_PORT}${PLAIN}"
  519. echo -e " ${UNDERLINE}The port in Docker for FunASR server is${PLAIN} ${GREEN}${PARAMS_DOCKER_PORT}${PLAIN}"
  520. break
  521. else
  522. echo -e " ${RED}Input error, please input correct number!${PLAIN}"
  523. fi
  524. else
  525. echo -e " ${RED}Input error, please input correct number!${PLAIN}"
  526. fi
  527. done
  528. echo
  529. }
  530. complementParameters(){
  531. # parameters about ASR model
  532. if [ ! -z "$PARAMS_ASR_ID" ]; then
  533. PARAMS_DOCKER_ASR_PATH=${PARAMS_DOWNLOAD_MODEL_DIR}/${PARAMS_ASR_ID}
  534. PARAMS_DOCKER_ASR_DIR=$(dirname "$PARAMS_DOCKER_ASR_PATH")
  535. PARAMS_LOCAL_ASR_PATH=${PARAMS_FUNASR_LOCAL_MODELS_DIR}/${PARAMS_ASR_ID}
  536. PARAMS_LOCAL_ASR_DIR=$(dirname "$PARAMS_LOCAL_ASR_PATH")
  537. fi
  538. # parameters about VAD model
  539. if [ ! -z "$PARAMS_VAD_ID" ]; then
  540. PARAMS_DOCKER_VAD_PATH=${PARAMS_DOWNLOAD_MODEL_DIR}/${PARAMS_VAD_ID}
  541. PARAMS_DOCKER_VAD_DIR=$(dirname "$PARAMS_DOCKER_VAD_PATH")
  542. PARAMS_LOCAL_VAD_PATH=${PARAMS_FUNASR_LOCAL_MODELS_DIR}/${PARAMS_VAD_ID}
  543. PARAMS_LOCAL_VAD_DIR=$(dirname "$PARAMS_LOCAL_VAD_PATH")
  544. fi
  545. # parameters about PUNC model
  546. if [ ! -z "$PARAMS_PUNC_ID" ]; then
  547. PARAMS_DOCKER_PUNC_PATH=${PARAMS_DOWNLOAD_MODEL_DIR}/${PARAMS_PUNC_ID}
  548. PARAMS_DOCKER_PUNC_DIR=$(dirname "${PARAMS_DOCKER_PUNC_PATH}")
  549. PARAMS_LOCAL_PUNC_PATH=${PARAMS_FUNASR_LOCAL_MODELS_DIR}/${PARAMS_PUNC_ID}
  550. PARAMS_LOCAL_PUNC_DIR=$(dirname "${PARAMS_LOCAL_PUNC_PATH}")
  551. fi
  552. # parameters about LM model
  553. if [ ! -z "$PARAMS_LM_ID" ]; then
  554. PARAMS_DOCKER_LM_PATH=${PARAMS_DOWNLOAD_MODEL_DIR}/${PARAMS_LM_ID}
  555. PARAMS_DOCKER_LM_DIR=$(dirname "${PARAMS_DOCKER_LM_PATH}")
  556. PARAMS_LOCAL_LM_PATH=${PARAMS_FUNASR_LOCAL_MODELS_DIR}/${PARAMS_LM_ID}
  557. PARAMS_LOCAL_LM_DIR=$(dirname "${PARAMS_LOCAL_LM_PATH}")
  558. fi
  559. # parameters about thread_num
  560. params_decoder_thread_num=`sed '/^PARAMS_DECODER_THREAD_NUM=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  561. if [ -z "$params_decoder_thread_num" ]; then
  562. PARAMS_DECODER_THREAD_NUM=$CPUNUM
  563. else
  564. PARAMS_DECODER_THREAD_NUM=$params_decoder_thread_num
  565. fi
  566. multiple_io=4
  567. PARAMS_DECODER_THREAD_NUM=`expr ${PARAMS_DECODER_THREAD_NUM} + 0`
  568. PARAMS_IO_THREAD_NUM=`expr ${PARAMS_DECODER_THREAD_NUM} / ${multiple_io}`
  569. if [ $PARAMS_IO_THREAD_NUM -eq 0 ]; then
  570. PARAMS_IO_THREAD_NUM=1
  571. fi
  572. }
  573. paramsFromDefault(){
  574. initConfiguration
  575. echo -e " ${YELLOW}Load parameters from${PLAIN} ${GREEN}${DEFAULT_FUNASR_CONFIG_FILE}${PLAIN}"
  576. echo
  577. funasr_local_workspace=`sed '/^PARAMS_FUNASR_LOCAL_WORKSPACE=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  578. if [ ! -z "$funasr_local_workspace" ]; then
  579. PARAMS_FUNASR_LOCAL_WORKSPACE=$funasr_local_workspace
  580. fi
  581. funasr_samples_local_dir=`sed '/^PARAMS_FUNASR_SAMPLES_LOCAL_DIR=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  582. if [ ! -z "$funasr_samples_local_dir" ]; then
  583. PARAMS_FUNASR_SAMPLES_LOCAL_DIR=$funasr_samples_local_dir
  584. fi
  585. funasr_samples_local_path=`sed '/^PARAMS_FUNASR_SAMPLES_LOCAL_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  586. if [ ! -z "$funasr_samples_local_path" ]; then
  587. PARAMS_FUNASR_SAMPLES_LOCAL_PATH=$funasr_samples_local_path
  588. fi
  589. funasr_local_models_dir=`sed '/^PARAMS_FUNASR_LOCAL_MODELS_DIR=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  590. if [ ! -z "$funasr_local_models_dir" ]; then
  591. PARAMS_FUNASR_LOCAL_MODELS_DIR=$funasr_local_models_dir
  592. fi
  593. docker_image=`sed '/^PARAMS_DOCKER_IMAGE=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  594. if [ ! -z "$docker_image" ]; then
  595. PARAMS_DOCKER_IMAGE=$docker_image
  596. fi
  597. download_model_dir=`sed '/^PARAMS_DOWNLOAD_MODEL_DIR=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  598. if [ ! -z "$download_model_dir" ]; then
  599. PARAMS_DOWNLOAD_MODEL_DIR=$download_model_dir
  600. fi
  601. PARAMS_LOCAL_ASR_PATH=`sed '/^PARAMS_LOCAL_ASR_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  602. if [ ! -z "$local_asr_path" ]; then
  603. PARAMS_LOCAL_ASR_PATH=$local_asr_path
  604. fi
  605. docker_asr_path=`sed '/^PARAMS_DOCKER_ASR_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  606. if [ ! -z "$docker_asr_path" ]; then
  607. PARAMS_DOCKER_ASR_PATH=$docker_asr_path
  608. fi
  609. asr_id=`sed '/^PARAMS_ASR_ID=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  610. if [ ! -z "$asr_id" ]; then
  611. PARAMS_ASR_ID=$asr_id
  612. fi
  613. local_vad_path=`sed '/^PARAMS_LOCAL_VAD_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  614. if [ ! -z "$local_vad_path" ]; then
  615. PARAMS_LOCAL_VAD_PATH=$local_vad_path
  616. fi
  617. docker_vad_path=`sed '/^PARAMS_DOCKER_VAD_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  618. if [ ! -z "$docker_vad_path" ]; then
  619. PARAMS_DOCKER_VAD_PATH=$docker_vad_path
  620. fi
  621. vad_id=`sed '/^PARAMS_VAD_ID=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  622. if [ ! -z "$vad_id" ]; then
  623. PARAMS_VAD_ID=$vad_id
  624. fi
  625. local_punc_path=`sed '/^PARAMS_LOCAL_PUNC_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  626. if [ ! -z "$local_punc_path" ]; then
  627. PARAMS_LOCAL_PUNC_PATH=$local_punc_path
  628. fi
  629. docker_punc_path=`sed '/^PARAMS_DOCKER_PUNC_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  630. if [ ! -z "$docker_punc_path" ]; then
  631. PARAMS_DOCKER_PUNC_PATH=$docker_punc_path
  632. fi
  633. punc_id=`sed '/^PARAMS_PUNC_ID=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  634. if [ ! -z "$punc_id" ]; then
  635. PARAMS_PUNC_ID=$punc_id
  636. fi
  637. local_lm_path=`sed '/^PARAMS_LOCAL_LM_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  638. if [ ! -z "$local_lm_path" ]; then
  639. PARAMS_LOCAL_LM_PATH=$local_lm_path
  640. fi
  641. docker_lm_path=`sed '/^PARAMS_DOCKER_LM_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  642. if [ ! -z "$docker_lm_path" ]; then
  643. PARAMS_DOCKER_LM_PATH=$docker_lm_path
  644. fi
  645. lm_id=`sed '/^PARAMS_LM_ID=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  646. if [ ! -z "$lm_id" ]; then
  647. PARAMS_LM_ID=$lm_id
  648. fi
  649. # docker_exec_path=`sed '/^PARAMS_DOCKER_EXEC_PATH=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  650. if [ ! -z "$docker_exec_path" ]; then
  651. PARAMS_DOCKER_EXEC_PATH=$docker_exec_path
  652. fi
  653. host_port=`sed '/^PARAMS_HOST_PORT=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  654. if [ ! -z "$host_port" ]; then
  655. PARAMS_HOST_PORT=$host_port
  656. fi
  657. docker_port=`sed '/^PARAMS_DOCKER_PORT=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  658. if [ ! -z "$docker_port" ]; then
  659. PARAMS_DOCKER_PORT=$docker_port
  660. fi
  661. decode_thread_num=`sed '/^PARAMS_DECODER_THREAD_NUM=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  662. if [ ! -z "$decode_thread_num" ]; then
  663. PARAMS_DECODER_THREAD_NUM=$decode_thread_num
  664. fi
  665. io_thread_num=`sed '/^PARAMS_IO_THREAD_NUM=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  666. if [ ! -z "$io_thread_num" ]; then
  667. PARAMS_IO_THREAD_NUM=$io_thread_num
  668. fi
  669. ssl_flag=`sed '/^PARAMS_SSL_FLAG=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  670. if [ ! -z "$ssl_flag" ]; then
  671. PARAMS_SSL_FLAG=$ssl_flag
  672. fi
  673. docker_id=`sed '/^PARAMS_FUNASR_DOCKER_ID=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  674. if [ ! -z "$docker_id" ]; then
  675. PARAMS_FUNASR_DOCKER_ID=$docker_id
  676. fi
  677. }
  678. saveParams(){
  679. echo "$i" > $DEFAULT_FUNASR_CONFIG_FILE
  680. echo -e " ${GREEN}Parameters are stored in the file ${DEFAULT_FUNASR_CONFIG_FILE}${PLAIN}"
  681. echo "PARAMS_DOCKER_IMAGE=${PARAMS_DOCKER_IMAGE}" > $DEFAULT_FUNASR_CONFIG_FILE
  682. echo "PARAMS_FUNASR_LOCAL_WORKSPACE=${PARAMS_FUNASR_LOCAL_WORKSPACE}" >> $DEFAULT_FUNASR_CONFIG_FILE
  683. echo "PARAMS_FUNASR_SAMPLES_LOCAL_DIR=${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  684. echo "PARAMS_FUNASR_SAMPLES_LOCAL_PATH=${PARAMS_FUNASR_SAMPLES_LOCAL_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  685. echo "PARAMS_FUNASR_LOCAL_MODELS_DIR=${PARAMS_FUNASR_LOCAL_MODELS_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  686. echo "PARAMS_DOWNLOAD_MODEL_DIR=${PARAMS_DOWNLOAD_MODEL_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  687. echo "PARAMS_DOCKER_EXEC_PATH=${PARAMS_DOCKER_EXEC_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  688. echo "PARAMS_DOCKER_EXEC_DIR=${PARAMS_DOCKER_EXEC_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  689. echo "PARAMS_LOCAL_ASR_PATH=${PARAMS_LOCAL_ASR_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  690. echo "PARAMS_LOCAL_ASR_DIR=${PARAMS_LOCAL_ASR_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  691. echo "PARAMS_DOCKER_ASR_PATH=${PARAMS_DOCKER_ASR_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  692. echo "PARAMS_DOCKER_ASR_DIR=${PARAMS_DOCKER_ASR_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  693. echo "PARAMS_ASR_ID=${PARAMS_ASR_ID}" >> $DEFAULT_FUNASR_CONFIG_FILE
  694. echo "PARAMS_LOCAL_PUNC_PATH=${PARAMS_LOCAL_PUNC_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  695. echo "PARAMS_LOCAL_PUNC_DIR=${PARAMS_LOCAL_PUNC_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  696. echo "PARAMS_DOCKER_PUNC_PATH=${PARAMS_DOCKER_PUNC_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  697. echo "PARAMS_DOCKER_PUNC_DIR=${PARAMS_DOCKER_PUNC_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  698. echo "PARAMS_PUNC_ID=${PARAMS_PUNC_ID}" >> $DEFAULT_FUNASR_CONFIG_FILE
  699. echo "PARAMS_LOCAL_LM_PATH=${PARAMS_LOCAL_LM_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  700. echo "PARAMS_LOCAL_LM_DIR=${PARAMS_LOCAL_LM_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  701. echo "PARAMS_DOCKER_LM_PATH=${PARAMS_DOCKER_LM_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  702. echo "PARAMS_DOCKER_LM_DIR=${PARAMS_DOCKER_LM_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  703. echo "PARAMS_LM_ID=${PARAMS_LM_ID}" >> $DEFAULT_FUNASR_CONFIG_FILE
  704. echo "PARAMS_LOCAL_VAD_PATH=${PARAMS_LOCAL_VAD_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  705. echo "PARAMS_LOCAL_VAD_DIR=${PARAMS_LOCAL_VAD_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  706. echo "PARAMS_DOCKER_VAD_PATH=${PARAMS_DOCKER_VAD_PATH}" >> $DEFAULT_FUNASR_CONFIG_FILE
  707. echo "PARAMS_DOCKER_VAD_DIR=${PARAMS_DOCKER_VAD_DIR}" >> $DEFAULT_FUNASR_CONFIG_FILE
  708. echo "PARAMS_VAD_ID=${PARAMS_VAD_ID}" >> $DEFAULT_FUNASR_CONFIG_FILE
  709. echo "PARAMS_HOST_PORT=${PARAMS_HOST_PORT}" >> $DEFAULT_FUNASR_CONFIG_FILE
  710. echo "PARAMS_DOCKER_PORT=${PARAMS_DOCKER_PORT}" >> $DEFAULT_FUNASR_CONFIG_FILE
  711. echo "PARAMS_DECODER_THREAD_NUM=${PARAMS_DECODER_THREAD_NUM}" >> $DEFAULT_FUNASR_CONFIG_FILE
  712. echo "PARAMS_IO_THREAD_NUM=${PARAMS_IO_THREAD_NUM}" >> $DEFAULT_FUNASR_CONFIG_FILE
  713. echo "PARAMS_SSL_FLAG=${PARAMS_SSL_FLAG}" >> $DEFAULT_FUNASR_CONFIG_FILE
  714. echo "PARAMS_FUNASR_DOCKER_ID=${PARAMS_FUNASR_DOCKER_ID}" >> $DEFAULT_FUNASR_CONFIG_FILE
  715. serverConfigGeneration
  716. echo "${daemon_server_config}" > $DEFAULT_FUNASR_SERVER_CONFIG_FILE
  717. }
  718. showAllParams(){
  719. echo -e "${UNDERLINE}${BOLD}[4/6]${PLAIN}"
  720. echo -e " ${YELLOW}Show parameters of FunASR server setting and confirm to run ...${PLAIN}"
  721. echo
  722. only_show_flag=$1
  723. if [ ! -z "$PARAMS_DOCKER_IMAGE" ]; then
  724. echo -e " The current Docker image is : ${GREEN}${PARAMS_DOCKER_IMAGE}${PLAIN}"
  725. fi
  726. if [ ! -z "$PARAMS_FUNASR_LOCAL_WORKSPACE" ]; then
  727. echo -e " The local workspace path is : ${GREEN}${PARAMS_FUNASR_LOCAL_WORKSPACE}${PLAIN}"
  728. fi
  729. if [ ! -z "$PARAMS_DOWNLOAD_MODEL_DIR" ]; then
  730. echo -e " The model will be automatically downloaded in Docker : ${GREEN}${PARAMS_DOWNLOAD_MODEL_DIR}${PLAIN}"
  731. fi
  732. echo
  733. if [ ! -z "$PARAMS_ASR_ID" ]; then
  734. echo -e " The ASR model_id used : ${GREEN}${PARAMS_ASR_ID}${PLAIN}"
  735. fi
  736. if [ ! -z "$PARAMS_LOCAL_ASR_PATH" ]; then
  737. echo -e " The path to the local ASR model directory for the load : ${GREEN}${PARAMS_LOCAL_ASR_PATH}${PLAIN}"
  738. fi
  739. echo -e " The ASR model directory corresponds to the directory in Docker : ${GREEN}${PARAMS_DOCKER_ASR_PATH}${PLAIN}"
  740. if [ ! -z "$PARAMS_VAD_ID" ]; then
  741. echo -e " The VAD model_id used : ${GREEN}${PARAMS_VAD_ID}${PLAIN}"
  742. fi
  743. if [ ! -z "$PARAMS_LOCAL_VAD_PATH" ]; then
  744. echo -e " The path to the local VAD model directory for the load : ${GREEN}${PARAMS_LOCAL_VAD_PATH}${PLAIN}"
  745. fi
  746. echo -e " The VAD model directory corresponds to the directory in Docker : ${GREEN}${PARAMS_DOCKER_VAD_PATH}${PLAIN}"
  747. if [ ! -z "$PARAMS_PUNC_ID" ]; then
  748. echo -e " The PUNC model_id used : ${GREEN}${PARAMS_PUNC_ID}${PLAIN}"
  749. fi
  750. if [ ! -z "$PARAMS_LOCAL_PUNC_PATH" ]; then
  751. echo -e " The path to the local PUNC model directory for the load : ${GREEN}${PARAMS_LOCAL_PUNC_PATH}${PLAIN}"
  752. fi
  753. echo -e " The PUNC model directory corresponds to the directory in Docker: ${GREEN}${PARAMS_DOCKER_PUNC_PATH}${PLAIN}"
  754. if [ ! -z "$PARAMS_LM_ID" ]; then
  755. echo -e " The LM model_id used : ${GREEN}${PARAMS_LM_ID}${PLAIN}"
  756. fi
  757. if [ ! -z "$PARAMS_LOCAL_LM_PATH" ]; then
  758. echo -e " The path to the local LM model directory for the load : ${GREEN}${PARAMS_LOCAL_LM_PATH}${PLAIN}"
  759. fi
  760. echo -e " The LM model directory corresponds to the directory in Docker: ${GREEN}${PARAMS_DOCKER_LM_PATH}${PLAIN}"
  761. echo
  762. echo -e " The path in the docker of the FunASR service executor : ${GREEN}${PARAMS_DOCKER_EXEC_PATH}${PLAIN}"
  763. echo -e " Set the host port used for use by the FunASR service : ${GREEN}${PARAMS_HOST_PORT}${PLAIN}"
  764. echo -e " Set the docker port used by the FunASR service : ${GREEN}${PARAMS_DOCKER_PORT}${PLAIN}"
  765. echo -e " Set the number of threads used for decoding the FunASR service : ${GREEN}${PARAMS_DECODER_THREAD_NUM}${PLAIN}"
  766. echo -e " Set the number of threads used for IO the FunASR service : ${GREEN}${PARAMS_IO_THREAD_NUM}${PLAIN}"
  767. echo
  768. if [ ! -z "$PARAMS_FUNASR_SAMPLES_LOCAL_DIR" ]; then
  769. echo -e " Sample code will be store in local : ${GREEN}${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}${PLAIN}"
  770. fi
  771. if [ ! -z "$PARAMS_SSL_FLAG" ]; then
  772. echo -e " The flag for the use of SSL : ${GREEN}${PARAMS_SSL_FLAG}${PLAIN}"
  773. fi
  774. if [ "$only_show_flag" = "only_show" ] && [ ! -z "$PARAMS_FUNASR_DOCKER_ID" ]; then
  775. echo -e " The docker ID that already exists is : ${GREEN}${PARAMS_FUNASR_DOCKER_ID}${PLAIN}"
  776. fi
  777. echo
  778. if [ "$only_show_flag" = "only_show" ]; then
  779. return 0
  780. fi
  781. while true
  782. do
  783. params_confirm="y"
  784. echo -e " ${YELLOW}Please input [Y/n] to confirm the parameters.${PLAIN}"
  785. echo -e " [y] Verify that these parameters are correct and that the service will run."
  786. echo -e " [n] The parameters set are incorrect, it will be rolled out, please rerun."
  787. echo -e " read confirmation[${CYAN}Y${PLAIN}/n]: \c"
  788. read params_confirm
  789. if [ -z "$params_confirm" ]; then
  790. params_confirm="y"
  791. fi
  792. YES="Y"
  793. yes="y"
  794. NO="N"
  795. no="n"
  796. echo
  797. if [ "$params_confirm" = "$YES" ] || [ "$params_confirm" = "$yes" ]; then
  798. echo -e " ${GREEN}Will run FunASR server later ...${PLAIN}"
  799. break
  800. elif [ "$params_confirm" = "$NO" ] || [ "$params_confirm" = "$no" ]; then
  801. echo -e " ${RED}The parameters set are incorrect, please rerun ...${PLAIN}"
  802. exit 1
  803. else
  804. echo "again ..."
  805. fi
  806. done
  807. saveParams
  808. echo
  809. sleep 1
  810. }
  811. # Install docker
  812. installFunasrDocker(){
  813. echo -e "${UNDERLINE}${BOLD}[5/6]${PLAIN}"
  814. if [ $DOCKERINFOLEN -gt 30 ]; then
  815. echo -e " ${YELLOW}Docker has installed.${PLAIN}"
  816. else
  817. lowercase_osid=$(echo ${OSID} | tr '[A-Z]' '[a-z]')
  818. echo -e " ${YELLOW}Start install docker for ${lowercase_osid} ${PLAIN}"
  819. DOCKER_INSTALL_CMD="curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun"
  820. DOCKER_INSTALL_RUN_CMD=""
  821. case "$lowercase_osid" in
  822. ubuntu)
  823. DOCKER_INSTALL_CMD="curl -fsSL https://test.docker.com -o test-docker.sh"
  824. DOCKER_INSTALL_RUN_CMD="${SUDO_CMD} sh test-docker.sh"
  825. ;;
  826. centos)
  827. DOCKER_INSTALL_CMD="curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun"
  828. ;;
  829. debian)
  830. DOCKER_INSTALL_CMD="curl -fsSL https://get.docker.com -o get-docker.sh"
  831. DOCKER_INSTALL_RUN_CMD="${SUDO_CMD} sh get-docker.sh"
  832. ;;
  833. \"alios\")
  834. DOCKER_INSTALL_CMD="curl -fsSL https://get.docker.com -o get-docker.sh"
  835. DOCKER_INSTALL_RUN_CMD="${SUDO_CMD} sh get-docker.sh"
  836. ;;
  837. \"alinux\")
  838. DOCKER_INSTALL_CMD="${SUDO_CMD} yum -y install dnf"
  839. DOCKER_INSTALL_RUN_CMD="${SUDO_CMD} dnf -y install docker"
  840. ;;
  841. *)
  842. echo -e " ${RED}$lowercase_osid is not supported.${PLAIN}"
  843. ;;
  844. esac
  845. echo -e " Get docker installer: ${GREEN}${DOCKER_INSTALL_CMD}${PLAIN}"
  846. echo -e " Get docker run: ${GREEN}${DOCKER_INSTALL_RUN_CMD}${PLAIN}"
  847. $DOCKER_INSTALL_CMD
  848. if [ ! -z "$DOCKER_INSTALL_RUN_CMD" ]; then
  849. $DOCKER_INSTALL_RUN_CMD
  850. fi
  851. $SUDO_CMD systemctl start docker
  852. DOCKERINFO=$(${SUDO_CMD} docker info | wc -l)
  853. DOCKERINFOLEN=`expr ${DOCKERINFO} + 0`
  854. if [ $DOCKERINFOLEN -gt 30 ]; then
  855. echo -e " ${GREEN}Docker install success, start docker server.${PLAIN}"
  856. $SUDO_CMD systemctl start docker
  857. else
  858. echo -e " ${RED}Docker install failed!${PLAIN}"
  859. exit 1
  860. fi
  861. fi
  862. echo
  863. sleep 1
  864. # Download docker image
  865. echo -e " ${YELLOW}Pull docker image(${PARAMS_DOCKER_IMAGE})...${PLAIN}"
  866. ${SUDO_CMD} docker pull $PARAMS_DOCKER_IMAGE
  867. echo
  868. sleep 1
  869. }
  870. dockerRun(){
  871. echo -e "${UNDERLINE}${BOLD}[6/6]${PLAIN}"
  872. echo -e " ${YELLOW}Construct command and run docker ...${PLAIN}"
  873. start_flag=$1
  874. if [ "$start_flag" = "install" ]; then
  875. run_cmd="${SUDO_CMD} docker run"
  876. port_map=" -p ${PARAMS_HOST_PORT}:${PARAMS_DOCKER_PORT}"
  877. env_params=" --privileged=true"
  878. dir_map_params=" -v ${DEFAULT_FUNASR_CONFIG_DIR}:/workspace/.config -v ${PARAMS_FUNASR_LOCAL_MODELS_DIR}:${PARAMS_DOWNLOAD_MODEL_DIR} -v ${PARAMS_FUNASR_LOCAL_WORKSPACE}:/workspace/resources"
  879. serverConfigGeneration
  880. env_params=" ${env_params} --env DAEMON_SERVER_CONFIG=${daemon_server_config}"
  881. run_cmd="${run_cmd}${port_map}${dir_map_params}${env_params}"
  882. run_cmd="${run_cmd} -it -d ${PARAMS_DOCKER_IMAGE}"
  883. else
  884. # 0: DOCKER is not running
  885. # 60: DOCKER_ID is empty
  886. # 61: DOCKER_IMAGE is empty
  887. # 62: DOCKER is running
  888. checkDockerIdExist $start_flag
  889. result=$?
  890. result=`expr ${result} + 0`
  891. if [ $result -eq 60 ]; then
  892. echo
  893. echo -e " ${RED}Please run (${PLAIN}${GREEN}${SUDO_CMD} bash funasr-runtime-deploy-offline-cpu-zh.sh install${PLAIN}${RED}) to install Docker first.${PLAIN}"
  894. return $result
  895. elif [ $result -eq 61 ]; then
  896. echo
  897. echo -e " ${RED}Please run (${PLAIN}${GREEN}${SUDO_CMD} bash funasr-runtime-deploy-offline-cpu-zh.sh install${PLAIN}${RED}) to install Docker first.${PLAIN}"
  898. return $result
  899. elif [ $result -eq 62 ]; then
  900. echo
  901. echo -e " ${RED}Docker: ${PARAMS_DOCKER_IMAGE} ${PARAMS_FUNASR_DOCKER_ID} has been launched, please run (${PLAIN}${GREEN}${SUDO_CMD} bash funasr-runtime-deploy-offline-cpu-zh.sh stop${PLAIN}${RED}) to stop Docker first.${PLAIN}"
  902. return $result
  903. fi
  904. run_cmd="${SUDO_CMD} docker restart ${PARAMS_FUNASR_DOCKER_ID}"
  905. fi
  906. rm -f ${DEFAULT_FUNASR_PROGRESS_TXT}
  907. rm -f ${DEFAULT_FUNASR_SERVER_LOG}
  908. $run_cmd
  909. echo
  910. echo -e " ${YELLOW}Loading models:${PLAIN}"
  911. getDockerId
  912. saveParams
  913. # # Hide the cursor, start draw progress.
  914. # printf "\e[?25l"
  915. # while true
  916. # do
  917. # serverProgress
  918. # result=$?
  919. # stage=`expr ${result} + 0`
  920. # if [ ${stage} -eq 0 ]; then
  921. # break
  922. # elif [ ${stage} -gt 0 ] && [ ${stage} -lt 6 ]; then
  923. # sleep 0.1
  924. # # clear 3 lines
  925. # printf "\033[3A"
  926. # elif [ ${stage} -eq 6 ]; then
  927. # break
  928. # elif [ ${stage} -eq 98 ]; then
  929. # return 98
  930. # else
  931. # echo -e " ${RED}Starting FunASR server failed.${PLAIN}"
  932. # echo
  933. # # Display the cursor
  934. # printf "\e[?25h"
  935. # return 99
  936. # fi
  937. # done
  938. # # Display the cursor
  939. # printf "\e[?25h"
  940. echo -e " ${GREEN}The service has been started.${PLAIN}"
  941. echo
  942. deploySamples
  943. echo -e " ${BOLD}The sample code is already stored in the ${PLAIN}(${GREEN}${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}${PLAIN}) ."
  944. echo -e " ${BOLD}If you want to see an example of how to use the client, you can run ${PLAIN}${GREEN}${SUDO_CMD} bash funasr-runtime-deploy-offline-cpu-zh.sh client${PLAIN} ."
  945. echo
  946. }
  947. daemon_server_config=""
  948. serverConfigGeneration(){
  949. # params about models
  950. if [ ! -z "$PARAMS_ASR_ID" ]; then
  951. asr_params="\"--model-dir\":\"${PARAMS_ASR_ID}\""
  952. else
  953. if [ ! -z "$PARAMS_LOCAL_ASR_PATH" ]; then
  954. dir_map_params="${dir_map_params} -v ${PARAMS_LOCAL_ASR_PATH}:${PARAMS_DOCKER_ASR_PATH}"
  955. fi
  956. asr_params="\"--model-dir\":\"${PARAMS_DOCKER_ASR_PATH}\""
  957. fi
  958. if [ ! -z "$PARAMS_VAD_ID" ]; then
  959. vad_params="\"--vad-dir\":\"${PARAMS_VAD_ID}\""
  960. else
  961. if [ ! -z "$PARAMS_LOCAL_VAD_PATH" ]; then
  962. dir_map_params="${dir_map_params} -v ${PARAMS_LOCAL_VAD_PATH}:${PARAMS_DOCKER_VAD_PATH}"
  963. fi
  964. vad_params="\"--vad-dir\":\"${PARAMS_DOCKER_VAD_PATH}\""
  965. fi
  966. if [ ! -z "$PARAMS_PUNC_ID" ]; then
  967. punc_params="\"--punc-dir\":\"${PARAMS_PUNC_ID}\""
  968. else
  969. if [ ! -z "$PARAMS_LOCAL_PUNC_PATH" ]; then
  970. dir_map_params="${dir_map_params} -v ${PARAMS_LOCAL_VAD_PATH}:${PARAMS_DOCKER_VAD_PATH}"
  971. fi
  972. punc_params="\"--punc-dir\":\"${PARAMS_DOCKER_PUNC_PATH}\""
  973. fi
  974. if [ ! -z "$PARAMS_LM_ID" ]; then
  975. lm_params="\"--lm-dir\":\"${PARAMS_LM_ID}\""
  976. else
  977. if [ ! -z "$PARAMS_LOCAL_LM_PATH" ]; then
  978. dir_map_params="${dir_map_params} -v ${PARAMS_LOCAL_VAD_PATH}:${PARAMS_DOCKER_VAD_PATH}"
  979. fi
  980. lm_params="\"--lm-dir\":\"${PARAMS_DOCKER_LM_PATH}\""
  981. fi
  982. download_params="\"--download-model-dir\":\"${PARAMS_DOWNLOAD_MODEL_DIR}\""
  983. model_params="${asr_params},${vad_params},${punc_params},${lm_params},${download_params}"
  984. # params about thread_num
  985. decoder_params="\"--decoder-thread-num\":\"${PARAMS_DECODER_THREAD_NUM}\""
  986. io_params="\"--io-thread-num\":\"${PARAMS_IO_THREAD_NUM}\""
  987. thread_params=${decoder_params},${io_params}
  988. # params about port and ssl
  989. port_params="\"--port\":\"${PARAMS_DOCKER_PORT}\""
  990. if [ $PARAMS_SSL_FLAG -eq 0 ]; then
  991. crt_path="\"--certfile\":\"\""
  992. key_path="\"--keyfile\":\"\""
  993. else
  994. crt_path="\"--certfile\":\"/workspace/FunASR/runtime/ssl_key/server.crt\""
  995. key_path="\"--keyfile\":\"/workspace/FunASR/runtime/ssl_key/server.key\""
  996. fi
  997. exec_params="\"exec\":\"${PARAMS_DOCKER_EXEC_PATH}\""
  998. daemon_server_config="{\"server\":[{${exec_params},${model_params},${thread_params},${port_params},${crt_path},${key_path}}]}"
  999. }
  1000. installPythonDependencyForPython(){
  1001. echo -e "${YELLOW}Install Python dependent environments ...${PLAIN}"
  1002. echo -e " Export dependency of Cpp sample."
  1003. pre_cmd="export LD_LIBRARY_PATH=${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}/cpp/libs:\$LD_LIBRARY_PATH"
  1004. $pre_cmd
  1005. echo
  1006. echo -e " Install requirements of Python sample."
  1007. pre_cmd="pip3 install click>=8.0.4"
  1008. $pre_cmd
  1009. echo
  1010. pre_cmd="pip3 install -r ${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}/python/requirements_client.txt"
  1011. echo -e " Run ${BLUE}${pre_cmd}${PLAIN}"
  1012. $pre_cmd
  1013. echo
  1014. lowercase_osid=$(echo ${OSID} | tr '[A-Z]' '[a-z]')
  1015. case "$lowercase_osid" in
  1016. ubuntu)
  1017. pre_cmd="${SUDO_CMD} apt-get install -y ffmpeg"
  1018. ;;
  1019. centos)
  1020. pre_cmd="${SUDO_CMD} yum install -y ffmpeg"
  1021. ;;
  1022. debian)
  1023. pre_cmd="${SUDO_CMD} apt-get install -y ffmpeg"
  1024. ;;
  1025. \"alios\")
  1026. pre_cmd="${SUDO_CMD} yum install -y ffmpeg"
  1027. ;;
  1028. \"alinux\")
  1029. pre_cmd="${SUDO_CMD} yum install -y ffmpeg"
  1030. ;;
  1031. *)
  1032. echo -e " ${RED}$lowercase_osid is not supported.${PLAIN}"
  1033. ;;
  1034. esac
  1035. echo -e " Run ${BLUE}${pre_cmd}${PLAIN}"
  1036. echo
  1037. pre_cmd="pip3 install ffmpeg-python"
  1038. echo -e " Run ${BLUE}${pre_cmd}${PLAIN}"
  1039. $pre_cmd
  1040. echo
  1041. }
  1042. deploySamples(){
  1043. if [ ! -d $PARAMS_FUNASR_SAMPLES_LOCAL_DIR ]; then
  1044. echo -e "${YELLOW}Downloading samples to${PLAIN} ${CYAN}${PARAMS_FUNASR_LOCAL_WORKSPACE}${PLAIN} ${YELLOW}...${PLAIN}"
  1045. download_cmd="curl ${DEFAULT_SAMPLES_URL} -o ${PARAMS_FUNASR_SAMPLES_LOCAL_PATH}"
  1046. untar_cmd="tar -zxf ${PARAMS_FUNASR_SAMPLES_LOCAL_PATH} -C ${PARAMS_FUNASR_LOCAL_WORKSPACE}"
  1047. if [ ! -f "$PARAMS_FUNASR_SAMPLES_LOCAL_PATH" ]; then
  1048. $download_cmd
  1049. fi
  1050. $untar_cmd
  1051. echo
  1052. installPythonDependencyForPython
  1053. echo
  1054. fi
  1055. }
  1056. getDockerId(){
  1057. id=""
  1058. array=($(${SUDO_CMD} docker ps -a | grep ${PARAMS_DOCKER_IMAGE} | awk '{print $1}'))
  1059. len=${#array[@]}
  1060. if [ $len -ge 1 ]; then
  1061. # get the first id
  1062. id=$array
  1063. if [ ! -z "$id" ]; then
  1064. PARAMS_FUNASR_DOCKER_ID=$id
  1065. fi
  1066. fi
  1067. }
  1068. checkDockerImageExist(){
  1069. result=1
  1070. if [ -z "$PARAMS_DOCKER_IMAGE" ]; then
  1071. return 50
  1072. else
  1073. result=$(${SUDO_CMD} docker ps | grep ${PARAMS_DOCKER_IMAGE} | wc -l)
  1074. fi
  1075. result=`expr ${result} + 0`
  1076. echo "checkDockerImageExist result0: " $result
  1077. if [ $result -ne 0 ]; then
  1078. # found docker
  1079. return 51
  1080. else
  1081. return 0
  1082. fi
  1083. }
  1084. checkDockerIdExist(){
  1085. result=0
  1086. if [ -z "$PARAMS_FUNASR_DOCKER_ID" ]; then
  1087. if [ -z "$PARAMS_DOCKER_IMAGE" ]; then
  1088. return 63
  1089. else
  1090. return 60
  1091. fi
  1092. else
  1093. if [ -z "$PARAMS_DOCKER_IMAGE" ]; then
  1094. return 61
  1095. else
  1096. if [ "$1" = "install" ]; then
  1097. result=$(${SUDO_CMD} docker ps -a | grep ${PARAMS_DOCKER_IMAGE} | grep ${PARAMS_FUNASR_DOCKER_ID} | wc -l)
  1098. else
  1099. result=$(${SUDO_CMD} docker ps | grep ${PARAMS_DOCKER_IMAGE} | grep ${PARAMS_FUNASR_DOCKER_ID} | wc -l)
  1100. fi
  1101. fi
  1102. fi
  1103. result=`expr ${result} + 0`
  1104. if [ $result -eq 1 ]; then
  1105. # found docker
  1106. return 62
  1107. else
  1108. return 0
  1109. fi
  1110. }
  1111. dockerStop(){
  1112. if [ -z "$PARAMS_FUNASR_DOCKER_ID" ]; then
  1113. echo -e " ${RED}DOCKER_ID is empty, cannot stop docker.${PLAIN}"
  1114. else
  1115. echo -e " ${YELLOW}Stop docker(${PLAIN}${GREEN}${PARAMS_DOCKER_IMAGE} ${PARAMS_FUNASR_DOCKER_ID}${PLAIN}${YELLOW}) server ...${PLAIN}"
  1116. ${SUDO_CMD} docker stop ${PARAMS_FUNASR_DOCKER_ID}
  1117. fi
  1118. echo
  1119. }
  1120. dockerRemove(){
  1121. if [ -z "$PARAMS_FUNASR_DOCKER_ID" ]; then
  1122. echo -e " ${RED}DOCKER_ID is empty, cannot remove docker.${PLAIN}"
  1123. else
  1124. echo -e " ${YELLOW}Remove docker(${PLAIN}${GREEN}${PARAMS_DOCKER_IMAGE} ${PARAMS_FUNASR_DOCKER_ID}${PLAIN}${YELLOW}) ...${PLAIN}"
  1125. ${SUDO_CMD} docker rm ${PARAMS_FUNASR_DOCKER_ID}
  1126. fi
  1127. echo
  1128. }
  1129. modelChange(){
  1130. model_type=$1
  1131. model_id=$2
  1132. local_flag=0
  1133. relativePathToFullPath $model_id
  1134. if [ -d "$full_path" ]; then
  1135. local_flag=1
  1136. model_id=$full_path
  1137. else
  1138. local_flag=0
  1139. fi
  1140. full_path=""
  1141. result=$(echo ${model_type} | grep "\-\-asr_model")
  1142. if [ "$result" != "" ]; then
  1143. if [ $local_flag -eq 0 ]; then
  1144. PARAMS_ASR_ID=$model_id
  1145. PARAMS_DOCKER_ASR_PATH=${PARAMS_DOWNLOAD_MODEL_DIR}/${PARAMS_ASR_ID}
  1146. PARAMS_DOCKER_ASR_DIR=$(dirname "${PARAMS_DOCKER_ASR_PATH}")
  1147. PARAMS_LOCAL_ASR_PATH=${PARAMS_FUNASR_LOCAL_MODELS_DIR}/${PARAMS_ASR_ID}
  1148. PARAMS_LOCAL_ASR_DIR=$(dirname "${PARAMS_LOCAL_ASR_PATH}")
  1149. else
  1150. PARAMS_ASR_ID=""
  1151. PARAMS_LOCAL_ASR_PATH=$model_id
  1152. if [ ! -d "$PARAMS_LOCAL_ASR_PATH" ]; then
  1153. echo -e " ${RED}${PARAMS_LOCAL_ASR_PATH} does not exist, please set again.${PLAIN}"
  1154. else
  1155. model_name=$(basename "${PARAMS_LOCAL_ASR_PATH}")
  1156. PARAMS_LOCAL_ASR_DIR=$(dirname "${PARAMS_LOCAL_ASR_PATH}")
  1157. PARAMS_DOCKER_ASR_DIR=$PARAMS_DOWNLOAD_MODEL_DIR
  1158. PARAMS_DOCKER_ASR_PATH=${PARAMS_DOCKER_ASR_DIR}/${model_name}
  1159. fi
  1160. fi
  1161. fi
  1162. result=$(echo ${model_type} | grep "\-\-vad_model")
  1163. if [ "$result" != "" ]; then
  1164. if [ $local_flag -eq 0 ]; then
  1165. PARAMS_VAD_ID=$model_id
  1166. PARAMS_DOCKER_VAD_PATH=${PARAMS_DOWNLOAD_MODEL_DIR}/${PARAMS_VAD_ID}
  1167. PARAMS_DOCKER_VAD_DIR=$(dirname "${PARAMS_DOCKER_VAD_PATH}")
  1168. PARAMS_LOCAL_VAD_PATH=${PARAMS_FUNASR_LOCAL_MODELS_DIR}/${PARAMS_VAD_ID}
  1169. PARAMS_LOCAL_VAD_DIR=$(dirname "${PARAMS_LOCAL_VAD_PATH}")
  1170. else
  1171. PARAMS_VAD_ID=""
  1172. PARAMS_LOCAL_VAD_PATH=$model_id
  1173. if [ ! -d "$PARAMS_LOCAL_VAD_PATH" ]; then
  1174. echo -e " ${RED}${PARAMS_LOCAL_VAD_PATH} does not exist, please set again.${PLAIN}"
  1175. else
  1176. model_name=$(basename "${PARAMS_LOCAL_VAD_PATH}")
  1177. PARAMS_LOCAL_VAD_DIR=$(dirname "${PARAMS_LOCAL_VAD_PATH}")
  1178. PARAMS_DOCKER_VAD_DIR=$PARAMS_DOWNLOAD_MODEL_DIR
  1179. PARAMS_DOCKER_VAD_PATH=${PARAMS_DOCKER_VAD_DIR}/${model_name}
  1180. fi
  1181. fi
  1182. fi
  1183. result=$(echo ${model_type} | grep "\-\-punc_model")
  1184. if [ "$result" != "" ]; then
  1185. if [ $local_flag -eq 0 ]; then
  1186. PARAMS_PUNC_ID=$model_id
  1187. PARAMS_DOCKER_PUNC_PATH=${PARAMS_DOWNLOAD_MODEL_DIR}/${PARAMS_PUNC_ID}
  1188. PARAMS_DOCKER_PUNC_DIR=$(dirname "${PARAMS_DOCKER_PUNC_PATH}")
  1189. PARAMS_LOCAL_PUNC_PATH=${PARAMS_FUNASR_LOCAL_MODELS_DIR}/${PARAMS_PUNC_ID}
  1190. PARAMS_LOCAL_PUNC_DIR=$(dirname "${PARAMS_LOCAL_PUNC_PATH}")
  1191. else
  1192. model_name=$(basename "${PARAMS_LOCAL_PUNC_PATH}")
  1193. PARAMS_LOCAL_PUNC_DIR=$(dirname "${PARAMS_LOCAL_PUNC_PATH}")
  1194. PARAMS_DOCKER_PUNC_DIR=$PARAMS_DOWNLOAD_MODEL_DIR
  1195. PARAMS_DOCKER_PUNC_PATH=${PARAMS_DOCKER_PUNC_DIR}/${model_name}
  1196. fi
  1197. fi
  1198. result=$(echo ${model_type} | grep "\-\-lm_model")
  1199. if [ "$result" != "" ]; then
  1200. if [ $local_flag -eq 0 ]; then
  1201. PARAMS_LM_ID=$model_id
  1202. PARAMS_DOCKER_LM_PATH=${PARAMS_DOWNLOAD_MODEL_DIR}/${PARAMS_LM_ID}
  1203. PARAMS_DOCKER_LM_DIR=$(dirname "${PARAMS_DOCKER_LM_PATH}")
  1204. PARAMS_LOCAL_LM_PATH=${PARAMS_FUNASR_LOCAL_MODELS_DIR}/${PARAMS_LM_ID}
  1205. PARAMS_LOCAL_LM_DIR=$(dirname "${PARAMS_LOCAL_LM_PATH}")
  1206. else
  1207. model_name=$(basename "${PARAMS_LOCAL_LM_PATH}")
  1208. PARAMS_LOCAL_LM_DIR=$(dirname "${PARAMS_LOCAL_LM_PATH}")
  1209. PARAMS_DOCKER_LM_DIR=$PARAMS_DOWNLOAD_MODEL_DIR
  1210. PARAMS_DOCKER_LM_PATH=${PARAMS_DOCKER_LM_DIR}/${model_name}
  1211. fi
  1212. fi
  1213. }
  1214. threadNumChange() {
  1215. type=$1
  1216. val=$2
  1217. if [ -z "$val"]; then
  1218. num=`expr ${val} + 0`
  1219. if [ $num -ge 1 ] && [ $num -le 1024 ]; then
  1220. result=$(echo ${type} | grep "\-\-decode_thread_num")
  1221. if [ "$result" != "" ]; then
  1222. PARAMS_DECODER_THREAD_NUM=$num
  1223. fi
  1224. result=$(echo ${type} | grep "\-\-io_thread_num")
  1225. if [ "$result" != "" ]; then
  1226. PARAMS_IO_THREAD_NUM=$num
  1227. fi
  1228. fi
  1229. fi
  1230. }
  1231. portChange() {
  1232. type=$1
  1233. val=$2
  1234. if [ ! -z "$val" ]; then
  1235. port=`expr ${val} + 0`
  1236. if [ $port -ge 1 ] && [ $port -le 65536 ]; then
  1237. result=$(echo ${type} | grep "host_port")
  1238. if [ "$result" != "" ]; then
  1239. PARAMS_HOST_PORT=$port
  1240. fi
  1241. result=$(echo ${type} | grep "docker_port")
  1242. if [ "$result" != "" ]; then
  1243. PARAMS_DOCKER_PORT=$port
  1244. fi
  1245. fi
  1246. fi
  1247. }
  1248. sampleClientRun(){
  1249. echo -e "${YELLOW}Will download sample tools for the client to show how speech recognition works.${PLAIN}"
  1250. download_cmd="curl ${DEFAULT_SAMPLES_URL} -o ${PARAMS_FUNASR_SAMPLES_LOCAL_PATH}"
  1251. untar_cmd="tar -zxf ${PARAMS_FUNASR_SAMPLES_LOCAL_PATH} -C ${PARAMS_FUNASR_LOCAL_WORKSPACE}"
  1252. if [ ! -f "$PARAMS_FUNASR_SAMPLES_LOCAL_PATH" ]; then
  1253. $download_cmd
  1254. fi
  1255. if [ -f "$PARAMS_FUNASR_SAMPLES_LOCAL_PATH" ]; then
  1256. $untar_cmd
  1257. fi
  1258. if [ -d "$PARAMS_FUNASR_SAMPLES_LOCAL_DIR" ]; then
  1259. echo -e " Please select the client you want to run."
  1260. menuSelection ${SAMPLE_CLIENTS[*]}
  1261. result=$?
  1262. index=`expr ${result} - 1`
  1263. lang=${SAMPLE_CLIENTS[${index}]}
  1264. echo
  1265. server_ip="127.0.0.1"
  1266. echo -e " Please enter the IP of server, default(${CYAN}${server_ip}${PLAIN}): \c"
  1267. read server_ip
  1268. if [ -z "$server_ip" ]; then
  1269. server_ip="127.0.0.1"
  1270. fi
  1271. host_port=`sed '/^PARAMS_HOST_PORT=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  1272. if [ -z "$host_port" ]; then
  1273. host_port="10095"
  1274. fi
  1275. echo -e " Please enter the port of server, default(${CYAN}${host_port}${PLAIN}): \c"
  1276. read host_port
  1277. if [ -z "$host_port" ]; then
  1278. host_port=`sed '/^PARAMS_HOST_PORT=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
  1279. if [ -z "$host_port" ]; then
  1280. host_port="10095"
  1281. fi
  1282. fi
  1283. wav_path="${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}/audio/asr_example.wav"
  1284. echo -e " Please enter the audio path, default(${CYAN}${wav_path}${PLAIN}): \c"
  1285. read WAV_PATH
  1286. if [ -z "$wav_path" ]; then
  1287. wav_path="${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}/audio/asr_example.wav"
  1288. fi
  1289. echo
  1290. pre_cmd=”“
  1291. case "$lang" in
  1292. Linux_Cpp)
  1293. client_exec="${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}/cpp/funasr-wss-client"
  1294. run_cmd="${client_exec} --server-ip ${server_ip} --port ${host_port} --wav-path ${wav_path}"
  1295. ;;
  1296. Python)
  1297. client_exec="${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}/python/funasr_wss_client.py"
  1298. run_cmd="python3 ${client_exec} --host ${server_ip} --port ${host_port} --mode offline --audio_in ${wav_path} --send_without_sleep --output_dir ${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}/python"
  1299. pre_cmd="pip3 install click>=8.0.4"
  1300. echo -e " Run ${BLUE}${pre_cmd}${PLAIN}"
  1301. $pre_cmd
  1302. echo
  1303. pre_cmd="pip3 install -r ${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}/python/requirements_client.txt"
  1304. echo -e " Run ${BLUE}${pre_cmd}${PLAIN}"
  1305. $pre_cmd
  1306. echo
  1307. ;;
  1308. *)
  1309. echo "${lang} is not supported."
  1310. ;;
  1311. esac
  1312. echo -e " Run ${BLUE}${run_cmd}${PLAIN}"
  1313. $run_cmd
  1314. echo
  1315. echo -e " If failed, you can try (${GREEN}${run_cmd}${PLAIN}) in your Shell."
  1316. echo
  1317. fi
  1318. }
  1319. paramsConfigure(){
  1320. initConfiguration
  1321. initParameters
  1322. selectDockerImages
  1323. selectModels
  1324. result=$?
  1325. result=`expr ${result} + 0`
  1326. if [ $result -ne 0 ]; then
  1327. return $result
  1328. fi
  1329. setupHostPort
  1330. complementParameters
  1331. return 0
  1332. }
  1333. # Display Help info
  1334. displayHelp(){
  1335. echo -e "${UNDERLINE}Usage${PLAIN}:"
  1336. echo -e " $0 [OPTIONAL FLAGS]"
  1337. echo
  1338. echo -e "funasr-runtime-deploy-offline-cpu-zh.sh - a Bash script to install&run FunASR docker."
  1339. echo
  1340. echo -e "${UNDERLINE}Options${PLAIN}:"
  1341. echo -e " ${BOLD}-i, install, --install${PLAIN} Install and run FunASR docker."
  1342. echo -e " install [--workspace] <workspace in local>"
  1343. echo -e " install [--ssl] <0: close SSL; 1: open SSL, default:1>"
  1344. echo -e " ${BOLD}-s, start , --start${PLAIN} Run FunASR docker with configuration that has already been set."
  1345. echo -e " ${BOLD}-p, stop , --stop${PLAIN} Stop FunASR docker."
  1346. echo -e " ${BOLD}-m, remove , --remove${PLAIN} Remove FunASR docker installed."
  1347. echo -e " ${BOLD}-r, restart, --restart${PLAIN} Restart FunASR docker."
  1348. echo -e " ${BOLD}-u, update , --update${PLAIN} Update parameters that has already been set."
  1349. echo -e " update [--workspace] <workspace in local>"
  1350. echo -e " update [--asr_model | --vad_model | --punc_model | --lm_model] <model_id or local model path>"
  1351. echo -e " update [--host_port | --docker_port] <port number>"
  1352. echo -e " update [--decode_thread_num | io_thread_num] <the number of threads>"
  1353. echo -e " update [--ssl] <0: close SSL; 1: open SSL, default:1>"
  1354. echo -e " ${BOLD}-c, client , --client${PLAIN} Get a client example to show how to initiate speech recognition."
  1355. echo -e " ${BOLD}-o, show , --show${PLAIN} Displays all parameters that have been set."
  1356. echo -e " ${BOLD}-v, version, --version${PLAIN} Display current script version."
  1357. echo -e " ${BOLD}-h, help , --help${PLAIN} Display this help."
  1358. echo
  1359. echo -e " Version : ${scriptVersion} "
  1360. echo -e " Modify Date: ${scriptDate}"
  1361. }
  1362. parseInput(){
  1363. local menu
  1364. menu=($(echo "$@"))
  1365. len=${#menu[@]}
  1366. stage=""
  1367. if [ $len -ge 2 ]; then
  1368. for val in ${menu[@]}
  1369. do
  1370. result=$(echo $val | grep "\-\-")
  1371. if [ "$result" != "" ]; then
  1372. stage=$result
  1373. else
  1374. if [ "$stage" = "--workspace" ]; then
  1375. relativePathToFullPath $val
  1376. PARAMS_FUNASR_LOCAL_WORKSPACE=$full_path
  1377. full_path=""
  1378. if [ ! -z "$PARAMS_FUNASR_LOCAL_WORKSPACE" ]; then
  1379. mkdir -p $PARAMS_FUNASR_LOCAL_WORKSPACE
  1380. fi
  1381. elif [ "$stage" = "--ssl" ]; then
  1382. PARAMS_SSL_FLAG=`expr ${val} + 0`
  1383. fi
  1384. fi
  1385. done
  1386. fi
  1387. }
  1388. # OS
  1389. OSID=$(grep ^ID= /etc/os-release | cut -d= -f2)
  1390. OSVER=$(lsb_release -cs)
  1391. OSNUM=$(grep -oE "[0-9.]+" /etc/issue)
  1392. CPUNUM=$(cat /proc/cpuinfo | grep "processor"|wc -l)
  1393. DOCKERINFO=$(${SUDO_CMD} docker info | wc -l)
  1394. DOCKERINFOLEN=`expr ${DOCKERINFO} + 0`
  1395. # PARAMS
  1396. # The workspace for FunASR in local
  1397. PARAMS_FUNASR_LOCAL_WORKSPACE=$DEFAULT_FUNASR_LOCAL_WORKSPACE
  1398. # The dir stored sample code in local
  1399. PARAMS_FUNASR_SAMPLES_LOCAL_DIR=${PARAMS_FUNASR_LOCAL_WORKSPACE}/${DEFAULT_SAMPLES_DIR}
  1400. # The path of sample code in local
  1401. PARAMS_FUNASR_SAMPLES_LOCAL_PATH=${PARAMS_FUNASR_LOCAL_WORKSPACE}/${DEFAULT_SAMPLES_NAME}.tar.gz
  1402. # The dir stored models in local
  1403. PARAMS_FUNASR_LOCAL_MODELS_DIR="${PARAMS_FUNASR_LOCAL_WORKSPACE}/models"
  1404. # The id of started docker
  1405. PARAMS_FUNASR_DOCKER_ID=""
  1406. # The server excutor in local
  1407. PARAMS_DOCKER_EXEC_PATH=$DEFAULT_DOCKER_EXEC_PATH
  1408. # The dir stored server excutor in docker
  1409. PARAMS_DOCKER_EXEC_DIR=$DEFAULT_DOCKER_EXEC_DIR
  1410. # The dir for downloading model in docker
  1411. PARAMS_DOWNLOAD_MODEL_DIR=$DEFAULT_FUNASR_WORKSPACE_DIR
  1412. # The Docker image name
  1413. PARAMS_DOCKER_IMAGE=""
  1414. # The dir stored punc model in local
  1415. PARAMS_LOCAL_PUNC_DIR=""
  1416. # The path of punc model in local
  1417. PARAMS_LOCAL_PUNC_PATH=""
  1418. # The dir stored punc model in docker
  1419. PARAMS_DOCKER_PUNC_DIR=""
  1420. # The path of punc model in docker
  1421. PARAMS_DOCKER_PUNC_PATH=""
  1422. # The punc model ID in ModelScope
  1423. PARAMS_PUNC_ID="damo/punc_ct-transformer_zh-cn-common-vocab272727-onnx"
  1424. # The dir stored lm model in local
  1425. PARAMS_LOCAL_LM_DIR=""
  1426. # The path of lm model in local
  1427. PARAMS_LOCAL_LM_PATH=""
  1428. # The dir stored lm model in docker
  1429. PARAMS_DOCKER_LM_DIR=""
  1430. # The path of lm model in docker
  1431. PARAMS_DOCKER_LM_PATH=""
  1432. # The lm model ID in ModelScope
  1433. PARAMS_LM_ID="damo/speech_ngram_lm_zh-cn-ai-wesp-fst"
  1434. # The dir stored vad model in local
  1435. PARAMS_LOCAL_VAD_DIR=""
  1436. # The path of vad model in local
  1437. PARAMS_LOCAL_VAD_PATH=""
  1438. # The dir stored vad model in docker
  1439. PARAMS_DOCKER_VAD_DIR=""
  1440. # The path of vad model in docker
  1441. PARAMS_DOCKER_VAD_PATH=""
  1442. # The vad model ID in ModelScope
  1443. PARAMS_VAD_ID="damo/speech_fsmn_vad_zh-cn-16k-common-onnx"
  1444. # The dir stored asr model in local
  1445. PARAMS_LOCAL_ASR_DIR=""
  1446. # The path of asr model in local
  1447. PARAMS_LOCAL_ASR_PATH=""
  1448. # The dir stored asr model in docker
  1449. PARAMS_DOCKER_ASR_DIR=""
  1450. # The path of asr model in docker
  1451. PARAMS_DOCKER_ASR_PATH=""
  1452. # The asr model ID in ModelScope
  1453. PARAMS_ASR_ID="damo/speech_paraformer-large_asr_nat-zh-cn-16k-common-vocab8404-onnx"
  1454. PARAMS_HOST_PORT="10095"
  1455. PARAMS_DOCKER_PORT="10095"
  1456. PARAMS_DECODER_THREAD_NUM="32"
  1457. PARAMS_IO_THREAD_NUM="8"
  1458. PARAMS_SSL_FLAG=1
  1459. echo -e "#############################################################"
  1460. echo -e "# ${RED}OS${PLAIN}: ${OSID} ${OSNUM} ${OSVER}"
  1461. echo -e "# ${RED}Kernel${PLAIN}: $(uname -m) Linux $(uname -r)"
  1462. echo -e "# ${RED}CPU${PLAIN}: $(grep 'model name' /proc/cpuinfo | uniq | awk -F : '{print $2}' | sed 's/^[ \t]*//g' | sed 's/ \+/ /g') "
  1463. echo -e "# ${RED}CPU NUM${PLAIN}: ${CPUNUM}"
  1464. echo -e "# ${RED}RAM${PLAIN}: $(cat /proc/meminfo | grep 'MemTotal' | awk -F : '{print $2}' | sed 's/^[ \t]*//g') "
  1465. echo -e "#"
  1466. echo -e "# ${RED}Version${PLAIN}: ${scriptVersion} "
  1467. echo -e "# ${RED}Modify Date${PLAIN}: ${scriptDate}"
  1468. echo -e "#############################################################"
  1469. echo
  1470. # Initialization step
  1471. case "$1" in
  1472. install|-i|--install)
  1473. rootNess
  1474. paramsFromDefault
  1475. parseInput $@
  1476. paramsConfigure
  1477. result=$?
  1478. result=`expr ${result} + 0`
  1479. if [ $result -eq 0 ]; then
  1480. showAllParams "install"
  1481. installFunasrDocker
  1482. dockerRun "install"
  1483. result=$?
  1484. try_count=1
  1485. while true
  1486. do
  1487. stage=`expr ${result} + 0`
  1488. if [ $try_count -ge 10 ]; then
  1489. break
  1490. else
  1491. # 98: cannot find progress from Docker
  1492. if [ $stage -eq 98 ]; then
  1493. dockerStop
  1494. dockerRun "start"
  1495. result=$?
  1496. let try_count=try_count+1
  1497. else
  1498. break
  1499. fi
  1500. fi
  1501. done
  1502. fi
  1503. ;;
  1504. start|-s|--start)
  1505. rootNess
  1506. paramsFromDefault
  1507. showAllParams "only_show"
  1508. dockerRun "start"
  1509. result=$?
  1510. try_count=1
  1511. while true
  1512. do
  1513. stage=`expr ${result} + 0`
  1514. if [ $try_count -ge 10 ]; then
  1515. break
  1516. else
  1517. # 98: cannot find progress from Docker
  1518. if [ $stage -eq 98 ]; then
  1519. dockerStop
  1520. dockerRun "start"
  1521. result=$?
  1522. let try_count=try_count+1
  1523. else
  1524. break
  1525. fi
  1526. fi
  1527. done
  1528. ;;
  1529. restart|-r|--restart)
  1530. rootNess
  1531. paramsFromDefault
  1532. showAllParams "only_show"
  1533. dockerStop
  1534. dockerRun "start"
  1535. result=$?
  1536. try_count=1
  1537. while true
  1538. do
  1539. stage=`expr ${result} + 0`
  1540. if [ $try_count -ge 10 ]; then
  1541. break
  1542. else
  1543. # 98: cannot find progress from Docker
  1544. if [ $stage -eq 98 ]; then
  1545. dockerStop
  1546. dockerRun "start"
  1547. result=$?
  1548. let try_count=try_count+1
  1549. else
  1550. break
  1551. fi
  1552. fi
  1553. done
  1554. ;;
  1555. stop|-p|--stop)
  1556. rootNess
  1557. paramsFromDefault
  1558. dockerStop
  1559. ;;
  1560. remove|-m|--remove)
  1561. rootNess
  1562. paramsFromDefault
  1563. dockerStop
  1564. dockerRemove
  1565. rm -f ${DEFAULT_FUNASR_CONFIG_FILE}
  1566. rm -f ${DEFAULT_FUNASR_SERVER_CONFIG_FILE}
  1567. ;;
  1568. update|-u|--update)
  1569. rootNess
  1570. paramsFromDefault
  1571. if [ $# -eq 3 ]; then
  1572. type=$2
  1573. val=$3
  1574. if [ "$type" = "--asr_model" ] || [ "$type" = "--vad_model" ] || [ "$type" = "--punc_model" ] || [ "$type" = "--lm_model" ]; then
  1575. modelChange $type $val
  1576. elif [ "$type" = "--decode_thread_num" ] || [ "$type" = "--io_thread_num" ]; then
  1577. threadNumChange $type $val
  1578. elif [ "$type" = "--host_port" ] || [ "$type" = "--docker_port" ]; then
  1579. portChange $type $val
  1580. elif [ "$type" = "--workspace" ]; then
  1581. relativePathToFullPath $val
  1582. PARAMS_FUNASR_LOCAL_WORKSPACE=$full_path
  1583. if [ ! -z "$PARAMS_FUNASR_LOCAL_WORKSPACE" ]; then
  1584. mkdir -p $PARAMS_FUNASR_LOCAL_WORKSPACE
  1585. fi
  1586. elif [ "$type" = "--ssl" ]; then
  1587. switch=`expr ${val} + 0`
  1588. if [ $switch -eq 0 ]; then
  1589. PARAMS_SSL_FLAG=0
  1590. else
  1591. PARAMS_SSL_FLAG=1
  1592. fi
  1593. else
  1594. displayHelp
  1595. fi
  1596. else
  1597. displayHelp
  1598. fi
  1599. initParameters
  1600. complementParameters
  1601. showAllParams "install"
  1602. dockerStop
  1603. dockerRun "start"
  1604. result=$?
  1605. try_count=1
  1606. while true
  1607. do
  1608. stage=`expr ${result} + 0`
  1609. if [ $try_count -ge 10 ]; then
  1610. break
  1611. else
  1612. # 98: cannot find progress from Docker
  1613. # 60: DOCKER_ID is empty
  1614. if [ $stage -eq 98 ] || [ $stage -eq 60 ]; then
  1615. dockerStop
  1616. dockerRun "start"
  1617. result=$?
  1618. let try_count=try_count+1
  1619. else
  1620. break
  1621. fi
  1622. fi
  1623. done
  1624. ;;
  1625. client|-c|--client)
  1626. rootNess
  1627. paramsFromDefault
  1628. parseInput $@
  1629. sampleClientRun
  1630. ;;
  1631. show|-o|--show)
  1632. rootNess
  1633. paramsFromDefault
  1634. showAllParams "only_show"
  1635. ;;
  1636. *)
  1637. displayHelp
  1638. exit 0
  1639. ;;
  1640. esac