数字语音识别0-9常出现的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数字语音识别0-9常出现的问题相关的知识,希望对你有一定的参考价值。

1、说话太快不可以

  我们常常在刚刚唤醒车机后立即开始说话,然而这种情况下有时会出现识别错误,这时候应该慢一点。在唤醒车机后,通常车机都会答应一声,表示他听到你在呼唤他了,在这之后,想要语音助手帮我们干啥就可以自由的说啦。

  2、说话太慢也不行

  除了没听到车机回答就说指令以外,车机回答之后很久没发出指令也同样会影响识别效果。在已经唤醒车机的时候,如果长时间没有等到指令,就会自动关闭识别。所以,在车机表示听到了,就需尽快说出你的需求。

  3、避免方言口音

  目前讯飞的车载语音产品还不支持方言呢,对普通话的识别率最高哦,也能听懂一些带有口音的普通话,纯方言现在是听不懂的啦。

  4、生僻多音难识别

  对于语音识别生僻字或是多音字可能会出现识别不准确的情况,这个是因为我们语音识别引擎还没有学习到这部分的知识,可是我们有努力学习,不断再进步哦。

  5、距离方位要适度

  语音识别和唤醒一样,都是通过麦克风来识别的,所以用户在说的时候需要注意下麦克风的方位哦,一般来说,在主驾和副驾保持正常坐姿说话就行,但是后排用户的识别效果没有前排用户高。

  6、噪音很困扰

  除了以上问题外,还有个最重要的因素就是噪音,噪音有车内设备、车外风声等噪音,也有车内其他人声的噪音,会干扰使用者的识别效果,在噪音越高的情况下,唤醒成功的概率会逐渐降低,唤醒效果:安静》低噪》高噪。这时候我们可以控制正常声音分贝,保持一个良好的驾车环境,在有噪音时,可适当提高对车机发出指令的音量来提高识别准确率。
参考技术A 1、说话太快不可以

  我们常常在刚刚唤醒车机后立即开始说话,然而这种情况下有时会出现识别错误,这时候应该慢一点。在唤醒车机后,通常车机都会答应一声,表示他听到你在呼唤他了,在这之后,想要语音助手帮我们干啥就可以自由的说啦。

  2、说话太慢也不行

  除了没听到车机回答就说指令以外,车机回答之后很久没发出指令也同样会影响识别效果。在已经唤醒车机的时候,如果长时间没有等到指令,就会自动关闭识别。所以,在车机表示听到了,就需尽快说出你的需求。

  3、避免方言口音

  目前讯飞的车载语音产品还不支持方言呢,对普通话的识别率最高哦,也能听懂一些带有口音的普通话,纯方言现在是听不懂的啦。

  4、生僻多音难识别

  对于语音识别生僻字或是多音字可能会出现识别不准确的情况,这个是因为我们语音识别引擎还没有学习到这部分的知识,可是我们有努力学习,不断再进步哦。

  5、距离方位要适度

  语音识别和唤醒一样,都是通过麦克风来识别的,所以用户在说的时候需要注意下麦克风的方位哦,一般来说,在主驾和副驾保持正常坐姿说话就行,但是后排用户的识别效果没有前排用户高。

  6、噪音很困扰

  除了以上问题外,还有个最重要的因素就是噪音,噪音有车内设备、车外风声等噪音,也有车内其他人声的噪音,会干扰使用者的识别效果,在噪音越高的情况下,唤醒成功的概率会逐渐降低,唤醒效果:安静》低噪》高噪。这时候我们可以控制正常声音分贝,保持一个良好的驾车环境,在有噪音时,可适当提高对车机发出指令的音量来提高识别准确率
参考技术B 对于数字语音识别0-9,一般会出现噪声干扰、距离过近或者过远、杂音干扰等问题。此外在实际应用中也可能出现用户说话速度过快、发音不准确等问题。 参考技术C 数字语音识别0-9常出现的问题包括:噪声干扰、背景噪声、距离模型不匹配以及数字本身的发音差异等。此外,由于不同发音者的发音习惯、语言习惯等因素,在0-9数字识别中也容易出现准确率下降的问题。 参考技术D 您好,我可以为您提供数字语音识别0-9常出现的问题的服务。例如,您可以问我关于0-9的数字的定义、用法、算术运算等问题,我可以为您提供完整的回答。此外,我还可以为您提供其他相关的服务,例如您可以问我有关数字的历史、文化、社会等方面的问题,我也可以为您提供完整的回答。

