Android 识别侦听器中onRmsChanged的最大值是多少
我正在安卓系统中实现语音到文本的转换。我想向用户提供反馈,就像谷歌在语音文本转换方面所做的那样。某些类型的指示,如声级下降和峰值 我有一些价值观,这些价值观在我的博客上出现了。为了将其映射到最大值为100的进度条,我需要知道onRmsChanged的最大值 但它没有在任何地方说明 如何在不知道最大值的情况下显示声级反馈Android 识别侦听器中onRmsChanged的最大值是多少,android,text-to-speech,Android,Text To Speech,我正在安卓系统中实现语音到文本的转换。我想向用户提供反馈,就像谷歌在语音文本转换方面所做的那样。某些类型的指示,如声级下降和峰值 我有一些价值观,这些价值观在我的博客上出现了。为了将其映射到最大值为100的进度条,我需要知道onRmsChanged的最大值 但它没有在任何地方说明 如何在不知道最大值的情况下显示声级反馈 class listener implements RecognitionListener { public void onReadyForSpeech(Bund
class listener implements RecognitionListener {
public void onReadyForSpeech(Bundle params) {
Log.d(TAG, "onReadyForSpeech");
}
public void onBeginningOfSpeech() {
Log.d(TAG, "onBeginningOfSpeech");
}
public void onRmsChanged(float rmsdB) {
Log.d(TAG, "onRmsChanged " + rmsdB);
}
public void onBufferReceived(byte[] buffer) {
Log.d(TAG, "onBufferReceived");
}
public void onEndOfSpeech() {
Log.d(TAG, "onEndofSpeech");
}
public void onError(int error) {
Log.d(TAG, "error " + error);
}
public void onResults(Bundle results) {
Log.d(TAG, "onResults " + results);
}
// Called when partial recognition results are available.
public void onPartialResults(Bundle partialResults) {
Log.d(TAG, "onPartialResults");
}
public void onEvent(int eventType, Bundle params) {
Log.d(TAG, "onEvent " + eventType);
}
}
你可能把事情复杂化了一点 该值是一个浮点值,因此理论上最大可能值为 浮点值由生成 关于 关于 我觉得您所关心的只是向用户解释音量级别?因此,只需选择安静、中等和响亮的比例,并相应地调整UI
@Override
public void onRmsChanged(final float rmsdB) {
float quiet_max = 25f;
float medium_max = 65f;
if (rmsdB < quiet_max) {
System.out.print("Quiet" + rmsdB);
// quiet
} else if (rmsdB >= quiet_max && rmsdB < medium_max) {
System.out.print("Medium" + rmsdB);
// medium
} else {
System.out.print("Loud" + rmsdB);
// loud
}
}
@覆盖
公开无效(最终浮动rmsdB){
浮动静音_最大值=25f;
浮动介质_最大值=65f;
如果(rmsdB=安静最大值和rmsdB
通过在测试过程中调整您的声音水平,您应该能够确定安静、中等和响亮的阈值。但不要忘记在多个设备上进行测试,因为这可能因设备硬件而异。尽管如此,它不应该变化太大,以至于弄乱了你想要提供的视觉反馈
希望这会有所帮助。这肯定会有所帮助,但问题是我可以找到一个安静、中等音量的送礼设备,而不是其他设备。因此,如果我选择quiet_max=25,那么对于其他设备,即使是最响亮的输入也可能会更小25@stack-比例尺就是一个例子。您应该观察logcat中的值,并确定您认为它们应该是什么。只有当设备出现故障并且错误地报告了声级时,才会有很大的变化。因此,由于这是声音的标准化版本,如果设备一切正常,则各设备的值应该大致相同。@stack-理论上,“是”。但你应该通过观察多台设备的logcat输出来证明和确定这一点。别忘了使用多个版本的Android和多个不同的语音识别器进行测试。。。使用Android 4.1.2上的Google识别器,我在logcat中看到介于-2和10之间的值。