将流从浏览器发送到Node JS服务器

问题描述 投票:2回答:1

总体思路:我创建了一个Node JS程序,该程序与多个API交互以重新创建家庭助理(例如Alexia或Siri)。它主要与IBM Watson进行交互。我的第一个目标是设置Dialogflow,以便我可以用真正的AI处理问题,但是由于Dialogflow v2的更新,我必须使用Google Cloud,这对我来说太麻烦了,所以我只用了一个手工制作的脚本从可配置列表中读取可能的响应。

我的实际目标是从用户那里获得音频流并将其发送到我的主程序中。我已经设置了快递服务器。当您在'/'上获取内容时,它将以HTML页面作为响应。该页面如下:

<!DOCTYPE html>
<html lang='fr'>
   <head>
       <script>
           let state = false

           function button() {

               navigator.mediaDevices.getUserMedia({audio: true})
                   .then(function(mediaStream) {

                       // And here I got my stream. So now what do I do?
                   })
                   .catch(function(err) {
                       console.log(err)
                   });
           }
       </script>
       <title>Audio recorder</title>
   </head>
   <body>
       <button onclick='button()'>Lancer l'audio</button>
   </body>
</html>

[当用户单击mediaDevices.getUserMedia()时,它记录用户的音频

我的配置如下所示:The config

我正在寻找一种启动记录,然后按停止按钮的方法,当按停止按钮时,它将自动将流发送到Node程序。如果输出是流,则更可取,因为它是IBM Watson的输入类型(否则我将不得不存储文件,然后读取然后删除)。

感谢您的关注。

有趣的事实:我图像的imgur ID以“ NUL”开头,在法语中,其含义为“ NOOB”

javascript node.js audio-streaming getusermedia
1个回答
0
投票

大多数浏览器,但不是全部(我在看着您,Mobile Safari)都支持使用getUserMedia()MediaRecorder API捕获和流式传输音频(和视频,您不在乎)。使用这些API,您可以将捕获的音频通过WebSockets或socket.io或一系列POST请求以小块的形式传输到nodejs服务器。然后,nodejs服务器可以将它们发送到您的识别服务。这里的挑战是:音频被压缩并封装在webm中。如果您的服务接受该格式的音频,则此策略将为您工作。

或者您可以尝试使用node-oggnode-vorbis进行接收和解码。 (我还没有这样做。)

可能还有其他方法。也许有人知道会回答。

© www.soinside.com 2019 - 2024. All rights reserved.