Dus*_*san 5 android speech-recognition voice-recognition
认识到由谷歌服务器的演讲,我用SpeechRecognizer类与RecognitionListener组合中建议斯蒂芬的回答到这个问题。此外,我尝试使用 RecognitionListener 中的 onBufferReceived() 回调来捕获正在识别的音频信号,例如:
byte[] sig = new byte[500000] ;
int sigPos = 0 ;
...
public void onBufferReceived(byte[] buffer) {
System.arraycopy(buffer, 0, sig, sigPos, buffer.length) ;
sigPos += buffer.length ;
}
...
Run Code Online (Sandbox Code Playgroud)
这似乎工作正常,除非 SpeechRecognizer 无法连接到 Google 服务器、音频块未复制到上述sig数组中,并且会引发 HTTP 连接超时异常。SpeechRecognizer 最终连接到谷歌服务器,识别结果表明收到了完整的音频信号;只有sig数组缺少一些音频块。
有没有人遇到同样的问题?任何解决方案的提示?谢谢!
我倾向于说这可能是识别服务行为的不一致,甚至可能是您使用的 Android 版本中的错误。但是,文档指出,不能保证调用此方法,因此它符合规范。到目前为止我注意到的是以下内容(在Android 2.3.4上):我在记录时获取字节,但是如果有例如a,SocketTimeout它会在一段时间后尝试将数据重新发送到服务器,但不会onBufferReceived再次调用相同的数据数据。用于测试的代码与您在帖子中链接的代码相同。
您认为为什么您在该方法中收到的音频中缺少一些块?如果只是丢失了几个块,甚至可能会出现这样的情况:尽管丢失了这些块,但识别仍然有效。
| 归档时间: |
|
| 查看次数: |
5614 次 |
| 最近记录: |