From 94de39dde2e616a01683c518023d0fab72b4e103 Mon Sep 17 00:00:00 2001
From: 游雁 <zhifu.gzf@alibaba-inc.com>
Date: 星期一, 19 二月 2024 22:21:50 +0800
Subject: [PATCH] aishell example
---
runtime/websocket/bin/funasr-wss-client.cpp | 25 +++++++++++++++----------
1 files changed, 15 insertions(+), 10 deletions(-)
diff --git a/runtime/websocket/bin/funasr-wss-client.cpp b/runtime/websocket/bin/funasr-wss-client.cpp
index f617998..7af3fbb 100644
--- a/runtime/websocket/bin/funasr-wss-client.cpp
+++ b/runtime/websocket/bin/funasr-wss-client.cpp
@@ -98,11 +98,12 @@
switch (msg->get_opcode()) {
case websocketpp::frame::opcode::text:
total_recv=total_recv+1;
- LOG(INFO)<< "Thread: " << this_thread::get_id() <<", on_message = " << payload;
- LOG(INFO)<< "Thread: " << this_thread::get_id() << ", total_recv=" << total_recv << " total_send=" <<total_send;
- if(total_recv==total_send)
+ LOG(INFO)<< "Thread: " << this_thread::get_id() << ", total_recv=" << total_recv <<", on_message = " << payload;
+ std::unique_lock<std::mutex> lock(msg_lock);
+ cv.notify_one();
+ if(close_client)
{
- LOG(INFO)<< "Thread: " << this_thread::get_id() << ", close client";
+ LOG(INFO)<< "Thread: " << this_thread::get_id() << ", close client thread";
websocketpp::lib::error_code ec;
m_client.close(m_hdl, websocketpp::close::status::going_away, "", ec);
if (ec){
@@ -141,14 +142,17 @@
if (i >= wav_list.size()) {
break;
}
+ if (total_send !=0){
+ std::unique_lock<std::mutex> lock(msg_lock);
+ cv.wait(lock);
+ }
total_send += 1;
send_wav_data(wav_list[i], wav_ids[i], audio_fs, hws_map, send_hotword, use_itn);
if(send_hotword){
send_hotword = false;
}
}
- WaitABit();
-
+ close_client = true;
asio_thread.join();
}
@@ -189,10 +193,7 @@
funasr::Audio audio(1);
int32_t sampling_rate = audio_fs;
std::string wav_format = "pcm";
- if(funasr::IsTargetFile(wav_path.c_str(), "wav")){
- if(!audio.LoadWav(wav_path.c_str(), &sampling_rate, false))
- return ;
- }else if(funasr::IsTargetFile(wav_path.c_str(), "pcm")){
+ if(funasr::IsTargetFile(wav_path.c_str(), "pcm")){
if (!audio.LoadPcmwav(wav_path.c_str(), &sampling_rate, false))
return ;
}else{
@@ -334,14 +335,18 @@
private:
websocketpp::connection_hdl m_hdl;
websocketpp::lib::mutex m_lock;
+ websocketpp::lib::mutex msg_lock;
+ websocketpp::lib::condition_variable cv;
bool m_open;
bool m_done;
+ bool close_client=false;
int total_send=0;
int total_recv=0;
};
int main(int argc, char* argv[]) {
#ifdef _WIN32
+ #include <windows.h>
SetConsoleOutputCP(65001);
#endif
google::InitGoogleLogging(argv[0]);
--
Gitblit v1.9.1