Google Keep 如何在保存录音的同时进行语音识别?

2023-11-22

Android 的 SpeechRecognizer 显然不允许将您正在进行语音识别的输入记录到音频文件中。 也就是说,要么使用 MediaRecorder(或 AudioRecord)录制语音,要么使用 SpeechRecognizer 进行语音识别,在这种情况下,音频不会录制到文件中(至少不是您可以访问的文件);但你不能同时做这两件事。

如何在 Android 中同时实现录音和语音识别的问题已经被问过好几次了,最流行的“解决方案”是录制一个 flac 文件并使用 Google 的非官方语音 API,它允许您发送一个 flac通过 POST 请求获取文件并获取带有转录的 json 响应。http://mikepultz.com/2011/03/accessing-google-speech-api-chrome-11/(过时的Android版本)https://github.com/katchsvartanian/voiceRecognition/tree/master/VoiceRecognition http://mikepultz.com/2013/07/google-speech-api-full-duplex-php-version/

这工作得很好,但有一个巨大的限制,即它不能用于长度超过 10-15 秒的文件(确切的限制尚不清楚,可能取决于文件大小或字数)。这使得它不适合我的需求。

此外,将音频文件分割成更小的文件也不是一个可能的解决方案;即使忘记在正确位置(而不是在单词中间)正确分割文件的困难,对上述 Web 服务 api 的许多连续请求将随机导致空响应(Google 表示每个请求的使用限制为 50 个)当天,但和往常一样,他们没有透露具体细节real使用限制明确限制了请求的突发)。

因此,所有这一切似乎都表明,在 Android 中获取语音转录的同时将输入记录到音频文件中是不可能的。

然而,Google Keep Android 应用程序正是这样做的。 它允许你说话,将你所说的内容转录成文本,并保存文本和录音(目前还不清楚它存储在哪里,但你可以重播它)。 而且它没有长度限制。

所以问题是:有人知道谷歌是如何保存它的吗? 我想查看源代码,但似乎不可用,是吗?

我在进行语音识别时嗅探了 Google Keep 发送和接收的数据包,它绝对不使用上面提到的语音 api。所有流量都是 TLS,(从外部看)它看起来与使用 SpeechRecognizer 时几乎相同。

那么是否存在一种方法可以将麦克风输入流“拆分”(即复制或多路复用)为两个流,并将其中一个输入到 SpeechRecognizer,另一个输入到 MediaRecorder?


Google Keep 推出RecognizerIntent具有某些未记录的额外内容,并期望生成的意图包含录制音频的 URI。如果RecognizerIntent由 Google 语音搜索提供服务,然后一切顺利,Keep 即可获取音频。

See 记录/保存来自语音识别意图的音频了解更多信息以及以与 Keep(可能)相同的方式调用识别器的代码示例。

请注意,此行为不是 Android 的一部分。这只是当前两个闭源谷歌应用程序如何相互通信的未记录方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Keep 如何在保存录音的同时进行语音识别? 的相关文章

随机推荐