我正在开发Android语音助手(使用Dialogflow
),并且可以控制用户何时启动请求。
@Override
public void onListeningStarted() {
ImageView fab_img = (ImageView)findViewById(R.id.fab_img);
fab_img.startAnimation(performAnimation);
}
然后启动麦克风图标的动画。 之后,当他们完成问题或演讲时,我可以用它来停止动画。
@Override
public void onListeningFinished() {
ImageView fab_img = (ImageView)findViewById(R.id.fab_img);
fab_img.clearAnimation();
}
但是,如果用户不说话,并且一段时间后麦克风刚刚关闭,我将无法检测到。 我已经尝试过了:
@Override
public void onListeningCanceled() {
}
但是它不起作用,而且查询结果也没有运气。 有任何想法吗? 谢谢。
编辑------ @sunil sunny的建议解决方案看起来很好
@Override
public void onAudioLevel(float level) {
}
现在我正在研究需要产生静默级别的时间。
答案 0 :(得分:0)
我从未使用过此API,但是从文档中,我看到了一种名为void onAudioLevel(float level); // callback for sound level visualization
的方法,我认为它可以用于静音检测。它返回一个浮点值,因此,首先,当用户讲话时找出正常值是什么,当用户沉默时也找出值范围。假设A是用户讲话时的值,而B是用户不讲话时的值。然后,如果您说B持续5秒钟,那么用户将保持沉默。