html5语音转文字实时语音转文字

avatar
作者
筋斗云
阅读量:0

w html5 demo:
链接:https://pan.baidu.com/s/1uJ2EO9FNzFsRE69D_t6mI 提取码:19r5

文档

实时转需要开启录音权限,看文档,或者demo

借助第三方语音转文字技术


上传wav格式语音文件转文字

服务端实现ASR自动语音转文字,提供给前端asr服务器地址,然后前端把需要的语音文件以指定格式发送给服务端,服务端返回转换后的结果

<!-- 原生input也行,第三方ui库也可以 --> <a-upload   action="#"   :limit="1"   :customRequest="customUploadHandler"   >   <a-button>点击上传</el-button> </a-upload> 
import WebSockerUtil from "xx/xxx/xxx/";//引入ws工具类  let ws = null;  function webSocketInit(){ 	//服务端提供的ASR服务地址,进行ws连接, 	ws = new WebSockerUtil('ws:xxx/xxx/xx:1008',messageHandler) } webSocketInit();  /** 接收结果 */ function messageHandler(eventData){ 	console.log(eventData,'ws转换结果') 	let resultTxt = '';//结果文字     let rectxt = "" + JSON.parse(jsonMsg.data)['text'];     let asrmodel = JSON.parse(jsonMsg.data)['mode'];     let is_final = JSON.parse(jsonMsg.data)['is_final'];     let timestamp = JSON.parse(jsonMsg.data)['timestamp'];     if (asrmodel == "2pass-offline" || asrmodel == "offline") {         offline_text = offline_text + handleWithTimestamp(rectxt, timestamp); //rectxt; //.replace(/ +/g,"");         resultTxt  = offline_text;     } else {         resultTxt  = rec_text + rectxt; //.replace(/ +/g,"");     } }  /**  自定义上传文件 */ function  customUploadHandler({file}){       let fileAudio = new FileReader();       fileAudio.readAsArrayBuffer(file);       fileAudio.onload = ()=>{         let file_data_array = audioblob.result; //        const audioblob= new Blob([new Uint8Array(file_data_array)], { type: "audio/wav" }); //       const audioSrc = (window.URL || webkitURL).createObjectURL(audioblob);   	     let sampleBuf = new Uint8Array(file_data_array);  	     let CHUNK_SIZE = 960; // for asr chunk_size [5, 10, 5]  	     while (sampleBuf.length >= chunk_size) {              let sendBuf = sampleBuf.slice(0, CHUNK_SIZE);               sampleBuf = sampleBuf.slice(CHUNK_SIZE, sampleBuf.length);               ws.send(sendBuf);           }                      //stop           let chunk_size = new Array(5, 10, 5);           	 var request = {        			 "chunk_size": chunk_size,         		 "wav_name": "h5",         		 "is_speaking": false,         		 "chunk_interval": 10,         		 "mode": 'offline',     		};     		if (sampleBuf.length > 0) {         		ws.send(sampleBuf);     		    sampleBuf = new Int16Array();    			 }    			 ws.send(JSON.stringify(request));       } }  

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!