119 lines
2.5 KiB
JavaScript
119 lines
2.5 KiB
JavaScript
|
/**
|
||
|
* 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);
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
}
|