阿里一句话识别语音数据时长不能超过60s。参考文档
实现功能:
1.点击拾音按钮开始录音,点击结束按钮结束录音并调取后台语音转文字接口
2.录音时长超过60s自动结束录音并调取后台语音转文字接口
| |
| <script type="text/javascript" src="recorder.mp3.min.js"></script> |
| |
| <button id="rec-start-btn" onclick="recStart()" >开始录音</button> |
| <button id="stop-recorder" onclick="recStop()">结束录音</button> |
| <textarea name=like cols="30" rows="10" id="ai-input" placeholder="语音转文字结果"></textarea> |
| |
复制
| <script type="text/javascript"> |
| var timer = 0; |
| var rec=Recorder({ |
| type:"mp3", |
| sampleRate:16000, |
| bitRate:16 |
| }); |
| |
| rec.open(function(){ |
| |
| },function(msg){ |
| alert("开启录音失败:"+msg) |
| console.log("开启录音失败:"+msg); |
| }) |
| |
| |
| |
| function recStart(){ |
| rec.start(); |
| $("#timer").text("0s"); |
| startTimer(); |
| }; |
| |
| |
| function recStop(){ |
| stopTimer(); |
| |
| rec.stop(function(blob,duration){ |
| var localUrl=(window.URL||webkitURL).createObjectURL(blob); |
| console.log(blob,localUrl,"时长:"+duration+"ms"); |
| var form = new FormData(); |
| form.append("voice_file", blob, "<voice_file>"); |
| |
| var settings = { |
| "url": "这里是后台接口", |
| "method": "POST", |
| "timeout": 0, |
| "processData": false, |
| "mimeType": "multipart/form-data", |
| "contentType": false, |
| "data": form |
| }; |
| $.ajax(settings).done(function (response) { |
| var res = JSON.parse(response) |
| if(res.code == 200){ |
| let text = ""; |
| let textArr = res.result.Result.Sentences; |
| textArr.forEach(item => { |
| text+=item.Text |
| }); |
| $("#ai-input").val(text); |
| }else{ |
| console.log(res.result) |
| } |
| }); |
| |
| },function(msg){ |
| console.log("录音失败:"+msg); |
| |
| rec.close(); |
| |
| }); |
| }; |
| |
| |
| var interval = null; |
| function startTimer(){ |
| |
| var seconds = 0; |
| |
| interval = setInterval(function() { |
| |
| seconds++; |
| |
| $("#timer").text(seconds+"s"); |
| if(seconds > 59){ |
| |
| stopTimer(); |
| recStop(); |
| } |
| }, 1000); |
| } |
| </script> |
复制