总体思路:我创建了一个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()
时,它记录用户的音频
我正在寻找一种启动记录,然后按停止按钮的方法,当按停止按钮时,它将自动将流发送到Node程序。如果输出是流,则更可取,因为它是IBM Watson的输入类型(否则我将不得不存储文件,然后读取然后删除)。
感谢您的关注。
有趣的事实:我图像的imgur ID以“ NUL”开头,在法语中,其含义为“ NOOB”
大多数浏览器,但不是全部(我在看着您,Mobile Safari)都支持使用getUserMedia()
和MediaRecorder
API捕获和流式传输音频(和视频,您不在乎)。使用这些API,您可以将捕获的音频通过WebSockets或socket.io或一系列POST请求以小块的形式传输到nodejs服务器。然后,nodejs服务器可以将它们发送到您的识别服务。这里的挑战是:音频被压缩并封装在webm中。如果您的服务接受该格式的音频,则此策略将为您工作。
或者您可以尝试使用node-ogg和node-vorbis进行接收和解码。 (我还没有这样做。)
可能还有其他方法。也许有人知道会回答。