[我正在尝试使SpeechRecognition在Firefox中工作,并了解到从上个月的2019年12月开始这是一个问题。
这是我从基本用法开始要遵循的代码
这是我在打字稿中的实现:
/**
* Start voice recognition.
*
* @param force (optional) force restart of listener service
*/
public async startVoiceRecognition(force?: boolean): Promise<void> {
console.log('Speech Recognition: ', window.SpeechRecognition, window.webkitSpeechRecognition)
// **START New Code following example in link above**
window.SpeechRecognition = window.webkitSpeechRecognition || window.SpeechRecognition;
if ((window.webkitSpeechRecognition) && this.fSpeechRecognitionRunning) {
// speech recognition API supported
console.log('API Supported');
this.recognition = new window.SpeechRecognition();
} else {
// speech recognition API not supported
console.log('API Not Supported');
return;
}
// **END New Code following example in link above**
// **Original Code**
// Check if Speech Recognition is available in this browser
**if (!(window.webkitSpeechRecognition) && !this.fSpeechRecognitionRunning) {
// console.log('Error: Speech not supported');
return;
}**
}
我一直得到的是:
错误错误:“未捕获(承诺):TypeError:webkitSpeechRecognition不是构造函数
我知道它在粗体行中,因为当我仅用SpeechRecognition换出webkitSpeechRecognition时,对于其他项我仍然会遇到相同的错误...
错误错误:“未捕获(承诺):TypeError:SpeechRecognition不是构造函数
最后,这是我的polyfill.ts ...
declare global {
interface Window {
AudioContext: typeof window.AudioContext;
webkitAudioContext: typeof window.AudioContext;
webkitSpeechRecognition: typeof window.SpeechRecognition;
}
}
根据MDN [https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition/SpeechRecognition],只有Chrome支持语音识别。 (截至2020年1月)