| runtime/websocket/bin/websocket-server-2pass.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| runtime/websocket/bin/websocket-server.cpp | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
runtime/websocket/bin/websocket-server-2pass.cpp
@@ -336,6 +336,10 @@ auto it_data = data_map.find(hdl); if (it_data != data_map.end()) { msg_data = it_data->second; if(msg_data->msg["is_eof"]){ lock.unlock(); return; } } else { lock.unlock(); return; @@ -363,7 +367,9 @@ }catch (std::exception const &e) { LOG(ERROR)<<e.what(); break; msg_data->msg["is_eof"]=true; guard_decoder.unlock(); return; } if (jsonresult.contains("wav_name")) { @@ -387,12 +393,6 @@ nlohmann::json json_fst_hws; try{ json_fst_hws = nlohmann::json::parse(json_string); } catch (std::exception const &e) { LOG(ERROR)<<e.what(); break; } if(json_fst_hws.type() == nlohmann::json::value_t::object){ // fst try{ @@ -401,11 +401,14 @@ } catch (const std::exception& e) { LOG(INFO) << e.what(); } }else{ } } catch (std::exception const &e) { LOG(ERROR)<<e.what(); // nn std::string client_nn_hws = jsonresult["hotwords"]; nn_hotwords += " " + client_nn_hws; LOG(INFO) << "nn hotwords: " << client_nn_hws; // LOG(INFO) << "nn hotwords: " << client_nn_hws; } } } @@ -448,8 +451,8 @@ } LOG(INFO) << "jsonresult=" << jsonresult << ", msg_data->msg=" << msg_data->msg; if (jsonresult["is_speaking"] == false || jsonresult["is_finished"] == true) { if ((jsonresult["is_speaking"] == false || jsonresult["is_finished"] == true) && msg_data->msg["is_eof"] != true) { LOG(INFO) << "client done"; // if it is in final message, post the sample_data to decode @@ -500,6 +503,7 @@ try{ // post to decode if (msg_data->msg["is_eof"] != true) { std::vector<std::vector<float>> hotwords_embedding_(*(msg_data->hotwords_embedding)); msg_data->strand_->post( std::bind(&WebSocketServer::do_decoder, this, @@ -516,6 +520,7 @@ std::ref(msg_data->tpass_online_handle))); msg_data->msg["access_num"]=(int)(msg_data->msg["access_num"])+1; } } catch (std::exception const &e) { LOG(ERROR)<<e.what(); runtime/websocket/bin/websocket-server.cpp
@@ -146,6 +146,7 @@ data_msg->msg["itn"] = true; data_msg->msg["audio_fs"] = 16000; data_msg->msg["access_num"] = 0; // the number of access for this object, when it is 0, we can free it saftly data_msg->msg["is_eof"]=false; FUNASR_DEC_HANDLE decoder_handle = FunASRWfstDecoderInit(asr_handle, ASR_OFFLINE, global_beam_, lattice_beam_, am_scale_); data_msg->decoder_handle = decoder_handle; @@ -250,6 +251,10 @@ auto it_data = data_map.find(hdl); if (it_data != data_map.end()) { msg_data = it_data->second; if(msg_data->msg["is_eof"]){ lock.unlock(); return; } } else{ lock.unlock(); return; @@ -274,7 +279,9 @@ }catch (std::exception const &e) { LOG(ERROR)<<e.what(); break; msg_data->msg["is_eof"]=true; guard_decoder.unlock(); return; } if (jsonresult["wav_name"] != nullptr) { @@ -295,12 +302,6 @@ nlohmann::json json_fst_hws; try{ json_fst_hws = nlohmann::json::parse(json_string); } catch (std::exception const &e) { LOG(ERROR)<<e.what(); break; } if(json_fst_hws.type() == nlohmann::json::value_t::object){ // fst try{ @@ -309,11 +310,14 @@ } catch (const std::exception& e) { LOG(INFO) << e.what(); } }else{ } } catch (std::exception const &e) { LOG(ERROR)<<e.what(); // nn std::string client_nn_hws = jsonresult["hotwords"]; nn_hotwords += " " + client_nn_hws; LOG(INFO) << "nn hotwords: " << client_nn_hws; // LOG(INFO) << "nn hotwords: " << client_nn_hws; } } } @@ -338,8 +342,8 @@ if (jsonresult.contains("itn")) { msg_data->msg["itn"] = jsonresult["itn"]; } if (jsonresult["is_speaking"] == false || jsonresult["is_finished"] == true) { if ((jsonresult["is_speaking"] == false || jsonresult["is_finished"] == true) && msg_data->msg["is_eof"] != true) { LOG(INFO) << "client done"; // for offline, send all receive data to decoder engine std::vector<std::vector<float>> hotwords_embedding_(*(msg_data->hotwords_embedding)); @@ -376,6 +380,7 @@ default: break; } guard_decoder.unlock(); } // init asr model