Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将浏览器麦克风输入录制到服务器以进行实时语音识别_Javascript_Websocket_Webrtc_Getusermedia - Fatal编程技术网

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

Javascript 将浏览器麦克风输入录制到服务器以进行实时语音识别,javascript,websocket,webrtc,getusermedia,Javascript,Websocket,Webrtc,Getusermedia,我可以访问IBM Watson的Speech to Text API,该API允许通过WebSocket进行流式传输,并且我可以调用getUserMedia()在浏览器中实例化麦克风设备,但现在我需要找出实时传输此信息的最佳方法 出于CORS原因,我打算从浏览器我的服务器Watson使用我的服务器作为中继建立三向WebSocket连接 我一直在研究WebRTC和各种实验,但所有这些似乎都是浏览器间的点对点,而不是我想要的客户端到服务器 我遇到的唯一其他示例(例如RecordRTC)似乎是基于从g

我可以访问IBM Watson的Speech to Text API,该API允许通过WebSocket进行流式传输,并且我可以调用
getUserMedia()
在浏览器中实例化麦克风设备,但现在我需要找出实时传输此信息的最佳方法

出于CORS原因,我打算从
浏览器我的服务器Watson
使用我的服务器作为中继建立三向WebSocket连接

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

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

  • 用户不必按下启动或停止按钮——它应该能够随时倾听用户的声音
  • 即使我录制了一段录音,并在有一段时间的沉默时停止,在讲话和从服务器获得响应之间也会有不合理的时间延迟
  • 我正在做一个概念验证,如果可能的话,我希望它能在尽可能多的现代浏览器上工作——但最重要的是,移动浏览器。不过,iOS在这一点上似乎是不可能的

    假设我现在只有以下代码:

    // 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);
    });
    

    看到了吗?@mido-No-在这个上下文中,MCU是什么意思?@jib根据只有Firefox操作系统支持MediaRecorder的说法mobile@CJxD我知道你们想把媒体流从浏览器发送到服务器,有效的方法是使用像kurento或Licode这样的MCU。