Android在进行语音识别时录制音频

时间:2016-09-29 08:20:22

标签: android speech-recognition audio-recording

我正在使用Android上的第三方云服务进行语音识别,它与Android API SpeechRecognizer配合得很好。代码如下:

    Intent recognizerIntent =
            new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
            RecognizerIntent.LANGUAGE_MODEL_WEB_SEARCH);

    // accept partial results if they come
    recognizerIntent.putExtra(RecognizerIntent.EXTRA_PARTIAL_RESULTS, true);

    //need to have a calling package for it to work
    if (!recognizerIntent.hasExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE)) {
        recognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, "com.example.speechrecognition");
    }
    recognizer = SpeechRecognizer.createSpeechRecognizer(context);
    recognizer.setRecognitionListener(this);
    recognizer.startListening(recognizerIntent);

同时,我想录制具有不同音频设置的音频,例如频率,频道,音频格式等。然后我将继续分析此音频缓冲区。我使用AudioRecord来达到目的。这只适用于我关闭语音识别。

如果我同时录制音频和语音识别,则会发生错误。

E/AudioRecord: start() status -38

如何实现这种功能,我也试过原生音频 - SLRecordItf,也不起作用。

1 个答案:

答案 0 :(得分:5)

正如评论所述,一次只允许/可以进行一次麦克风访问。

对于SpeechRecognizer附加RecognitionListener的回调为onBufferReceived(byte[] buffer),但遗憾的是,Google的原生识别服务不会向其提供任何音频数据,而且'非常令人沮丧。

您唯一的选择是使用外部服务,这项服务不会是免费的。 Google的新Cloud Speech API有一个Android example