vue实现语音
Vue 实现语音功能
在 Vue 中实现语音功能通常涉及语音识别(Speech-to-Text)和语音合成(Text-to-Speech)。以下是具体实现方法:
语音识别(Speech-to-Text)
使用 Web Speech API 的 SpeechRecognition 接口实现语音输入:
// 在 Vue 组件中
export default {
data() {
return {
recognition: null,
transcript: '',
isListening: false
}
},
mounted() {
this.initRecognition()
},
methods: {
initRecognition() {
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition
if (!SpeechRecognition) {
console.error('浏览器不支持语音识别')
return
}
this.recognition = new SpeechRecognition()
this.recognition.continuous = true
this.recognition.interimResults = true
this.recognition.lang = 'zh-CN' // 设置语言
this.recognition.onresult = (event) => {
let interimTranscript = ''
let finalTranscript = ''
for (let i = event.resultIndex; i < event.results.length; i++) {
const transcript = event.results[i][0].transcript
if (event.results[i].isFinal) {
finalTranscript += transcript
} else {
interimTranscript += transcript
}
}
this.transcript = finalTranscript || interimTranscript
}
this.recognition.onerror = (event) => {
console.error('语音识别错误:', event.error)
}
},
toggleListening() {
if (this.isListening) {
this.recognition.stop()
} else {
this.recognition.start()
}
this.isListening = !this.isListening
}
}
}
语音合成(Text-to-Speech)
使用 Web Speech API 的 SpeechSynthesis 接口实现语音输出:
// 在 Vue 组件中
export default {
methods: {
speak(text) {
if ('speechSynthesis' in window) {
const utterance = new SpeechSynthesisUtterance(text)
utterance.lang = 'zh-CN' // 设置语言
utterance.rate = 1 // 语速
utterance.pitch = 1 // 音高
window.speechSynthesis.speak(utterance)
} else {
console.error('浏览器不支持语音合成')
}
}
}
}
第三方语音服务集成
如果需要更强大的功能,可以集成第三方语音服务:
-
百度语音识别
- 注册百度AI开放平台账号
- 获取API Key和Secret Key
- 使用axios调用百度语音REST API
-
阿里云智能语音交互
- 提供更专业的语音识别和合成服务
- 需要安装SDK或调用REST API
-
讯飞开放平台
- 提供高质量的语音识别和合成
- 支持多种语言和方言
注意事项
- 浏览器兼容性:Web Speech API在Chrome中支持最好,其他浏览器可能有兼容性问题
- HTTPS环境:部分API需要在HTTPS环境下才能正常工作
- 用户授权:语音识别需要用户授权麦克风权限
- 性能考虑:长时间语音识别可能消耗较多资源







