gpt4 book ai didi

html - 以缓冲和高效的方式将音频发送到Node Js-也许使用WebRTC

转载 作者:行者123 更新时间:2023-12-03 02:15:09 25 4
gpt4 key购买 nike

我想在浏览器中完成类似的操作,但无需插件。

在功能齐全的Linux命令行和伪代码中进行了描述:

$ arecord -d 5 -f dat -c 1 -f S16_LE -r 8000 |\
speexenc - - |\
curl -X PUT "https://api.example.com/record-sound" -T -

伪代码:
  • 打开麦克风
  • 打开与API端点
  • 的连接
  • 以8000 Hz的速率从麦克风读取字节(波形pcm签名16位小端字节单声道8000 Hz)
  • 以字节为单位将字节编码为Speex(http://speex.org)
  • 将您从Speex编码器获得的字节chuck分段写入网络服务请求主体-这样可以节省大量带宽,并在字节可用时立即发送字节。
  • 当麦克风停止提供结果时(通过计时器-d 5或由用户停止),请刷新请求正文,然后对请求进行send
  • 等待JSON(或其他任何结果)在响应正文中生成

  • 显然,这是Linux命令行,但是该算法已成功应用于:
  • Linux-使用
  • 上方的命令
  • iOS-iPhone和iPad
  • Windows上的Java2SE

  • 我想在浏览器上实现 “从麦克风到服务器的高效快速流传输”的目标(现在我不再关心旧的浏览器)。它不必是REST服务器,WebSockets或其他任何可能的都很好。此外,基于基于Node.js 的解决方案也是首选。

    到目前为止我尝试过的是:
  • 已成功使用基于Flash的解决方案VideoIO.swf和服务器上的RTMPLite接收视频。就功能而言,它实际上是一个非常好的解决方案,除了:
  • 它要求用户通过非常糟糕的UI批准
  • 这不是进行网络的标准方式,并且不允许进行良好的错误检测,因此
  • 成功使用getUserMedia通过recorder.jsXHR2上传声音,但可以找到以下内容:
  • 实际上很慢,因为XHR2需要完整的数据才能使用xhr.send(data)进行请求
  • 这甚至更慢,因为我只能上传wav格式,该格式的大小比oggopus
  • 大得多
  • 对WebRTC的使用进行了研究,但除了对等连接之外,找不到其他提及任何内容的资源
  • 最佳答案

    我问了一个相关的问题“How can I use Opus Codec from JavaScript”以寻求其他选择,那里的答案在某种程度上适用于这里:

    布拉德:

    Unfortunately, it isn't currently possible to access browser codecs directly from JavaScript for encoding. The only way to do it would be to utilize WebRTC and set up recording on the server. I've tried this by compiling libjingle with some other code out of Chromium to get it to run on a Node.js server... it's almost impossible.

    The only thing you can do currently is send raw PCM data to your server. This takes up quite a bit of bandwidth, but you can minimize that by converting the float32 samples down to 16 bit (or 8 bit if your speech recognition can handle it).

    Hopefully the media recorder API will show up soon so we can use browser codecs.



    OmarIthawi:

    One way to do it is to compile Opus to Emscripten and hope that your PC can handle encoding using JavaScript. Another alternative is to use speex.js.

    关于html - 以缓冲和高效的方式将音频发送到Node Js-也许使用WebRTC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20539275/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com