网络语音 api 识别句子中的单词
Web speech api recognition word in sentence
我试着用我的程序在我说一个句子时识别一个特定的词,它使用网络语音 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>
当您执行 words = transcript.split(' ')
时,您将单词设为所有已识别单词的数组。然后,当您执行 if(words[0] == 'test')
时,您只是在检查第一个单词,因此只有当您尝试识别的单词是第一个(或唯一的)单词时,它才会起作用。
而不是这个:
if(words[0] == 'test')
{
// do something
}
试试这个:
words.some(function (word) {
if (word === 'test') {
// do something
return true;
}
});
我试着用我的程序在我说一个句子时识别一个特定的词,它使用网络语音 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>
当您执行 words = transcript.split(' ')
时,您将单词设为所有已识别单词的数组。然后,当您执行 if(words[0] == 'test')
时,您只是在检查第一个单词,因此只有当您尝试识别的单词是第一个(或唯一的)单词时,它才会起作用。
而不是这个:
if(words[0] == 'test')
{
// do something
}
试试这个:
words.some(function (word) {
if (word === 'test') {
// do something
return true;
}
});