14

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

4

3 回答 3

3

API 不允许这样做,但请参阅此博客文章及其评论以了解潜在的解决方法。还要确保您的文件包含高质量的音频(至少 16 位和 16 kHz)以获得更好的转录。

也可以看看:

于 2011-09-27T08:46:54.710 回答
2

我得到了一个很好的解决方案,可以从声音文件中将语音转换为文本。这是我创建的一个简单 Android 项目的链接,用于展示解决方案的工作原理。此外,我在项目中放置了一些打印屏幕来说明应用程序。

我将尝试简要解释我使用的方法。我在该项目中结合了两个功能:Google Speech API 和 Flac 录音。

Google Speech API 通过 HTTP 连接调用。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 个链接。

于 2014-04-17T21:25:58.667 回答
0

目前无法将您自己的音频文件发送到 google 进行处理,但您可以使用您的 android 设备中的扬声器和麦克风将您的音频文件用作 google 语音识别的输入。

首先,您必须有一个可能在您的 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文件的链接。

于 2017-03-19T07:57:17.017 回答