为了让Google服务器识别语音,我使用SpeechRecognizer类与RecognitionListener相结合,如Stephan在答案中建议的那样,针对这个问题。此外,我尝试使用RecognitionListener的onBufferReceived()回调来捕获正在识别的音频信号。
这似乎运行良好,除非SpeechRecognizer无法连接到Google服务器,当一块音频未复制到上述的
byte[] sig = new byte[500000] ;
int sigPos = 0 ;
...
public void onBufferReceived(byte[] buffer) {
System.arraycopy(buffer, 0, sig, sigPos, buffer.length) ;
sigPos += buffer.length ;
}
...
这似乎运行良好,除非SpeechRecognizer无法连接到Google服务器,当一块音频未复制到上述的
sig
数组时,会抛出HTTP连接超时异常。SpeechRecognizer最终连接到Google服务器,并且识别结果表明接收到了完整的音频信号;只是sig
数组缺少一些音频块。是否有人遇到同样的问题?有解决方案的提示吗?谢谢!