Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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
Javascript 网络语音API“;“检测已知单词”;_Javascript_Webspeech Api - Fatal编程技术网

Javascript 网络语音API“;“检测已知单词”;

Javascript 网络语音API“;“检测已知单词”;,javascript,webspeech-api,Javascript,Webspeech Api,我正在开发一个可以检测某些关键词的应用程序。我一直在使用谷歌的网络演讲 我可以录制用户的声音并打印出来,但我希望能够检测到某些单词 我似乎找不到这样做的方法。我发现了这个问题,但它链接到的答案中的站点不见了 有人能解释一下吗?任何帮助都会很好。干杯 var recognition=new-webkitSpeechRecognition();//谷歌语音识别启动 识别。连续=正确//因此,即使用户在说话时暂停,识别仍将继续 document.getElementById('startSpeech

我正在开发一个可以检测某些关键词的应用程序。我一直在使用谷歌的网络演讲

我可以录制用户的声音并打印出来,但我希望能够检测到某些单词

我似乎找不到这样做的方法。我发现了这个问题,但它链接到的答案中的站点不见了

有人能解释一下吗?任何帮助都会很好。干杯

var recognition=new-webkitSpeechRecognition();//谷歌语音识别启动
识别。连续=正确//因此,即使用户在说话时暂停,识别仍将继续
document.getElementById('startSpeech')。addEventListener('click',function(){
startSpeech();
});
document.getElementById('stopRecogniting')。addEventListener('click',function(){
停止识别();
});
var startSpeech=函数(){
var lang=['en-GB','United Kingdom'];
最终成绩单=“”;
recognition.lang=recognition.lang
recognition.start()//激活语音识别器
}
var=function(){
recognition.stop();//停止麦克风收听
返回;
}  
recognition.onresult=函数(事件){
console.log('event',event);
//此处理程序连接所有
//到目前为止收到的结果分为两部分:最终成绩单和临时成绩单
var临时_转录本=“”;
对于(var i=event.resultIndex;i0){
匹配关键词(最终成绩单);
}
};
函数换行符(s){
var two_line=/\n\n/g;
var one_line=/\n/g;
返回s.replace(两行“”)。replace(一行“
”); } 功能资本化{ var first_char=/\S/; 返回s.replace(第一个字符,函数(m){return m.toUpperCase();}); } var matchingKeyWords=函数(对话){ var关键字=[“权力”、“领带”、“想象”、“炸弹”、“饮料”、“内衣”、“机会”、“类型”、“历史”, “社会”、“收集”、“糖”] 对于(变量i=0;i
您绝对不能以任何方式修改API以附加字典或影响结果

但是您可以将结果归结为语音相似的单词,这些单词会影响代码的解释

此时,您似乎正在对某些单词执行“精确”匹配。因此,如果引擎认为它听到的是“泰语”而不是“领带”。。。这一结果不会产生一个匹配的结果

解决方案是在匹配逻辑中添加“模糊性”您考虑过像这样的图书馆吗?


通过在for loop内的matchingKeyWords函数中搜索“fuzzy string matching JS”或“拼音相似的JS”之类的内容,您可以找到更多的示例。请将关键字[1]更改为关键字[i],然后重试。同时将if条件更改为

if(conversation.indexof(keyWords[i]) > -1)

我知道这个问题已经问了八个月了,你可能已经找到了答案,但如果其他人还在找,我想你需要给这个应用一些“语法”来核对,比如:

var colors = [ 'aqua' , 'azure' , 'beige', 'bisque', 'black', 'blue', 'brown', 'chocolate', 'coral' ... ];
var grammar = '#JSGF V1.0; grammar colors; public <color> = ' + colors.join(' | ') + ' ;'
var colors=[‘水蓝’、‘天蓝’、‘米色’、‘浅色’、‘黑色’、‘蓝色’、‘棕色’、‘巧克力色’、‘珊瑚色’…];
var语法='#jsgfv1.0;语法色彩;public='+colors.join('|')+';'
MDN有一个Web语音API的演示,它与您尝试做的类似(如果我理解正确的话)。你大声朗读一个短语,它会告诉你它是否被理解


有一个Chromium bug使得使用语法变得毫无用处。这是上面提到的错误语法错误的一个很好的替代品。谢谢
var colors = [ 'aqua' , 'azure' , 'beige', 'bisque', 'black', 'blue', 'brown', 'chocolate', 'coral' ... ];
var grammar = '#JSGF V1.0; grammar colors; public <color> = ' + colors.join(' | ') + ' ;'