当前位置:首页 > 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. 错误处理
    建议添加错误监听:

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

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

vue实现语音识别demo

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

相关文章

vue实现tab换行

vue实现tab换行

Vue实现Tab切换的常见方法 使用Vue实现Tab切换功能可以通过多种方式完成,以下是几种常见的方法: 动态组件结合v-if或v-show 通过v-if或v-show控制不同Tab内容的显示…

vue为啥能实现监听

vue为啥能实现监听

Vue 实现监听的原理 Vue 的监听能力主要基于其响应式系统,该系统通过数据劫持和依赖收集实现。当数据变化时,系统能自动触发视图更新或执行回调函数。 核心机制:Object.defineProp…

vue实现人脸识别比对

vue实现人脸识别比对

Vue 实现人脸识别比对的方法 使用现成的人脸识别 API 通过调用第三方人脸识别 API(如 Face++、百度 AI、腾讯云等)实现比对功能。注册开发者账号获取 API Key 和 Secret,…

vue如何实现放大缩小

vue如何实现放大缩小

Vue实现放大缩小功能的方法 在Vue中实现元素的放大缩小功能,可以通过CSS变换、第三方库或直接操作DOM样式来实现。以下是几种常见的方法: 使用CSS transform属性 通过绑定Vue的d…

课程表vue实现

课程表vue实现

实现课程表的Vue组件 创建课程表需要设计数据结构、布局和交互逻辑。以下是一个基于Vue 3的实现方案: 数据结构设计 const timetableData = ref([ { ti…

vue如何实现到期提醒

vue如何实现到期提醒

实现 Vue 到期提醒功能 使用计算属性计算剩余时间 在 Vue 组件中定义一个计算属性,计算目标日期与当前日期的差值。通过 Date 对象获取时间戳并计算剩余天数或小时数。 computed: {…