您可能知道,使用Android API实现语音到文本非常简单。您所要做的就是调用API的意图,它将为您返回文本。我的情况有点不同,我有一个预先录制的3GPP声音文件,我已经从用户录制并保存在SD卡上。我想知道是否可以将其转录为文本,就像任何其他语音识别一样。语音到文本API是否允许上传您自己要处理的声音文件?或者这不可能吗?
答案 0 :(得分:3)
API不允许,但请参阅this blog post and its comments了解可能的解决方法。还要确保您的文件包含高质量的音频(至少16位和16 kHz)才能获得更好的转录效果。
另见:
答案 1 :(得分:2)
我得到了一个解决方案,可以很好地从声音文件中发送语音。以下是我创建的简单Android项目的link,以显示解决方案的工作原理。此外,我在项目中放置了一些打印屏幕来说明应用程序。
我将尝试简要解释我使用的方法。我结合了该项目的两个功能:Google Speech API和Flac录制。
通过HTTP连接调用Google Speech API。 Mike Pultz提供了有关API的更多详细信息:
"(...)新的[Google] API是全双工流API。这意味着,它实际上使用了两个HTTP连接 - 一个POST请求将内容上传为“实时”分块流,另一个GET请求访问结果,这对于更长的音频样本或者对于更长的音频样本更有意义流音频。"
但是,此API需要接收FLAC声音文件才能正常工作。这使我们进入第二部分:Flac录音
我通过从一个名为AudioBoo的开源应用程序中提取和调整一些代码和库来实现该项目中的Flac记录。 AudioBoo使用本机代码来录制和播放flac格式。
因此,可以录制flac声音,将其发送到Google Speech API,获取文本,然后播放刚刚录制的声音。
我创建的项目具有使其工作的基本原则,并且可以针对特定情况进行改进。为了使其在不同的场景中运行,必须获得Google Speech API密钥,该密钥是通过成为Google Chromium-dev组的一部分获得的。我在该项目中留下了一个密钥,只是为了表明它正在工作,但我最终将其删除。如果有人需要更多相关信息,请告诉我原因是我在这篇文章中无法输入超过2个链接。
答案 2 :(得分:0)
目前无法将您自己的音频文件发送到谷歌进行处理,但您可以使用Android设备中的扬声器和麦克风将您的音频文件用作谷歌语音识别的输入。
首先,您必须拥有可能在SD卡中的音频文件,然后使用以下步骤:
1)按您希望的任何名称创建方法
2)在该方法中首先编写使用谷歌语音识别的代码
3)按照该代码编写使用扬声器播放音频文件的代码,然后将其作为谷歌语音识别的输入
//code for google voice recognition
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
intent.putExtra(RecognizerIntent.EXTRA_PROMPT,
getString(R.string.speech_prompt));
try {
startActivityForResult(intent, REQ_CODE_SPEECH_INPUT);
} catch (ActivityNotFoundException a) {
Toast.makeText(getApplicationContext(),
getString(R.string.speech_not_supported),
Toast.LENGTH_SHORT).show();
//code for playing the audio file which you wish to give as an input
MediaPlayer mp = new MediaPlayer();
try {
mp.setDataSource(file); // here file is the location of the audio file you wish to use an input
mp.prepare();
mp.start();
} catch (Exception e) {
e.printStackTrace();
}
我在我的博客中附上了java文件的链接。