hnluo
2023-09-21 bf4b3ef9cb95acaa2b92b98f236c4f3228cdbc2d
funasr/runtime/deploy_tools/funasr-runtime-deploy-online-cpu-zh.sh
@@ -1,7 +1,7 @@
#!/usr/bin/env bash
scriptVersion="0.0.6"
scriptDate="20230705"
scriptVersion="0.0.2"
scriptDate="20230914"
# Set color
@@ -26,9 +26,9 @@
SUDO_CMD="sudo"
DEFAULT_DOCKER_OFFLINE_CPU_ZH_LISTS_OSS="https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/docker_lists/docker_online_cpu_zh_lists"
DEFAULT_DOCKER_OFFLINE_CPU_ZH_LISTS_GIT="https://raw.githubusercontent.com/alibaba-damo-academy/FunASR/main/funasr/runtime/docs/docker_online_cpu_zh_lists"
DEFAULT_DOCKER_IMAGE_LISTS=$DEFAULT_DOCKER_OFFLINE_CPU_ZH_LISTS_OSS
DEFAULT_DOCKER_ONLINE_CPU_ZH_LISTS_OSS="https://isv-data.oss-cn-hangzhou.aliyuncs.com/ics/MaaS/ASR/docker_lists/docker_online_cpu_zh_lists"
DEFAULT_DOCKER_ONLINE_CPU_ZH_LISTS_GIT="https://raw.githubusercontent.com/alibaba-damo-academy/FunASR/main/funasr/runtime/docs/docker_online_cpu_zh_lists"
DEFAULT_DOCKER_IMAGE_LISTS=$DEFAULT_DOCKER_ONLINE_CPU_ZH_LISTS_OSS
DEFAULT_FUNASR_DOCKER_URL="registry.cn-hangzhou.aliyuncs.com/funasr_repo/funasr"
DEFAULT_FUNASR_RUNTIME_RESOURCES="funasr-runtime-resources"
DEFAULT_FUNASR_LOCAL_WORKSPACE=${CUR_DIR}/${DEFAULT_FUNASR_RUNTIME_RESOURCES}
@@ -41,7 +41,7 @@
DEFAULT_FUNASR_WORKSPACE_DIR="/workspace/models"
DEFAULT_DOCKER_PORT="10095"
DEFAULT_PROGRESS_FILENAME="progress.txt"
DEFAULT_SERVER_EXEC_NAME="funasr-wss-server"
DEFAULT_SERVER_EXEC_NAME="funasr-wss-server-2pass"
DEFAULT_DOCKER_EXEC_DIR="/workspace/FunASR/funasr/runtime/websocket/build/bin"
DEFAULT_DOCKER_EXEC_PATH=${DEFAULT_DOCKER_EXEC_DIR}/${DEFAULT_SERVER_EXEC_NAME}
DEFAULT_SAMPLES_NAME="funasr_samples"
@@ -53,6 +53,9 @@
"Linux_Cpp" \
)
DOCKER_IMAGES=()
ASR_MODELS=()
VAD_MODELS=()
PUNC_MODELS=()
# Handles the download progress bar
asr_percent_int=0
@@ -320,7 +323,7 @@
                $DEFAULT_FUNASR_CONFIG_DIR=$DEFAULT_FUNASR_CONFIG_DIR_BAK
            fi
        fi
        DEFAULT_FUNASR_CONFIG_DIR=${DEFAULT_FUNASR_CONFIG_DIR}/.funasr
        DEFAULT_FUNASR_CONFIG_DIR=${DEFAULT_FUNASR_CONFIG_DIR}/.funasr_online
    fi
    if [ ! -z "$DEFAULT_FUNASR_CONFIG_DIR" ]; then
