在使用Google的androidthings示例时,我遇到了问题,当我将输出设置为MP3时,大多数响应都工作正常,并且符合预期,但有时例如当我说“说些简短的话”,“说些长时间的话”时助手API的行为很奇怪,我得到了太多的答复和“对话”?
日志显示对话结束了很多次,我多次触发了此事件...
2019-05-22 17:28:19.323 17562-17709/com.example.androidthings.assistant
D/AudioTrack: stop() called with 280 frames delivered
2019-05-22 17:28:19.323 17562-17709/com.example.androidthings.assistant
I/AudioTrack: Skip ramp
2019-05-22 17:28:19.333 17562-17562/com.example.androidthings.assistant
I/AssistantActivity: assistant conversation finished
2019-05-22 17:28:19.335 17562-17709/com.example.androidthings.assistant
D/EmbeddedAssistant: Received response: #
请参阅附件日志:Embedded assistant log
是API错误吗? 还是配置有问题?
我正在使用此处的最新代码:androidthings-googleassistant
当输出编码设置为LINEAR16时,该问题不存在。
编辑:
我相信这部分会引起问题:
if (value.getAudioOut() != null) {
if (mAudioOutSize <= value.getAudioOut().getSerializedSize()){
mAudioOutSize = value.getAudioOut().getSerializedSize();
}
else {
mAudioOutSize = 0;
onCompleted();
}
}
这是确定助手响应结束的一种令人讨厌的方法,它对于PCM效果很好,因为块始终是相同大小而最后一个较小,但是对于MP3,块大小不相等,它们看起来是随机的。
确定响应结束的更好方法吗?