SpeechRecognition:start() 方法
Web Speech API 的 start() 方法启动语音识别服务,以监听传入的音频(来自麦克风或音频轨道),并返回识别结果。
语法
start()
start(audioTrack)
参数
audioTrack可选 实验性-
一个
MediaStreamTrack实例,用于执行语音识别。如果未指定,服务将尝试识别用户麦克风的音频。
返回值
无(undefined)。
异常
InvalidStateErrorDOMException-
如果指定了
audioTrack并且以下一个或两个条件成立,则抛出异常- 轨道的
kind属性不是audio。 - 轨道的
readyState属性不是live。
- 轨道的
示例
识别来自麦克风的语音
在我们的 语音颜色更换器 示例中,我们使用 SpeechRecognition() 构造函数创建一个新的 SpeechRecognition 对象实例。稍后,我们在一个 <button> 上创建一个 click 事件处理程序,以便在点击该按钮时,我们启动语音识别服务并等待用户的麦克风输入音频。
const recognition = new SpeechRecognition();
const diagnostic = document.querySelector(".output");
const bg = document.querySelector("html");
const startBtn = document.querySelector("button");
startBtn.onclick = () => {
recognition.start();
console.log("Ready to receive a color command.");
};
当成功识别出结果时,会触发 result 事件。我们通过获取返回的 results 列表中的第一个 SpeechRecognitionResult 的第一个 SpeechRecognitionAlternative 的 transcript 来从事件对象中提取所说的颜色。然后,我们将 <html> 元素背景颜色设置为该颜色。
recognition.onresult = (event) => {
const color = event.results[0][0].transcript;
diagnostic.textContent = `Result received: ${color}`;
bg.style.backgroundColor = color;
};
识别来自音频轨道的语音
此代码(摘自我们的 音频轨道识别演示)展示了如何识别音频轨道的语音。首先,我们创建一个新的 SpeechRecognition 实例并将其 lang 设置为 en-US。然后,我们获取一个指向 <button> 元素和用于输出结果及诊断信息的 <p> 元素的引用。
const recognition = new SpeechRecognition();
recognition.lang = "en-US";
const startBtn = document.querySelector("button");
const diagnostic = document.querySelector(".output");
接下来,我们向 <button> 添加一个 click 事件处理程序。当点击该按钮时,我们使用 Audio() 构造函数创建一个新的 <audio> 元素,并将其加载一个 MP3 文件。一旦 MP3 准备好播放(由 canplay 事件确定),我们使用 captureStream() 方法将其捕获为 MediaStream,然后使用 getAudioTracks() 提取其音频 MediaStreamTrack。
然后我们播放音频(这是识别发生的必需条件),并将 MediaStreamTrack 传递给 start() 方法来启动识别。
startBtn.addEventListener("click", () => {
diagnostic.textContent = "";
console.log("Loading audio track");
const audioElement = new Audio("cheese-on-toast.mp3");
audioElement.addEventListener("canplay", () => {
const stream = audioElement.captureStream();
const audioTrack = stream.getAudioTracks()[0];
audioElement.play();
recognition.start(audioTrack);
console.log("Recognition started");
});
});
为了输出识别到的音频,我们监听 result 事件。当该事件触发时,我们获取返回的 results 列表中的第一个 SpeechRecognitionResult 的第一个 SpeechRecognitionAlternative 的 transcript。我们将识别出的文本输出到输出 <p> 元素,并将置信度评分记录到控制台。
recognition.addEventListener("result", (event) => {
const speech = event.results[0][0].transcript;
diagnostic.textContent = `Speech recognized: ${speech}.`;
console.log(`Confidence: ${event.results[0][0].confidence}`);
});
规范
| 规范 |
|---|
| Web Speech API # dom-speechrecognition-start |
浏览器兼容性
加载中…