繁体   English   中英

通过WebSocket JS发送录制的音频以将Watson语音转换为文本

[英]send recorded Audio via WebSocket JS for Watson Speech to Text

我正在尝试获取麦克风输入,并通过Websocket将其发送给Watson Speech to Text,但是很难完成,有人可以帮我吗?

var wsURI = "URL here";
var ws = new WebSocket(wsURI);
ws.onopen = function(evt) { onOpen(evt) };
ws.onmessage = function(evt) { onMessage(evt) };
ws.onclose = function(evt) { onClose(evt) };
ws.onerror = function(evt) { onError(evt) };


function enableMic(){
document.getElementById("startButton").addEventListener("click", function() {

navigator.mediaDevices.getUserMedia({ audio: true })
  .then(stream => {
    const mediaRecorder = new MediaRecorder(stream);
    mediaRecorder.start();

    const audioChunks = [];
    mediaRecorder.addEventListener("dataavailable", event => {
      audioChunks.push(event.data);  
    });
document.getElementById("stopButton").addEventListener("click", function() {
mediaRecorder.stop();

});
 mediaRecorder.addEventListener("stop", () => {
   const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
      const audioUrl = URL.createObjectURL(audioBlob);
      const audio = new Audio(audioUrl);
      var reader = new FileReader();
      ws.send(reader.result);
      reader.readAsArrayBuffer(audioBlob);

      audio.play();
      console.log(audioBlob);
      console.log(reader.result);

但是我无法将audioBlob作为AudioBuffer发送,所以我想通过websocket发送它。 在最后一个console.log中,结果为null

注意:Websockets的另一个功能不在这里,因为我认为这不会影响理解。

我感谢一些帮助!

谢谢!

我认为您是在读者读取值之前发送它的?

var reader = new FileReader();
ws.send(reader.result); // ?
reader.readAsArrayBuffer(audioBlob);

您是否尝试过将Watson Javascript SDK用于语音转文本服务? 它已经具有您需要的功能,我相信: https : //github.com/watson-developer-cloud/speech-javascript-sdk

该演示页面基于该sdk: https//speech-to-text-demo.ng.bluemix.net/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM