首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >RecognitionListener中onRmsChanged的最大值是多少

RecognitionListener中onRmsChanged的最大值是多少
EN

Stack Overflow用户
提问于 2014-01-19 03:23:33
回答 1查看 3.5K关注 0票数 1

我正在用android实现语音到文本的转换。我想向用户提供反馈,就像谷歌对语音到文本的反馈一样。某些类型的指示,如声级的下降和峰值

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

但在任何地方都没有声明?

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

代码语言:javascript
运行
复制
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);
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2014-01-19 17:34:41

你可能把事情搞得有点复杂了。

该值是一个浮点数,因此理论上可能的最大值是Float.MAX_VALUE

浮点数的值由the new RMS dB value生成。

关于RMS的信息

关于dB的信息

我觉得你所关心的就是向用户解释音量水平?因此,只需选择安静、中等和响亮的比例,并相应地调整UI即可。

代码语言:javascript
运行
复制
    @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
        }
    }

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

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21208769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档