主题
实现语音文字互转
Web Speech API
Web Speech API 是一组浏览器 API,允许开发者在 Web 应用程序中集成语音识别和语音合成功能。这些 API 的引入标志着浏览器开始支持本地端的语音交互能力,不仅改善了用户体验,还为开发者提供了更多创新的可能性。
SpeechSynthesis(语音合成)
基础使用
开始播放, 播放完自动结束
js
const synth = window.speechSynthesis;
const utterance = new SpeechSynthesisUtterance();
// 设置语音属性
utterance.text = '这里设置播放的内容';
// utterance.lang = 'zh-CN'; // 不设置在中英文混合时更流畅
utterance.volume = 1; // 音量,区间范围是`0`到`1`,默认是`1`。
utterance.rate = 1; // 语速,默认值是`1`,范围是`0.1`到`10`,表示语速的倍数,例如`2`表示正常语速的两倍。
utterance.pitch = 1; // 音调,范围从`0`(最小)到`2`(最大)。默认值为`1`。
// 开始播放
synth.speak(utterance);
手动结束, 调用 cancel()
方法
js
synth.cancel();
方法
speak(utterance)
开始播放。cancel()
结束播放。pause()
暂停播放。resume()
恢复暂停的语音。
事件监听
onstart
语音合成开始时候的回调。onpause
语音合成暂停时候的回调。onresume
语音合成重新开始时候的回调。onend
语音合成结束时候的回调。
SpeechRecognition(语音识别)
基础使用
js
// 创建语音识别对象
const recognition = new webkitSpeechRecognition();
recognition.lang = 'en-US'; // 设置识别语言为英语
recognition.onresult = function(event) {
// 获取识别结果文本
const transcript = event.results[0][0].transcript;
console.log('识别结果:', transcript);
};
// 默认情况下,语音识别在识别到一段语音后会停止。设置为连续语音识别模式
recognition.continuous = true;
recognition.start(); // 开始识别
在这个示例中,首先实例化了SpeechRecognition对象。通过onresult事件监听识别成功的结果,当识别成功时,从事件对象中获取到识别出的文本并打印出来。最后调用start方法开启语音识别功能,此时浏览器会请求用户授权使用麦克风。
属性
grammars
用于存储一组语法规则,可以通过 addFromString 方法添加语法规则。lang
设置或获取语音识别的语言interimResults
如果设置为 true,则在识别过程中会提供临时结果。如果为 false,则只提供最终结果maxAlternatives
设置语音识别返回的替代结果的最大数量。默认值为 1,表示只返回最可能的结果continuous
如果设置为 true,则识别会持续运行直到显式停止。如果为 false,识别会在单次语音输入后自动停止
方法
start()
开始识别。stop()
停止识别。abort()
结束识别。
事件监听
onresult
当识别结果可用时触发的事件处理程序。事件对象的 results 属性包含识别结果onaudiostart
当开始录制音频时触发的事件处理程序onsoundstart
当检测到声音时触发的事件处理程序onspeechstart
当检测到用户开始说话时触发的事件处理程序onspeechend
当用户停止说话时触发的事件处理程序onaudioend
当音频录制停止时触发的事件处理程序onend
当语音识别结束时触发的事件处理程序onerror
当语音识别发生错误时触发的事件处理程序。事件对象的 error 属性包含错误信息onnomatch
当语音识别没有匹配到任何结果时触发的事件处理程序onsoundend
当检测到的声音停止时触发的事件处理程序