@@ -387,38 +390,35 @@
            echo -e "    ${RED}Unable to get docker image list due to network issues, try again.${PLAIN}"
            # switch sources of docker image lists
            if [ "$list_url" = "$DEFAULT_DOCKER_OFFLINE_CPU_ZH_LISTS_OSS" ]; then
                DEFAULT_DOCKER_IMAGE_LISTS=$DEFAULT_DOCKER_OFFLINE_CPU_ZH_LISTS_GIT
            if [ "$list_url" = "$DEFAULT_DOCKER_ONLINE_CPU_ZH_LISTS_OSS" ]; then
                DEFAULT_DOCKER_IMAGE_LISTS=$DEFAULT_DOCKER_ONLINE_CPU_ZH_LISTS_GIT
            else
                DEFAULT_DOCKER_IMAGE_LISTS=$DEFAULT_DOCKER_OFFLINE_CPU_ZH_LISTS_OSS
                DEFAULT_DOCKER_IMAGE_LISTS=$DEFAULT_DOCKER_ONLINE_CPU_ZH_LISTS_OSS
            fi
        fi
    done
    array=($(echo "$content"))
    len=${#array[@]}
    stage=0
    docker_flag="DOCKER:"
    judge_flag=":"
    for i in ${array[@]}
    do
        findTypeOfDockerInfo $i
        if [ "$docker_info_cur_key" = "DOCKER:" ]; then
            if [ ! -z "$docker_info_cur_val" ]; then
                docker_name=${DEFAULT_FUNASR_DOCKER_URL}:${docker_info_cur_val}
                DOCKER_IMAGES[${#DOCKER_IMAGES[*]}]=$docker_name
                DOCKER_IMAGES[${#DOCKER_IMAGES[*]}]=$docker_name
            fi
        elif [ "$docker_info_cur_key" = "DEFAULT_ASR_MODEL:" ]; then
            if [ ! -z "$docker_info_cur_val" ]; then
                PARAMS_ASR_ID=$docker_info_cur_val
                ASR_MODELS[${#ASR_MODELS[*]}]=$docker_info_cur_val
            fi
        elif [ "$docker_info_cur_key" = "DEFAULT_VAD_MODEL:" ]; then
            if [ ! -z "$docker_info_cur_val" ]; then
                PARAMS_VAD_ID=$docker_info_cur_val
                VAD_MODELS[${#VAD_MODELS[*]}]=$docker_info_cur_val
            fi
        elif [ "$docker_info_cur_key" = "DEFAULT_PUNC_MODEL:" ]; then
            if [ ! -z "$docker_info_cur_val" ]; then
                PARAMS_PUNC_ID=$docker_info_cur_val
                PUNC_MODELS[${#PUNC_MODELS[*]}]=$docker_info_cur_val
            fi
        fi
    done
@@ -427,7 +427,7 @@
# Make sure root user.
rootNess(){
    echo -e "${UNDERLINE}${BOLD}[0/5]${PLAIN}"
    echo -e "${UNDERLINE}${BOLD}[0/6]${PLAIN}"
    echo -e "  ${YELLOW}Please check root access.${PLAIN}"
    echo -e "    ${WARNING} MUST RUN AS ${RED}ROOT${PLAIN} USER!"
@@ -446,7 +446,7 @@
# Get a list of docker images and select them.
selectDockerImages(){
    echo -e "${UNDERLINE}${BOLD}[1/5]${PLAIN}"
    echo -e "${UNDERLINE}${BOLD}[1/6]${PLAIN}"
    echo -e "  ${YELLOW}Getting the list of docker images, please wait a few seconds.${PLAIN}"
    readDockerInfoFromUrl
    echo
@@ -476,22 +476,67 @@
            result=0
        elif [ $result -eq 61 ]; then
            echo
            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}"
            echo -e "  ${RED}Please run (${PLAIN}${GREEN}${SUDO_CMD} bash funasr-runtime-deploy-online-cpu-zh.sh install${PLAIN}${RED}) to install Docker first.${PLAIN}"
        elif [ $result -eq 62 ]; then
            echo
            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}"
            echo -e "  ${RED}Docker: ${PARAMS_DOCKER_IMAGE} ${PARAMS_FUNASR_DOCKER_ID} has been launched, please run (${PLAIN}${GREEN}${SUDO_CMD} bash funasr-runtime-deploy-online-cpu-zh.sh remove${PLAIN}${RED}) to remove Docker first ant then install.${PLAIN}"
        elif [ $result -eq 63 ]; then
            result=0
        fi
    fi
    echo
    return $result
}
# Get a list of models and select them.
selectModels(){
    echo -e "${UNDERLINE}${BOLD}[2/6]${PLAIN}"
    echo -e "  ${YELLOW}Get a list of selectable models.${PLAIN}"
    echo
    selectAsrModels
    selectVadModels
    selectPuncModels
    echo
}
selectAsrModels(){
    echo -e "  ${YELLOW}Please choose the ASR model.${PLAIN}"
    menuSelection ${ASR_MODELS[*]}
    result=$?
    index=`expr ${result} - 1`
    PARAMS_ASR_ID=${ASR_MODELS[${index}]}
    echo -e "  ${UNDERLINE}You have chosen the ASR model:${PLAIN} ${GREEN}${PARAMS_ASR_ID}${PLAIN}"
    echo
}
selectVadModels(){
    echo -e "  ${YELLOW}Please choose the VAD model.${PLAIN}"
    menuSelection ${VAD_MODELS[*]}
    result=$?
    index=`expr ${result} - 1`
    PARAMS_VAD_ID=${VAD_MODELS[${index}]}
    echo -e "  ${UNDERLINE}You have chosen the VAD model:${PLAIN} ${GREEN}${PARAMS_VAD_ID}${PLAIN}"
    echo
}
selectPuncModels(){
    echo -e "  ${YELLOW}Please choose the PUNC model.${PLAIN}"
    menuSelection ${PUNC_MODELS[*]}
    result=$?
    index=`expr ${result} - 1`
    PARAMS_PUNC_ID=${PUNC_MODELS[${index}]}
    echo -e "  ${UNDERLINE}You have chosen the PUNC model:${PLAIN} ${GREEN}${PARAMS_PUNC_ID}${PLAIN}"
    echo
}
# Configure FunASR server host port setting.
setupHostPort(){
    echo -e "${UNDERLINE}${BOLD}[2/5]${PLAIN}"
    echo -e "${UNDERLINE}${BOLD}[3/6]${PLAIN}"
    params_host_port=`sed '/^PARAMS_HOST_PORT=/!d;s/.*=//' ${DEFAULT_FUNASR_CONFIG_FILE}`
    if [ -z "$params_host_port" ]; then
@@ -715,7 +760,7 @@
}
showAllParams(){
    echo -e "${UNDERLINE}${BOLD}[3/5]${PLAIN}"
    echo -e "${UNDERLINE}${BOLD}[4/6]${PLAIN}"
    echo -e "  ${YELLOW}Show parameters of FunASR server setting and confirm to run ...${PLAIN}"
    echo
@@ -818,7 +863,7 @@
# Install docker
installFunasrDocker(){
    echo -e "${UNDERLINE}${BOLD}[4/5]${PLAIN}"
    echo -e "${UNDERLINE}${BOLD}[5/6]${PLAIN}"
    if [ $DOCKERINFOLEN -gt 30 ]; then
        echo -e "  ${YELLOW}Docker has installed.${PLAIN}"
@@ -886,7 +931,7 @@
}
dockerRun(){
    echo -e "${UNDERLINE}${BOLD}[5/5]${PLAIN}"
    echo -e "${UNDERLINE}${BOLD}[6/6]${PLAIN}"
    echo -e "  ${YELLOW}Construct command and run docker ...${PLAIN}"
    start_flag=$1
@@ -911,15 +956,15 @@
        result=`expr ${result} + 0`
        if [ $result -eq 60 ]; then
            echo
            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}"
            echo -e "  ${RED}Please run (${PLAIN}${GREEN}${SUDO_CMD} bash funasr-runtime-deploy-online-cpu-zh.sh install${PLAIN}${RED}) to install Docker first.${PLAIN}"
            return $result
        elif [ $result -eq 61 ]; then
            echo
            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}"
            echo -e "  ${RED}Please run (${PLAIN}${GREEN}${SUDO_CMD} bash funasr-runtime-deploy-online-cpu-zh.sh install${PLAIN}${RED}) to install Docker first.${PLAIN}"
            return $result
        elif [ $result -eq 62 ]; then
            echo
            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}"
            echo -e "  ${RED}Docker: ${PARAMS_DOCKER_IMAGE} ${PARAMS_FUNASR_DOCKER_ID} has been launched, please run (${PLAIN}${GREEN}${SUDO_CMD} bash funasr-runtime-deploy-online-cpu-zh.sh stop${PLAIN}${RED}) to stop Docker first.${PLAIN}"
            return $result
        fi
@@ -970,7 +1015,7 @@
    deploySamples
    echo -e "  ${BOLD}The sample code is already stored in the ${PLAIN}(${GREEN}${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}${PLAIN}) ."
    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} ."
    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-online-cpu-zh.sh client${PLAIN} ."
    echo
}
@@ -1336,7 +1381,7 @@
                ;;
            Python)
                client_exec="${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}/python/wss_client_asr.py"
                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"
                run_cmd="python3 ${client_exec} --host ${server_ip} --port ${host_port} --mode 2pass --audio_in ${wav_path} --send_without_sleep --output_dir ${PARAMS_FUNASR_SAMPLES_LOCAL_DIR}/python"
                pre_cmd="pip3 install click>=8.0.4"
                echo -e "  Run ${BLUE}${pre_cmd}${PLAIN}"
                $pre_cmd
@@ -1363,6 +1408,7 @@
    initConfiguration
    initParameters
    selectDockerImages
    selectModels
    result=$?
    result=`expr ${result} + 0`
    if [ $result -ne 0 ]; then
@@ -1379,7 +1425,7 @@
    echo -e "${UNDERLINE}Usage${PLAIN}:"
    echo -e "  $0 [OPTIONAL FLAGS]"
    echo
    echo -e "funasr-runtime-deploy-offline-cpu-zh.sh - a Bash script to install&run FunASR docker."
    echo -e "funasr-runtime-deploy-online-cpu-zh.sh - a Bash script to install&run FunASR docker."
    echo
    echo -e "${UNDERLINE}Options${PLAIN}:"
    echo -e "   ${BOLD}-i, install, --install${PLAIN}    Install and run FunASR docker."
@@ -1471,7 +1517,7 @@
#  The path of punc model in docker
PARAMS_DOCKER_PUNC_PATH=""
#  The punc model ID in ModelScope
PARAMS_PUNC_ID="damo/punc_ct-transformer_zh-cn-common-vocab272727-onnx"
PARAMS_PUNC_ID="damo/punc_ct-transformer_zh-cn-common-vad_realtime-vocab272727-onnx"
#  The dir stored vad model in local
PARAMS_LOCAL_VAD_DIR=""