当前位置:首页 > VUE

vue实现语音唤醒

2026-01-16 19:37:43VUE

实现语音唤醒的基本原理

语音唤醒通常通过监听麦克风输入,检测特定关键词或短语触发操作。Vue中可结合Web Speech API或第三方库实现。

使用Web Speech API实现

Web Speech API的SpeechRecognition接口可用于语音识别。需注意浏览器兼容性(Chrome、Edge支持较好)。

// 在Vue组件中
export default {
  data() {
    return {
      recognition: null,
      isListening: false,
      wakeWord: '你好小助手' // 唤醒词
    }
  },
  mounted() {
    this.initSpeechRecognition()
  },
  methods: {
    initSpeechRecognition() {
      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) => {
        const transcript = Array.from(event.results)
          .map(result => result[0])
          .map(result => result.transcript)
          .join('')

        if (transcript.includes(this.wakeWord)) {
          console.log('唤醒词检测成功')
          // 触发唤醒后的操作
          this.onWakeUp()
        }
      }

      this.recognition.onerror = (event) => {
        console.error('语音识别错误:', event.error)
      }
    },
    startListening() {
      if (this.recognition) {
        this.recognition.start()
        this.isListening = true
      }
    },
    stopListening() {
      if (this.recognition) {
        this.recognition.stop()
        this.isListening = false
      }
    },
    onWakeUp() {
      // 唤醒后的处理逻辑
      console.log('系统已唤醒')
    }
  }
}

使用第三方库实现

对于更复杂的需求,可考虑以下库:

  1. annyang:轻量级语音识别库
    
    import annyang from 'annyang'

export default { mounted() { if (annyang) { const commands = { '你好小助手': () => this.onWakeUp() } annyang.addCommands(commands) annyang.start({ autoRestart: true, continuous: false }) } } }


2. vue-voice-command:Vue专用语音指令插件
需先安装:
```bash
npm install vue-voice-command

使用示例:

import VueVoiceCommand from 'vue-voice-command'

Vue.use(VueVoiceCommand, {
  lang: 'zh-CN',
  commands: {
    '你好小助手': {
      callback: () => console.log('唤醒成功')
    }
  }
})

优化唤醒体验的技巧

设置灵敏度阈值,避免误触发

// 在onresult回调中添加逻辑
let confidence = event.results[0][0].confidence
if (transcript.includes(this.wakeWord) && confidence > 0.7) {
  this.onWakeUp()
}

添加视觉反馈

<template>
  <div>
    <div v-if="isListening" class="mic-indicator">监听中...</div>
    <button @click="toggleListening">
      {{ isListening ? '停止' : '开始' }}语音唤醒
    </button>
  </div>
</template>

注意事项

  1. 用户需授权麦克风权限,首次使用需处理权限请求
  2. 中文识别需设置lang: 'zh-CN'
  3. 移动端可能存在省电模式限制,需提醒用户保持应用活跃
  4. 嘈杂环境可能影响识别率,建议添加降噪提示

以上方案可根据实际需求组合使用,Web Speech API适合基础需求,第三方库可简化开发流程。对于生产环境,建议结合后端语音处理服务提高准确性。

vue实现语音唤醒

标签: 语音vue
分享给朋友:

相关文章

vue实现安全免登录

vue实现安全免登录

Vue 实现安全免登录的方案 免登录功能通常通过持久化认证状态(如 Token)实现,但需兼顾安全性。以下是基于 Vue 的常见实现方案: 基于 Token 的免登录 登录成功后存储 Toke…

vue实现收起展开面板

vue实现收起展开面板

实现收起展开面板的方法 在Vue中实现收起展开面板功能可以通过多种方式完成,以下是几种常见的实现方法: 使用v-show或v-if控制显示隐藏 利用Vue的指令可以轻松实现面板的展开和收起:…

vue实现发送值接受值

vue实现发送值接受值

Vue 实现父子组件传值 父组件向子组件传值(props) 父组件通过 v-bind 或简写 : 向子组件传递数据。子组件通过 props 接收数据。 父组件代码: <templat…

vue实现上移下移插件

vue实现上移下移插件

实现上移下移功能的 Vue 插件 在 Vue 中实现列表项的上移和下移功能,可以通过自定义指令或组件封装的方式完成。以下是两种常见实现方式: 基于数组操作的通用方法 通过操作数组索引实现元素位置交…

用vue实现滑动输入条

用vue实现滑动输入条

使用 Vue 实现滑动输入条 使用原生 HTML5 input range 实现 在 Vue 模板中直接使用 <input type="range">,通过 v-model 绑定数据:…

vue实现一个tab栏

vue实现一个tab栏

Vue 实现 Tab 栏 基础实现(选项式 API) <template> <div class="tab-container"> <div class="t…