gpt4 book ai didi

android - RecognitionListener 中 onRmsChanged 的​​最大值是多少

转载 作者:行者123 更新时间:2023-11-30 03:09:34 27 4
gpt4 key购买 nike

我正在 android 中实现语音转文本。我想向用户提供反馈,就像谷歌用语音转文本一样。声级下降和峰值时的某种指示

我在 onRmsChanged 上有值。为了将其映射到最大值为 100 的进度条,我需要知道 onRmsChanged 的​​最大值。

但是哪里都没有说明?

如何在不知道最大值的情况下显示声级反馈?

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);
}
}

最佳答案

你可能把事情复杂化了一点。

该值为 float ,因此理论上最大可能值为 Float.MAX_VALUE

float 的值是由the new RMS dB value生成的.

关于 RMS 的信息

关于 dB 的信息

我觉得你只关心向用户解释音量级别?因此,只需选择安静、中等和响亮的等级,并相应地调整 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
}
}

通过在测试期间调整您的声音级别,您应该能够确定安静、中等和响亮的阈值。不过不要忘记在多个设备上进行测试,因为这可能因设备硬件而异。不过,它不应该变化太大,以免弄乱您想要提供的视觉反馈。

希望对您有所帮助。

关于android - RecognitionListener 中 onRmsChanged 的​​最大值是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21208769/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com