总体思路:我创建了一个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”
答案 0 :(得分:2)
大多数浏览器,但不是全部(我正在看着您,Mobile Safari)都支持使用getUserMedia()
和{{捕获和流式传输音频(和视频,您不在乎) 1}} API。使用这些API,您可以通过WebSockets,socket.io或一系列POST请求将捕获的音频以小块的形式传输到nodejs服务器。然后,nodejs服务器可以将它们发送到您的识别服务。这里的挑战是:音频被压缩并封装在webm中。如果您的服务接受该格式的音频,则此策略将为您工作。
或者您可以尝试使用node-ogg和node-vorbis进行接收和解码。 (我还没有这样做。)
可能还有其他方法。也许有人知道会回答。