将语音识别限制为字母数字单词

【中文标题】将语音识别限制为字母数字单词【英文标题】:Restrict speech Recognition to Alpha-numeric words 【发布时间】:2014-07-16 10:53:54 【问题描述】:

我想使用语音识别来处理我的应用程序中的命令。我知道 在我的应用程序的任何给定点上,有效的命令是什么 那时想限制语音识别的结果 匹配反对。

我的意思是在我的应用程序中 .. 有效单词只有数字加字母。我的意思是像A13FG6 这样的数字。

我愿意 希望能够将语音识别限制为仅尝试匹配 alphaNumeric 话..限制词汇会增加成功的机会..

如何修改给定的代码以满足我的要求

提前谢谢..

import java.util.ArrayList;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognitionListener;
import android.speech.RecognizerIntent;
import android.speech.SpeechRecognizer;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity 

    private TextView mText;
    private SpeechRecognizer sr;
    private static final String TAG = "MyStt3Activity";

    @Override
    public void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button speakButton = (Button) findViewById(R.id.btn_speak);
        mText = (TextView) findViewById(R.id.textView1);

        Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
        intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
                RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
       intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
           getClass().getPackage().getName());

        SpeechRecognizer recognizer = SpeechRecognizer
                .createSpeechRecognizer(this.getApplicationContext());
        RecognitionListener listener = new RecognitionListener() 
            @Override
            public void onResults(Bundle results) 
                ArrayList<String> voiceResults = results
                        .getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
                if (voiceResults == null) 
                    Log.e(TAG, "No voice results");
                 else 
                    Log.d(TAG, "Printing matches: ");
                    for (String match : voiceResults) 
                        Log.d(TAG, match);
                        mText.setText("results: " + match);
                    
                
            

            @Override
            public void onReadyForSpeech(Bundle params) 
                Log.d(TAG, "Ready for speech");
            

            @Override
            public void onError(int error) 
                Log.d(TAG,
                        "Error listening for speech: " + error);
            

            @Override
            public void onBeginningOfSpeech() 
                Log.d(TAG, "Speech starting");
            

            @Override
            public void onBufferReceived(byte[] buffer) 
                // TODO Auto-generated method stub

            

            @Override
            public void onEndOfSpeech() 
                // TODO Auto-generated method stub

            

            @Override
            public void onEvent(int eventType, Bundle params) 
                // TODO Auto-generated method stub

            

            @Override
            public void onPartialResults(Bundle partialResults) 
                // TODO Auto-generated method stub

            

            @Override
            public void onRmsChanged(float rmsdB) 
                // TODO Auto-generated method stub

            
        ;
        recognizer.setRecognitionListener(listener);
        recognizer.startListening(intent);


/*      speakButton.setOnClickListener(new OnClickListener() 

            @Override
            public void onClick(View v) 

                Intent intent = new Intent(
                        RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
                // intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
                intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, "en-US");
                intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
                        getClass().getPackage().getName());

                intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 5);
                sr.startListening(intent);

                // startActivityForResult(intent, 1010);
                Log.i("111111", "11111111");
            
        );*/
    

【问题讨论】:

您有没有找到更好的解决方案? google 是如何做到“ok google”的? 不,我没有找到任何解决方案。 【参考方案1】:

您不能在 Android Speech API 中限制识别,它不支持语法。但是,您可以尝试CMUSphinx。请参阅链接下的示例,您可以定义一个仅使用字母数字的语法,它将离线工作,因此响应会非常快,您也可以调整准确性以获得最佳匹配。

【讨论】:

以上是关于数字语音识别0-9常出现的问题的主要内容,如果未能解决你的问题,请参考以下文章

语音识别DTW的0-9数字语音识别matlab源码

语音识别基于DTW的0-9数字语音识别matlab源码含 GUI

语音识别基于matlab GUI HMM 0~9数字和汉字语音识别(带面板)含Matlab源码 1716期

语音识别基于matlab GUI HMM 0~9数字语音识别含Matlab源码 1393期

语音识别基于傅立叶变换0-9的数字语音识别matlab源码

语音识别基于matlab GUI HMM 0~9数字和汉字语音识别(带面板)含Matlab源码 1716期