当前位置: 首页 > Web前端 > HTML

HTML用javascrip在浏览器上实现语音输入和语义理解功能(speex压缩)

时间:2023-04-02 21:02:43 HTML

HTML在浏览器上用javascript实现语音输入和语义理解功能(speex压缩)除了语音识别功能,更强大的支持是语义理解功能。Android和iOS平台都有样例demo供您下载。语音在线有声读物demo:传输语音计费demo:在web上传输,使用基于javascript的olami开放平台sdk也可以实现语音识别的语义理解。本文实现了这样一个小程序。Web客户端使用麦克风在本地录音,录音数据用speex压缩,然后向服务器发送跨域请求,返回并显示识别出的语音和语义字符串。上图第一张:下图刚加载时,在录制前点击界面上的开始录制按钮,然后自动检测一句后的结尾结尾,然后压缩上传到服务器识别,并显示从服务器获取的识别结果显示在界面上。本例中的口语是:“我想听三国演义这本书”,使用的是android平台上听书app建立的语法。返回的json字符串如下:{"data":{"asr":{"result":"我想听三国演义","speech_status":0,"final":true,"status":0},"nli":[{"desc_obj":{"result":"正在搜索,请稍候","status":0},"semantic":[{"app":"musiccontrol","input":"我想听三国演义","slots":[{"name":"songname","value":"三国演义"}],"modifier":["play"],"customer":"58df512384ae11f0bb7b487e"}],"type":"musiccontrol"}]},"status":"ok"}通过解析这个json,可以得到app类型,songname(查询书名),修饰符是play,behavior是播放这个json。语法当然是自定义的,可以解析json字符串,得到程序需要的字段,用于相应的操作,从而实现语义理解功能。olami开放平台语法编写介绍先来看看实现的代码。使用eclipse构建J2EE项目WebVoiceRecognize。第一次搭建可以参考以下网址:发送下面是工程目录结构。发布后,网页可以在chrome或QQ浏览器中打开运行。.下面介绍voiceRecognize.html文件,其他都是min.js,知道怎么调用就可以了。语音识别测试点击开始按钮录制,点击停止按钮停止录制并识别

结果:

浏览器加载时,首先调用load()初始化函数load(){setAuthorization("http://cn.olami.ai/cloudservice/api",//serverurl"51a4bb56ba954655a4fc834bfdc46af1",//appkey"asr",//api类型"68bff251789b426896e70e888f919a6d",//appSecret"nli");//seqsetCallBackFromServerResult(getResultFrom);}initAudiorecor()使用setAuthorization函数进行录音,参数为url:服务器地址appkey:在开放平台上注册应用后得到的appkeyapi:api类型选择asr为语音appSecret:在开放平台上注册应用后得到的appSecret开放平台nli:seq表示包含语音语义return,stt表示只有语音返回setCallBackFromServerResult(getResultFromServer)注册录音介绍和识别结果后的回调,回调中可以将结果输出到接口功能。单击开始录音按钮时,调用函数StartRecording(){//开始录音if(audioRecorder==null){initAudio();alert("需要初始化媒体");}audioRecorder.clear();audioRecorder.record();录音=真;bRecorded=false;切换标签();RegisterCallBackToRecorder();//注册recoder回调}在录制js代码的时候,会自动检测结束音结束,然后回调注册的函数speexEncode(),点击停止录音按钮同样调用此函数window.speexEncode=函数(){exportSpeex();};函数exportSpeex(){录音=false;b记录=真;ToggleLabels();//更新界面的按钮状态audioRecorder.stop();录音机。exportPCM(uploadSpeexData);}audioRecorder.exportPCM(uploadSpeexData)实现将录制的16Kpcm语音压缩成speex格式上传到服务器,从服务器获取结果后,调用注册的setCallBackFromServerResult(getResultFromServer)函数,获取result在函数getResultFromServer的输出中显示出来。代码下载地址:https://github.com/ls0609/Web...相关网站链接:olami开放平台语法官方介绍:https://cn.olami.ai/wiki/?mp=...olami开放平台语法写作介绍:http://blog.csdn.net/ls0609/a...