Да, есть вопросы, подобные этому, но они слишком старые ... Теперь грамматика полностью поддерживается в chrome.link: https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition/grammars
Я использую Web Speech API для реализации распознавания речи. Свойство Грамматика интерфейса SpeechRecognition возвращает и устанавливает коллекцию объектов SpeechGrammar, которые представляют грамматики, которые будут понятны текущему SpeechRecognition. Я использую последнее обновление Chrome, и «они» говорят, что в Chrome поддерживается грамматика.
В большинстве случаев, когда я говорю «Кто ты», веб-речь распознается как «Как дела». Как я могу задать предложение «Кто ты», например, для возможных вводов?
Я попробовал пару часов, безуспешно дергал себя за волосы ...
Вот код:
var SpeechRecognition = SpeechRecognition || webkitSpeechRecognition;
var SpeechGrammarList = SpeechGrammarList || webkitSpeechGrammarList;
var SpeechRecognitionEvent = SpeechRecognitionEvent || webkitSpeechRecognitionEvent;
var recognition = new SpeechRecognition();
var speechRecognitionList = new SpeechGrammarList();
recognition.grammars = speechRecognitionList;
recognition.lang = 'en-GB';
recognition.interimResults = false;
recognition.maxAlternatives = 1;
recognition.start();
recognition.onresult = function(event) {
var speechResult = event.results[0][0].transcript;
// We get speechResult to do something with it here
console.log('Confidence: ' + event.results[0][0].confidence);
}
recognition.onspeechend = function() {
recognition.stop();
console.log('Speech ended!');
}
recognition.onerror = function(event) {
console.log('Error occurred in recognition: ' + event.error);
}
recognition.onaudiostart = function(event) {
//Fired when the user agent has started to capture audio.
console.log('SpeechRecognition.onaudiostart');
}
recognition.onaudioend = function(event) {
//Fired when the user agent has finished capturing audio.
console.log('SpeechRecognition.onaudioend');
}
recognition.onend = function(event) {
//Fired when the speech recognition service has disconnected.
console.log('SpeechRecognition.onend');
}
recognition.onnomatch = function(event) {
//Fired when the speech recognition can't recognise speech
console.log('SpeechRecognition.onnomatch');
}
recognition.onsoundstart = function(event) {
//Fired when any sound — recognisable speech or not — has been detected.
console.log('SpeechRecognition.onsoundstart');
}
recognition.onsoundend = function(event) {
//Fired when no sound present
console.log('SpeechRecognition.onsoundend');
}
recognition.onspeechstart = function (event) {
//Fired when speech starts
console.log('SpeechRecognition.onspeechstart');
}
recognition.onstart = function(event) {
//Fired when the speech recognition service has begun listening
console.log('SpeechRecognition.onstart');
}