vue实现录音并转文字功能,包括PC端web,手机端web

embedded/2024/10/18 16:49:32/

vue实现录音并转文字功能,包括PC端,手机端和企业微信自建应用端

不止vue,不限技术栈,vue2、vue3、react、.net以及原生js均可实现。

原理

浏览器实现录音并转文字最快捷的方法是通过Web Speech API来实现,这是浏览器内置示例的api方法,可以直接调用,无需引入任何依赖包,唯一需要注意的是浏览器的兼容性,具体可查看官方文档
链接: Web Speech API

实现过程

<template><button @click="toggleSpeechRecognition ">{{ isSpeaking?'开始':'停止' }}录音</button><span>{{ prompt }}</span>
</template>
<script setup lang="ts">import { ref } from 'vue'//测试语音识别const prompt = ref('')const isSpeaking = ref(false);let recognition: any = null;let finalResult = ''; // 保存最终结果的变量let interimResult = ''; // 保存中间结果的变量const toggleSpeechRecognition = () => {if (!recognition) {recognition = new webkitSpeechRecognition();recognition.continuous = true;recognition.interimResults = true;recognition.lang = 'zh-CN';recognition.onresult = event => {interimResult = ''; // 清空中间结果for (let i = event.resultIndex; i < event.results.length; i++) {if (event.results[i].isFinal) {finalResult += event.results[i][0].transcript;} else {interimResult += event.results[i][0].transcript;}}prompt.value = finalResult + interimResult;};}if (isSpeaking.value) {finalResult = '';recognition.stop();} else {recognition.start();}isSpeaking.value = !isSpeaking.value;};
</script>

避坑指南

1.http问题导致录音失败:我相信99.9%的人本地开发环境启动的都是http,当前主流浏览器出于安全考虑禁止http的应用调用麦克风,需要在浏览器高级设置中添加白名单,具体操作为:

chrome浏览器地址栏中输入chrome://flags/#unsafely-treat-insecure-origin-as-secure,回车,在Insecure origins treated as secure这栏中添加你的应用地址,将该选项置为Enabled,然后点击右下角弹出的Relaunch按钮。
edge浏览器打开:edge://flags/#unsafely-treat-insecure-origin-as-secure,同上。
在这里插入图片描述
这里需要注意的是,你的电脑需要有音频录入设备,检查顺序为:先检查电脑是否有音频录入设备(是否正常)-> 再添加浏览器安全白名单。

2.应用是否被其他规则限制调用麦克风

1.iframe内部应用不允许直接调用麦克风,只能通过postMassage实现iframe内外部通信,调用外部系统的方法来调用麦克风,具体我会在单独的文章将iframe内外部通信;
2.如果应用嵌在企微工作台或类似的平台中,麦克风权限首先受企微等平台的权限管控,一般都需要调用企微官方api来实现类似功能。


http://www.ppmy.cn/embedded/17522.html

相关文章

新建云仓库

1.GitHub新建云仓库&#xff1a; LICENSE:开源许可证&#xff1b;README.md:仓库说明文件&#xff1b;开源项目&#xff1b;cocoaPodsName.podspec: CocoaPods项目的属性描述文件。 2.Coding新建云仓库&#xff1a; 备注&#xff1a; Coding新建项目&#xff1a;

设计模式- 迭代器模式(Iterator Pattern)结构|原理|优缺点|场景|示例

迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为设计模式&#xff0c;它提供了一种方法来顺序访问聚合对象&#xff08;容器&#xff09;中的元素&#xff0c;而又不暴露其实现细节。通过使用迭代器&#xff0c;用户可以从不同类型的聚合对象中以统一的方式遍历…

vue3+node.js+mysql+ant design实现表格的查询功能

今日主要分享如何运用vue、nodejs、mysql及ant design构建表格数据查询功能&#xff0c;这也是众多项目开发者关注的问题。最关键在于前端与后端的协作&#xff0c;后端数据则通过nodejs编写。尽管涉及多项技术&#xff0c;看似复杂&#xff0c;但实际操作却并非困难。当然&…

Java面试之四种访问权限

在Java中&#xff0c;访问权限控制是通过四种不同的访问修饰符实现的&#xff1a; &#xff08;访问权限就像是门上的锁&#xff0c;不同的修饰符代表着不同的锁类型&#xff09; 1、public&#xff1a; public是最开放的访问级别修饰符。使用public修饰的成员可以被该类所在…

Linux多进程(二)进程通信方式三 共享内存

共享内存提供了一个在多个进程间共享数据的方式&#xff0c;它们可以直接访问同一块内存区域&#xff0c;因此比使用管道或消息队列等通信机制更高效。在多进程程序中&#xff0c;共享内存通常与信号量一起使用&#xff0c;以确保对共享内存的访问是线程安全的。 一、打开/创建…

Docker数据卷的使用

1 数据卷概念 数据卷是一个共给容器使用的特殊文件目录&#xff0c;位于容器中&#xff0c;可以将宿主机的目录挂载到数据卷上&#xff0c;对数据卷的修改立刻可见&#xff0c;并且更新数据卷不会影响到容器的使用&#xff0c;从而实现数据在主机和容器之间共享。 2 创建数据…

【Vision Pro应用】分享一个收集Apple Vision Pro 应用的网站

您是否也觉得 Vision Pro 应用程序商店经常一遍又一遍地展示相同的几个 VisionOS 应用程序?许多有趣、好玩的应用程序似乎消失得无影无踪,让人很难发现它们。为了帮助大家更轻松地探索和体验最新、最有趣的 Vision Pro 应用程序,这里分享一个网站https://www.findvisionapp.…

1分钟掌握 Python 函数参数

任何编程语言函数都是非常重要的一部分&#xff0c;而在进行函数调用时&#xff0c;了解函数的参数传递方式是非常有必要的。Python中支持哪些传参方式呢&#xff1f; Python中的传参方式是比较灵活的&#xff0c;主要包括以下六种&#xff1a; 按照位置传参按照关键字传参默…