| | |
| | | } |
| | | |
| | | int main(int argc, char* argv[]) { |
| | | #ifdef _WIN32 |
| | | #include <windows.h> |
| | | SetConsoleOutputCP(65001); |
| | | #endif |
| | | try { |
| | | |
| | | google::InitGoogleLogging(argv[0]); |
| | |
| | | TCLAP::ValueArg<std::string> lm_dir("", LM_DIR, |
| | | "the LM model path, which contains compiled models: TLG.fst, config.yaml ", false, "damo/speech_ngram_lm_zh-cn-ai-wesp-fst", "string"); |
| | | TCLAP::ValueArg<std::string> lm_revision( |
| | | "", "lm-revision", "LM model revision", false, "v1.0.1", "string"); |
| | | "", "lm-revision", "LM model revision", false, "v1.0.2", "string"); |
| | | TCLAP::ValueArg<std::string> hotword("", HOTWORD, |
| | | "the hotword file, one hotword perline, Format: Hotword Weight (could be: 阿里巴巴 20)", |
| | | false, "/workspace/resources/hotwords.txt", "string"); |
| | | TCLAP::ValueArg<std::int32_t> fst_inc_wts("", FST_INC_WTS, |
| | | "the fst hotwords incremental bias", false, 20, "int32_t"); |
| | | TCLAP::SwitchArg use_gpu("", INFER_GPU, "Whether to use GPU, default is false", false); |
| | | |
| | | // add file |
| | | cmd.add(hotword); |
| | |
| | | cmd.add(io_thread_num); |
| | | cmd.add(decoder_thread_num); |
| | | cmd.add(model_thread_num); |
| | | cmd.add(use_gpu); |
| | | cmd.parse(argc, argv); |
| | | |
| | | std::map<std::string, std::string> model_path; |
| | |
| | | global_beam_ = global_beam.getValue(); |
| | | lattice_beam_ = lattice_beam.getValue(); |
| | | am_scale_ = am_scale.getValue(); |
| | | bool use_gpu_ = use_gpu.getValue(); |
| | | |
| | | // Download model form Modelscope |
| | | try{ |
| | |
| | | std::string s_itn_path = model_path[ITN_DIR]; |
| | | std::string s_lm_path = model_path[LM_DIR]; |
| | | |
| | | std::string python_cmd = "python -m funasr.utils.runtime_sdk_download_tool --type onnx --quantize True "; |
| | | std::string python_cmd = "python -m funasr.download.runtime_sdk_download_tool --type onnx --quantize True "; |
| | | |
| | | if(vad_dir.isSet() && !s_vad_path.empty()){ |
| | | std::string python_cmd_vad; |
| | |
| | | std::string down_asr_path; |
| | | std::string down_asr_model; |
| | | |
| | | // modify model-revision by model name |
| | | size_t found = s_asr_path.find("speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404"); |
| | | if (found != std::string::npos) { |
| | | model_path["model-revision"]="v1.2.4"; |
| | | } |
| | | |
| | | found = s_asr_path.find("speech_paraformer-large-contextual_asr_nat-zh-cn-16k-common-vocab8404"); |
| | | if (found != std::string::npos) { |
| | | model_path["model-revision"]="v1.0.5"; |
| | | } |
| | | |
| | | found = s_asr_path.find("speech_paraformer-large_asr_nat-en-16k-common-vocab10020"); |
| | | if (found != std::string::npos) { |
| | | model_path["model-revision"]="v1.0.0"; |
| | | s_itn_path=""; |
| | | s_lm_path=""; |
| | | } |
| | | |
| | | if (access(s_asr_path.c_str(), F_OK) == 0){ |
| | | // local |
| | | python_cmd_asr = python_cmd + " --model-name " + s_asr_path + " --export-dir ./ " + " --model_revision " + model_path["model-revision"]; |
| | | down_asr_path = s_asr_path; |
| | | }else{ |
| | | size_t found = s_asr_path.find("speech_paraformer-large-vad-punc_asr_nat-zh-cn-16k-common-vocab8404"); |
| | | if (found != std::string::npos) { |
| | | model_path["model-revision"]="v1.2.4"; |
| | | } |
| | | |
| | | found = s_asr_path.find("speech_paraformer-large-contextual_asr_nat-zh-cn-16k-common-vocab8404"); |
| | | if (found != std::string::npos) { |
| | | model_path["model-revision"]="v1.0.5"; |
| | | } |
| | | |
| | | found = s_asr_path.find("speech_paraformer-large_asr_nat-en-16k-common-vocab10020"); |
| | | if (found != std::string::npos) { |
| | | model_path["model-revision"]="v1.0.0"; |
| | | s_itn_path=""; |
| | | s_lm_path=""; |
| | | } |
| | | |
| | | // modelscope |
| | | LOG(INFO) << "Download model: " << s_asr_path << " from modelscope: "; |
| | | python_cmd_asr = python_cmd + " --model-name " + s_asr_path + " --export-dir " + s_download_model_dir + " --model_revision " + model_path["model-revision"]; |
| | |
| | | WebSocketServer websocket_srv( |
| | | io_decoder, is_ssl, server, wss_server, s_certfile, |
| | | s_keyfile); // websocket server for asr engine |
| | | websocket_srv.initAsr(model_path, s_model_thread_num); // init asr model |
| | | websocket_srv.initAsr(model_path, s_model_thread_num, use_gpu_); // init asr model |
| | | |
| | | LOG(INFO) << "decoder-thread-num: " << s_decoder_thread_num; |
| | | LOG(INFO) << "io-thread-num: " << s_io_thread_num; |