当前位置:首页 > VUE

vue实现语音识别demo

2026-01-20 06:11:27VUE

使用 Web Speech API 实现语音识别

Vue 可以结合浏览器原生支持的 Web Speech API 实现语音识别功能。以下是一个简单的实现示例:

安装依赖(可选)
若需扩展功能,可安装 vue-web-speech 等插件:

npm install vue-web-speech

基础实现代码
在 Vue 组件中直接调用 API:

<template>
  <div>
    <button @click="startRecognition">开始录音</button>
    <button @click="stopRecognition">停止</button>
    <p>识别结果: {{ transcript }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      recognition: null,
      transcript: ''
    }
  },
  mounted() {
    this.initRecognition()
  },
  methods: {
    initRecognition() {
      const SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition
      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
          }
        }
      }
    },
    startRecognition() {
      this.recognition.start()
    },
    stopRecognition() {
      this.recognition.stop()
    }
  }
}
</script>

使用第三方库(增强兼容性)

对于需要更好兼容性或更多功能的场景,推荐使用以下方案:

安装 annyang 库:

npm install annyang

示例实现:

<script>
import annyang from 'annyang'

export default {
  data() {
    return {
      commands: {
        'hello': () => alert('Hello world!'),
        'show me *tag': (tag) => this.search(tag)
      }
    }
  },
  mounted() {
    if (annyang) {
      annyang.addCommands(this.commands)
      annyang.start()
    }
  },
  methods: {
    search(tag) {
      console.log('Searching for:', tag)
    }
  }
}
</script>

注意事项

  1. 浏览器兼容性
    Web Speech API 目前仅 Chrome、Edge、Safari 支持较好,需添加前缀(如 webkitSpeechRecognition

  2. HTTPS 限制
    语音识别功能通常要求网页运行在 HTTPS 环境下

  3. 用户授权
    首次使用需获取麦克风权限,建议添加权限请求提示

  4. 多语言支持
    可通过设置语言参数支持中文等语言:

    this.recognition.lang = 'zh-CN'
  5. 错误处理
    建议添加错误监听:

    vue实现语音识别demo

    this.recognition.onerror = (event) => {
      console.error('识别错误:', event.error)
    }

完整项目可参考 GitHub 上的 vue-speech-recognition 等开源实现。

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

相关文章

vue 指令实现

vue 指令实现

Vue 指令实现 Vue 指令是 Vue.js 提供的特殊属性,用于在 DOM 元素上添加特殊行为。指令以 v- 前缀开头,例如 v-model、v-if、v-for 等。以下是实现自定义指令和常用内…

vue实现拖放

vue实现拖放

Vue 实现拖放功能 Vue 中实现拖放功能通常可以通过 HTML5 的原生拖放 API 或第三方库(如 vuedraggable)来实现。以下是两种方法的详细说明。 使用 HTML5 原生拖放 A…

vue 实现滚动

vue 实现滚动

实现滚动的基本方法 在Vue中实现滚动效果可以通过多种方式完成,包括使用原生JavaScript、CSS或第三方库。以下是一些常见的方法: 使用window.scrollTo方法实现页面滚动 可以通…

vue实现hover

vue实现hover

Vue 实现 hover 效果的方法 在 Vue 中实现 hover 效果可以通过多种方式实现,包括使用 CSS、Vue 指令或事件监听。以下是几种常见的方法: 使用 CSS :hover 伪类 通…

vue实现定位

vue实现定位

Vue 中实现定位的方法 在 Vue 中实现定位可以通过以下几种方式: 使用 CSS 定位 通过 CSS 的 position 属性实现定位,Vue 中可以直接在组件的 <style>…

vue实现定时

vue实现定时

Vue 实现定时功能的方法 使用 setInterval 和 clearInterval 在 Vue 中可以通过 setInterval 和 clearInterval 实现定时功能。在组件的 mou…