Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 识别侦听器中onRmsChanged的最大值是多少_Android_Text To Speech - Fatal编程技术网

Android 识别侦听器中onRmsChanged的最大值是多少

Android 识别侦听器中onRmsChanged的最大值是多少,android,text-to-speech,Android,Text To Speech,我正在安卓系统中实现语音到文本的转换。我想向用户提供反馈,就像谷歌在语音文本转换方面所做的那样。某些类型的指示,如声级下降和峰值 我有一些价值观,这些价值观在我的博客上出现了。为了将其映射到最大值为100的进度条,我需要知道onRmsChanged的最大值 但它没有在任何地方说明 如何在不知道最大值的情况下显示声级反馈 class listener implements RecognitionListener { public void onReadyForSpeech(Bund

我正在安卓系统中实现语音到文本的转换。我想向用户提供反馈,就像谷歌在语音文本转换方面所做的那样。某些类型的指示,如声级下降和峰值

我有一些价值观,这些价值观在我的博客上出现了。为了将其映射到最大值为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);
        }
    }

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

该值是一个浮点值,因此理论上最大可能值为

浮点值由生成

关于

关于

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