将浏览器麦克风输入录制到服务器以进行实时语音识别

时间:2016-02-01 19:19:17

标签: javascript websocket webrtc getusermedia

我可以访问IBM Watson的Speech-To-Text API,它允许通过WebSockets进行流式传输,并且我能够调用getUserMedia()来实例化浏览器中的麦克风设备,但现在我需要找出实时传输这些信息的最佳方法。

我打算从browser <=> my server <=> Watson使用我的服务器作为CORS原因的中继进行三方WebSocket连接。

我一直在关注WebRTC和各种实验,但所有这些似乎都是浏览器间的点对点,而不是我想要的客户端到服务器。

我遇到的唯一其他示例(例如RecordRTC)似乎基于从MediaStream返回的getUserMedia()录制WAV或FLAC文件,然后将文件发送到服务器,但这本身有两个问题:

  1. 用户不必按下开始或停止按钮 - 它应该始终能够听取用户的意见。
  2. 即使我进行录音并在一段时间的沉默中停止录音,在讲话和从服务器获得回复之间会有不合理的时间延迟。
  3. 我正在制作概念证明,如果可能的话,我希望能够在尽可能多的现代浏览器上工作 - 但最重要的是,移动浏览器。然而,iOS在这个问题上似乎是不可能的。

    http://caniuse.com/#feat=stream

    http://caniuse.com/#search=webrtc

    让我们假设我现在只有这个代码:

    // Shimmed with https://raw.githubusercontent.com/webrtc/adapter/master/adapter.js
    navigator.mediaDevices.getUserMedia({ audio: true })
    .then(function (mediaStream) {
        // Continuously send raw or compressed microphone data to server
        // Continuously receive speech-to-text services
    }, function (err) {
        console.error(err);
    });
    

0 个答案:

没有答案
相关问题