将流从浏览器发送到 Node JS 服务器
Sending a stream from the browser to a Node JS server
总体思路:我创建了一个与多个 API 交互的 Node JS 程序,以重新创建家庭助理(如 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()
按钮时的音频
我的配置如下所示:
我正在寻找一种启动录制的方法,然后按下停止按钮,当按下停止按钮时,它会自动将流发送到节点程序。如果输出是流则更好,因为它是 IBM Watson 的输入类型(否则我将不得不存储文件,然后读取它然后删除它)。
感谢您的关注。
有趣的事实:我图片的 imgur ID 以“NUL”开头,在法语中意为“NOOB”哈哈
大多数浏览器,但不是全部(我说的是你,Mobile Safari),支持使用 getUserMedia()
和MediaRecorder
API。使用这些 API,您可以通过 WebSockets 或 socket.io 或一系列 POST 请求以小块的形式将捕获的音频传输到您的 nodejs 服务器。然后 nodejs 服务器可以将它们发送到您的识别服务。这里的挑战:音频被压缩并封装在 webm 中。如果您的服务接受该格式的音频,则此策略适合您。
或者您可以尝试使用node-ogg and node-vorbis接受和解码。 (我还没有这样做。)
可能还有其他方法。也许知道的人会回答。
总体思路:我创建了一个与多个 API 交互的 Node JS 程序,以重新创建家庭助理(如 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()
我的配置如下所示:
我正在寻找一种启动录制的方法,然后按下停止按钮,当按下停止按钮时,它会自动将流发送到节点程序。如果输出是流则更好,因为它是 IBM Watson 的输入类型(否则我将不得不存储文件,然后读取它然后删除它)。
感谢您的关注。
有趣的事实:我图片的 imgur ID 以“NUL”开头,在法语中意为“NOOB”哈哈
大多数浏览器,但不是全部(我说的是你,Mobile Safari),支持使用 getUserMedia()
和MediaRecorder
API。使用这些 API,您可以通过 WebSockets 或 socket.io 或一系列 POST 请求以小块的形式将捕获的音频传输到您的 nodejs 服务器。然后 nodejs 服务器可以将它们发送到您的识别服务。这里的挑战:音频被压缩并封装在 webm 中。如果您的服务接受该格式的音频,则此策略适合您。
或者您可以尝试使用node-ogg and node-vorbis接受和解码。 (我还没有这样做。)
可能还有其他方法。也许知道的人会回答。