SpeechRecognition
接口捕获麦克风输入并转换为文本,用SpeechSynthesis
接口朗读指定文字,需注意浏览器兼容性和用户授权。在HTML中实现语音功能,主要通过浏览器提供的API和HTML5原生标签完成,以下是四种主流方法及详细实现方案:
Web Speech API(语音合成)
用途:让浏览器“朗读文本”(文字转语音)
适用场景:阅读助手、语音提示、无障碍访问
优点:无需预录音频,动态生成语音
缺点:浏览器兼容性有限(Chrome/Firefox/Edge支持,Safari部分支持)
<button onclick="speakText()">点击朗读</button> <script> function speakText() { // 创建语音对象 const speech = new SpeechSynthesisUtterance(); speech.text = "欢迎访问我们的网站!"; // 设置朗读文本 speech.lang = 'zh-CN'; // 中文普通话 speech.rate = 1.0; // 语速(0.1~10) // 调用浏览器语音引擎 window.speechSynthesis.speak(speech); } </script>
关键参数:
text
:要朗读的文本lang
:语言代码(如en-US
、ja-JP
)volume
:音量(0~1)- 通过
speechSynthesis.getVoices()
获取浏览器支持的语音库
Web Speech API(语音识别)
用途:将用户语音转为文字(语音转文本)
适用场景:语音搜索、语音输入表单
优点:实时识别,无需服务器处理
缺点:需用户授权麦克风,仅HTTPS环境可用
<button onclick="startListening()">开始录音</button> <p id="result">识别结果将显示在这里</p> <script> function startListening() { // 初始化语音识别 const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)(); recognition.lang = 'zh-CN'; // 设置语言 // 监听识别结果 recognition.onresult = (event) => { const transcript = event.results[0][0].transcript; document.getElementById('result').textContent = transcript; }; recognition.start(); // 开始识别 } </script>
注意事项:
- 必须通过HTTPS协议部署
- 首次使用需用户授权麦克风权限
- 支持连续识别需设置
recognition.continuous = true
HTML5 Audio标签 + 预录音频
用途:播放预录制的语音文件
适用场景:固定提示音、背景音乐、按钮音效
优点:兼容所有现代浏览器,支持MP3/WAV等格式
缺点:需提前录制音频文件
<audio id="myAudio" src="welcome.mp3" preload="auto"></audio> <button onclick="playAudio()">播放欢迎语音</button> <script> function playAudio() { const audio = document.getElementById('myAudio'); audio.play(); // 播放音频 // 暂停用 audio.pause() } </script>
优化技巧:
- 添加
controls
属性显示播放控件(如进度条) - 用
preload="auto"
提前加载音频 - 通过
<source>
标签兼容多格式:<audio controls> <source src="welcome.mp3" type="audio/mpeg"> <source src="welcome.ogg" type="audio/ogg"> </audio>
第三方语音服务API
用途:复杂语音处理(如实时翻译、情感分析)
适用场景:多语言翻译、智能客服
代表服务:Google Cloud Speech-to-Text、Azure Cognitive Services
优点:功能强大,支持高级特性
缺点:需网络请求,可能产生费用
// 示例:调用Google语音识别API(需替换API_KEY) async function recognizeSpeech(audioFile) { const response = await fetch( `https://speech.googleapis.com/v1/speech:recognize?key=API_KEY`, { method: "POST", body: JSON.stringify({ audio: { content: audioFile }, config: { languageCode: "zh-CN" } }) } ); const data = await response.json(); console.log(data.results[0].alternatives[0].transcript); }
选择建议
- 基础场景:用
<audio>
标签播放预录音频 - 动态文本朗读:选Web Speech API的
SpeechSynthesis
- 语音输入:用
SpeechRecognition
(注意HTTPS限制) - 企业级需求:接入第三方API实现高级功能
安全与兼容性提醒
- 语音识别必须通过HTTPS协议运行
- 检测浏览器兼容性:
if ('SpeechRecognition' in window || 'webkitSpeechRecognition' in window) { // 支持语音识别 }
- 用户隐私:明确告知麦克风使用目的,按需请求权限
引用说明: 参考以下权威来源:
- MDN Web Docs – Web Speech API
- W3C Specification – Speech API
- Google Developers – Web Speech Recognition
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/27462.html