【问题标题】:Web speech api recognition word in sentenceWeb语音api识别句子中的单词
【发布时间】:2016-02-04 10:35:52
【问题描述】:

当我说出一个句子时,我尝试使用我的程序来识别一个特定的单词,它使用 Web 语音 API。

当我单独说出这个词时,我的程序运行良好,但是当我在一个句子中说出它时,我的程序无法运行。

谢谢你告诉我我的程序哪里出了问题。

<script>
    (function($)
    {
        var $btn = $('#btn');
        var $result = $('#result');
        var words = null;
        if ('webkitSpeechRecognition' in window)
        {
            var recognition = new webkitSpeechRecognition();
            recognition.lang = "fr-FR";
            recognition.continuous = false;
            recognition.interimResults = true;
            $btn.click(function(e)
            {
                e.preventDefault();
                $btn.removeClass('btn-primary');
                recognition.start();
            });
            recognition.onresult = function (event)
            {
                $result.text('');
                for (var i = event.resultIndex; i < event.results.length; i++)
                {
                    var transcript = event.results[i][0].transcript;
                    if (event.results[i].isFinal)
                    {
                        $result.text(transcript);
                        recognition.stop();
                        $btn.addClass('btn-primary');
                        words = transcript.split(' ');
                        if(words[0] == 'test')
                        {
                            // do something                   
                        }
                        return true;
                    }
                    else
                    {
                        $result.text($('#result').text() + event.results[i][0].transcript);
                    }
                }
            };
        }
        else{$btn.hide();}
    })(jQuery);
</script>

【问题讨论】:

    标签: webspeech-api


    【解决方案1】:

    当您执行words = transcript.split(' ') 时,您会将单词设为所有已识别单词的数组。然后,当您执行if(words[0] == 'test') 时,您只检查第一个单词,因此只有当您尝试识别的单词是第一个(或唯一一个)单词时,它才会起作用。

    而不是这个:

    if(words[0] == 'test')
    {
        // do something
    }
    

    试试这个:

    words.some(function (word) {
        if (word === 'test') {
    
            // do something
    
            return true;
        }
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-31
      • 1970-01-01
      • 2015-04-05
      • 2016-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多