Android 谷歌如何在保存录音的同时进行语音识别?

Android 谷歌如何在保存录音的同时进行语音识别?,android,google-api,speech-recognition,audio-recording,Android,Google Api,Speech Recognition,Audio Recording,Android的SpeechRecognitor显然不允许将您正在进行语音识别的输入记录到音频文件中。 也就是说,您可以使用MediaRecorder(或AudioRecord)录制语音,也可以使用SpeechRecognitor进行语音识别,在这种情况下,音频不会录制到文件中(至少不能访问文件);但你不能同时做这两件事 关于如何在Android中同时录制音频和进行语音识别的问题已经被问了好几次,最流行的“解决方案”是录制一个flac文件并使用Google的非官方语音API,该API允许您通过P

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

关于如何在Android中同时录制音频和进行语音识别的问题已经被问了好几次,最流行的“解决方案”是录制一个flac文件并使用Google的非官方语音API,该API允许您通过POST请求发送一个flac文件,并通过转录获得json响应。 (过时的Android版本)

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

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

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

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

所以问题是:有人知道谷歌是如何做到这一点的吗? 我会看源代码,但它似乎不可用,是吗

我在做语音识别时嗅探了Google Keep发送和接收的数据包,它肯定没有使用上面提到的语音api。所有的流量都是TLS,从外部看,它与使用SpeechRecognitor时几乎一样


那么,是否存在一种“拆分”(即复制或多路复用)的方式麦克风输入流分成两个流,其中一个流传送给SpeechRecognitor,另一个流传送给MediaRecorder?

Google Keep启动带有某些未记录的额外内容的
RecognitizerIntent
,并期望产生的意图包含录制音频的URI。如果
RecognitizerIntent
由Google Voic提供服务e搜索,然后一切都解决了,并保持获得音频

有关更多信息和以Keep(可能)相同的方式调用识别器的代码示例,请参阅

请注意,这种行为不是Android的一部分。它只是两个封闭源代码的Google应用程序之间通信的当前未记录方式。

它使用 此事件返回在录制时从录制的语音中识别的文本
它也可以在Xamarin上使用

谢谢!所以我想我必须启动一个RecognitizerIntent,并且不能通过使用具有相同意图的SpeechRecognitizer来实现相同的目的,对吗?我不知道如何通过SpeechRecognitizer来实现。也许你可以就此提出一个新问题。问题不是如何实时获得识别结果,而是如何获得识别结果和录音文件。我认为这个答案根本不能解决这个问题。相关