bltcn
2024-04-03 c1a492a96e6d78ea4dbad63a51aa9065780e1287
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
/**
 * Copyright FunASR (https://github.com/alibaba-damo-academy/FunASR). All Rights
 * Reserved. MIT License  (https://opensource.org/licenses/MIT)
 */
/* 2021-2023 by zhaoming,mali aihealthx.com */
 
function WebSocketConnectMethod( config ) { //定义socket连接方法类
 
    
    var speechSokt;
    var connKeeperID;
    
    var msgHandle = config.msgHandle;
    var stateHandle = config.stateHandle;
              
    this.wsStart = function () {
        var Uri = document.getElementById('wssip').value; //"wss://111.205.137.58:5821/wss/" //设置wss asr online接口地址 如 wss://X.X.X.X:port/wss/
        if(Uri.match(/wss:\S*|ws:\S*/))
        {
            console.log("Uri"+Uri);
        }
        else
        {
            alert("请检查wss地址正确性");
            return 0;
        }
 
        if ( 'WebSocket' in window ) {
            speechSokt = new WebSocket( Uri ); // 定义socket连接对象
            speechSokt.onopen = function(e){onOpen(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;
        }
        else {
            alert('当前浏览器不支持 WebSocket');
            return 0;
        }
    };
    
    // 定义停止与发送函数
    this.wsStop = function () {
        if(speechSokt != undefined) {
            console.log("stop ws!");
            speechSokt.close();
        }
    };
    
    this.wsSend = function ( oneData ) {
 
        if(speechSokt == undefined) return;
        if ( speechSokt.readyState === 1 ) { // 0:CONNECTING, 1:OPEN, 2:CLOSING, 3:CLOSED
 
            speechSokt.send( oneData );
 
            
        }
    };
    
    // SOCEKT连接中的消息与状态响应
    function onOpen( e ) {
        // 发送json
        var chunk_size = new Array( 5, 10, 5 );
        var request = {
            "chunk_size": chunk_size,
            "wav_name":  "h5",
            "is_speaking":  true,
            "chunk_interval":10,
            "itn":getUseITN(),
            "mode":getAsrMode(),
            
        };
        if(isfilemode)
        {
            request.wav_format=file_ext;
            if(file_ext=="wav")
            {
                request.wav_format="PCM";
                request.audio_fs=file_sample_rate;
            }
        }
        
        var hotwords=getHotwords();
 
        if(hotwords!=null  )
        {
            request.hotwords=hotwords;
        }
        console.log(JSON.stringify(request));
        speechSokt.send(JSON.stringify(request));
        console.log("连接成功");
        stateHandle(0);
 
    }
    
    function onClose( e ) {
        stateHandle(1);
    }
    
    function onMessage( e ) {
 
        msgHandle( e );
    }
    
    function onError( e ) {
 
        info_div.innerHTML="连接"+e;
        console.log(e);
        stateHandle(2);
        
    }
    
 
}