vue怎么实现语音识别
实现语音识别的核心步骤
在Vue项目中集成语音识别功能,可通过浏览器原生API或第三方库实现。以下是两种主流方案的具体实现方法:
使用Web Speech API(浏览器原生方案)
浏览器提供的SpeechRecognition接口是基础解决方案,需注意兼容性(Chrome、Edge支持较好):
// 在Vue组件中
export default {
data() {
return {
recognition: null,
transcript: '',
isListening: false
}
},
mounted() {
const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition
if (SpeechRecognition) {
this.recognition = new SpeechRecognition()
this.recognition.continuous = true
this.recognition.interimResults = true
this.recognition.onresult = (event) => {
let interimTranscript = ''
for (let i = event.resultIndex; i < event.results.length; i++) {
const transcript = event.results[i][0].transcript
if (event.results[i].isFinal) {
this.transcript += transcript
} else {
interimTranscript += transcript
}
}
}
}
},
methods: {
toggleListening() {
if (this.isListening) {
this.recognition.stop()
} else {
this.recognition.start()
}
this.isListening = !this.isListening
}
}
}
模板部分:
<button @click="toggleListening">
{{ isListening ? '停止' : '开始' }}录音
</button>
<p>识别结果: {{ transcript }}</p>
使用第三方库(如annyang)
对于需要快速集成或更复杂控制的场景,可使用语音识别库:
-
安装依赖:
npm install annyang -
组件实现:
import annyang from 'annyang'
export default { data() { return { commands: { 'hello': () => alert('Hello world!'), 'search *term': (term) => this.search(term) }, isSupported: false } }, mounted() { this.isSupported = annyang.isSupported() if (this.isSupported) { annyang.addCommands(this.commands) } }, methods: { startListening() { annyang.start({ autoRestart: true, continuous: true }) }, stopListening() { annyang.abort() } } }
模板示例:
```html
<button v-if="isSupported" @click="startListening">开始语音控制</button>
<button v-if="isSupported" @click="stopListening">停止</button>
关键注意事项
- 浏览器权限:首次使用需用户授权麦克风访问
- 生产环境建议:重要场景应结合后端验证识别结果
- 移动端适配:iOS有特殊限制,需用户主动交互触发
- 错误处理:添加
onerror事件监听处理识别错误
两种方案各有优劣:Web Speech API无需额外依赖但功能有限;第三方库扩展性强但增加包体积。根据项目需求选择合适方案即可。







