从自己的声音文件到语音的语音

时间:2011-08-08 23:59:41

标签: android file audio speech-to-text

您可能知道,使用Android API实现语音到文本非常简单。您所要做的就是调用API的意图,它将为您返回文本。我的情况有点不同,我有一个预先录制的3GPP声音文件,我已经从用户录制并保存在SD卡上。我想知道是否可以将其转录为文本,就像任何其他语音识别一样。语音到文本API是否允许上传您自己要处理的声音文件?或者这不可能吗?

3 个答案:

答案 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();
    }

供参考,请参阅我的博客 https://sureshkumarask.wordpress.com/2017/03/19/how-to-give-our-own-audio-file-as-an-input-to-any-speech-recognizer/

我在我的博客中附上了java文件的链接。