Web Audio Api 与 Web Speech Api 集成 - 将扬声器/声卡输出流式传输到语音识别 api

Posted

技术标签:

【中文标题】Web Audio Api 与 Web Speech Api 集成 - 将扬声器/声卡输出流式传输到语音识别 api【英文标题】:Web Audio Api integration with Web Speech Api - stream speaker/soundcard output to voice recognition api 【发布时间】:2019-12-19 20:32:44 【问题描述】:

问题:

理想情况下,我会从声卡获取流输出(由正在播放的 mp4 文件生成)并将其发送到麦克风和扬声器。我知道我可以使用“getUserMedia”和“createChannelSplitter”(在 Web Audio Api 中)来获取和拆分(基于 Audacity 分析,原始信号是立体声)用户媒体为 2 个输出,这给我留下了 2 个问题。

    getUserMedia 只能从麦克风获取流输入 不是来自声卡(根据我的阅读) 流输出只能记录/发送到缓冲区,不能发送 直接对着麦克风(根据我的阅读)

这是正确的吗?

可能的解决方法 - 停滞

用户很可能会打开耳机麦克风,但我想到的一种解决方法是切换到设备上的内置麦克风并捕捉扬声器发出的声音,然后切换回耳机以供用户输入。但是,我还没有找到一种无需每次都询问用户即可在内置麦克风和耳机麦克风之间切换的方法。

有没有我没找到的方法?

您还建议什么其他解决方案?

项目说明

我正在创建一个用htmljavascript 编写的西班牙语练习程序/网站。 mp4 将播放,语音识别 api 将在屏幕上显示它所说的内容(就像西班牙语所说的那样),它会被翻译成英文,以便用户听到、看到和理解说话人所说的内容mp4。然后用户将使用耳机麦克风接听 mp4 人(通常内置麦克风无法提供足够好的语音识别质量 - 取决于设备 - 因此使用耳机)。

流程图我使用内置麦克风的解决方法

mp4->soundcard-> Web Audio Api -> channel 1 -> user's ears

channel 2 -> microphone input-> Web Speech Api-> html->text onscreen

流程图理想情况跳过麦克风输入

mp4->soundcard-> Web Audio Api -> channel 1 -> user's ears

channel 2-> Web Speech Api-> html->text onscreen -> user's eyes 

另一个可能的解决方法:

我想避免必须手动从每个 mp4 中删除一个 mp3,然后必须尝试同步它们,以便语音识别在 mp4 人说话时发生。我读过我可以通过语音识别 api 运行 mp3。

【问题讨论】:

【参考方案1】:

简短的回答是,目前(12 月 19 日)没有一种方法可以使用我拥有的工具和预算在这个平台上完成此任务。我选择了一种费力的方法来做到这一点,即设置带有文本块的单个 div,以便在该人在计时器上讲话时显示出来。我仍将使用语音 api 来捕捉用户所说的内容,以便程序可以运行正确的视频作为响应。

【讨论】:

【参考方案2】:
    在扬声器和用户耳机之间切换绝对不行。 语音识别软件通常需要清晰且捕捉良好的音频。因此,如果声音来自扬声器,则用户麦克风不太可能很好地拾取它。如果用户使用耳机,则麦克风根本无法捕捉音频。 据我所知,你不能直接发送音频文件Web Speech Api(我这里可能错了) Web Speech Api 并非所有浏览器都支持,所以这也是一个需要考虑的缺点:https://caniuse.com/#feat=speech-recognition

我建议查看 Google 的 Speech to text API:https://cloud.google.com/speech-to-text/

使用此服务,您可以直接向他们发送音频文件,他们会将转录内容发回。

它确实支持流式传输,因此您可以在播放的同时转录音频。不过,时机并不完美。

【讨论】:

谢谢,T,我最初查看了 google 的语音转文本,效果很好,但要花费 $$。我在自己的时间做这件事,没有预算(基本上是为了好玩——我正在给几个五年级的学生教授西班牙语)。此外,我认为我也可以将音频文件直接发送到 Web Speech Api,所以我认为我不需要谷歌。我只需要为我不想这样做的所有 mp4 生成单独的音频文件。我想知道我是否可以使用浏览器插件来完成同样的事情并让用户下载它?

以上是关于Web Audio Api 与 Web Speech Api 集成 - 将扬声器/声卡输出流式传输到语音识别 api的主要内容,如果未能解决你的问题,请参考以下文章

Web Audio API:当使用媒体流时,Firefox 中的 FFT 数据与 chrome 中的不同?

Shoutcast + Web Audio API CORS 问题

Web Audio API - 浏览器 ogg 与 Windows Media Foundation mp3

在 Web Audio API 中导出音频强度

关于Web Audio API的入门

Web Audio API -- Chrome / Safari 中的频率调制听起来不同