zhaomingwork
2023-06-02 6f3b508485b8ab3817b315944730d8421c0b0b80
For python ws online asr slow problem (#582)

* for python online ws srv become slow problem

* little change for message
3个文件已修改
35 ■■■■ 已修改文件
funasr/runtime/html5/static/main.js 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
funasr/runtime/html5/static/wsconnecter.js 7 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
funasr/runtime/python/websocket/wss_srv_asr.py 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
funasr/runtime/html5/static/main.js
@@ -145,7 +145,9 @@
    isRec = false;
    info_div.innerHTML="请等候...";
    btnStop.disabled = true;
    setTimeout(function(){btnStart.disabled = false;info_div.innerHTML="请点击开始";}, 3000 );
    setTimeout(function(){
        console.log("call stop ws!");
        wsconnecter.wsStop();btnStart.disabled = false;info_div.innerHTML="请点击开始";}, 3000 );
    rec.stop(function(blob,duration){
  
        console.log(blob);
funasr/runtime/html5/static/wsconnecter.js
@@ -28,7 +28,11 @@
        if ( 'WebSocket' in window ) {
            speechSokt = new WebSocket( Uri ); // 定义socket连接对象
            speechSokt.onopen = function(e){onOpen(e);}; // 定义响应函数
            speechSokt.onclose = function(e){onClose(e);};
            speechSokt.onclose = function(e){
                console.log("onclose ws!");
                speechSokt.close();
                onClose(e);
                };
            speechSokt.onmessage = function(e){onMessage(e);};
            speechSokt.onerror = function(e){onError(e);};
            return 1;
@@ -42,6 +46,7 @@
    // 定义停止与发送函数
    this.wsStop = function () {
        if(speechSokt != undefined) {
            console.log("stop ws!");
            speechSokt.close();
        }
    };
funasr/runtime/python/websocket/wss_srv_asr.py
@@ -62,13 +62,32 @@
    update_model='v1.0.4'
    mode='paraformer_streaming')
print("model loaded")
print("model loaded! only support one client at the same time now!!!!")
async def ws_reset(websocket):
    print("ws reset now, total num is ",len(websocket_users))
    websocket.param_dict_asr_online = {"cache": dict()}
    websocket.param_dict_vad = {'in_cache': dict(), "is_final": True}
    websocket.param_dict_asr_online["is_final"]=True
    audio_in=b''.join(np.zeros(int(16000),dtype=np.int16))
    inference_pipeline_vad(audio_in=audio_in, param_dict=websocket.param_dict_vad)
    inference_pipeline_asr_online(audio_in=audio_in, param_dict=websocket.param_dict_asr_online)
    await websocket.close()
async def clear_websocket():
   for websocket in websocket_users:
       await ws_reset(websocket)
   websocket_users.clear()
async def ws_serve(websocket, path):
    frames = []
    frames_asr = []
    frames_asr_online = []
    global websocket_users
    await clear_websocket()
    websocket_users.add(websocket)
    websocket.param_dict_asr = {}
    websocket.param_dict_asr_online = {"cache": dict()}
@@ -140,7 +159,8 @@
     
    except websockets.ConnectionClosed:
        print("ConnectionClosed...", websocket_users)
        print("ConnectionClosed...", websocket_users,flush=True)
        await ws_reset(websocket)
        websocket_users.remove(websocket)
    except websockets.InvalidState:
        print("InvalidState...")