首页 > 解决方案 > Web Audio Api 与 Web Speech Api 集成 - 将扬声器/声卡输出流式传输到语音识别 api

问题描述

问题:

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

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

这个对吗?

可能的解决方法 - 停滞

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

有没有办法做到这一点,我还没有找到?

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

项目说明

html我正在创建一个用&编写的西班牙语练习程序/网站javascript。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。

标签: javascriptaudiohtml5-audiospeech

解决方案


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


推荐阅读