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

news/2024/5/8 20:06:20

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.mrgr.cn/p/53556560

相关文章

Abaqus压电材料分析

404Abaqus-Material: Piezoelectric behavior 压电本构方程:压电材料行为定义所需:密度(optional) 线弹性-刚度矩阵(S_ijkl or D_ijkl) Piezoelectric-压电应变常数矩阵 Dielectric(electric permittivity)-介电常数矩阵压电材料的主要特性参数压电常数: 压电常数是衡量材料压电…

力扣-54. 螺旋矩阵

1.题目 题目地址(54. 螺旋矩阵 - 力扣(LeetCode)) https://leetcode.cn/problems/spiral-matrix/ 题目描述 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]] 输出:[1,2,3,6,9,8,7,4,5]…

更易使用,OceanBase开发者工具 ODC 4.2.4 版本升级

亲爱的朋友们&#xff0c;大家好&#xff01;我们的ODC&#xff08;OceanBase Developer Center &#xff09;再次迎来了重要的升级V 4.2.4&#xff0c;这次我们诚意满满&#xff0c;从五个方面为大家精心打造了一个更加易用、贴心&#xff0c;且功能更强的新版本&#xff0c;相…

Redis基本命令

目录 一、包含String、Set数据类型的基本命令 1、添加一个键值对 2、获取key所关联的字符串值 3、同时设置多个key-value 4、获取多个key对应的值 运行结果 5、将给定的value追加到原值的末尾 追加后效果 6、删除单个key 7、同时删除多个key 8、查询包含某个字符的k…

ROS学习--添加依赖相关问题

在自定义话题接口时,步骤如下:新建msg文件夹,并在文件夹下新建xxx.msg 在xxx.msg下编写消息内容并保存 在CmakeLists.txt添加依赖和msg文件目录 在package.xml中添加xxx.msg所需的依赖 编译功能包即可生成python与c++头文件其中在CmakeLists.txt中添加依赖和msg文件目录时需…

小程序 rich-text 解析富文本 图片过大时如何自适应?

在微信小程序中&#xff0c;用rich-text 解析后端返回的数据&#xff0c;当图片尺寸太大时&#xff0c;会溢出屏幕&#xff0c;导致横向出现滚动 查看富文本代码 图片是用 <img 标签&#xff0c;所以写个正则匹配一下图片标签&#xff0c;手动加上样式即可 // content 为后…

界面组件DevExpress Blazor UI v23.2 - 支持.NET 8、全新的项目模版

DevExpress Blazor UI组件使用了C#为Blazor Server和Blazor WebAssembly创建高影响力的用户体验&#xff0c;这个UI自建库提供了一套全面的原生Blazor UI组件&#xff08;包括Pivot Grid、调度程序、图表、数据编辑器和报表等&#xff09;。 DevExpress Blazor控件目前已经升级…

Unity入门实践小项目

必备知识点 必备知识点——场景切换和游戏退出 必备知识点——鼠标隐藏锁定相关 必备知识点——随机数和Unity自带委托 必备知识点——模型资源的导入 实践项目 需求分析 UML类图 代码和资源导入 开始场景 场景装饰 拖入模型和添加脚本让场景动起来 开始界面 先用自己写的GUI…

ios上架驳回记录

原文 Review Environment Submission ID: b097ac72-b1de-4abe-b5a9-81f507bb7e64 Review date: April 25, 2024 Version reviewed: 1.2.3 Guideline 4.3(a) - Design - Spam We noticed your app shares a similar binary, metadata, and/or concept as apps submitted to th…

卡诺图学习

目录1、最小项2、最小项与卡诺图之间转换卡诺图根据最小项填写卡诺图根据逻辑函数填写卡诺图3、卡诺图化简方法 1、最小项逻辑函数表达式可以使用其最小项相加来表示最小项的定义 一个函数的某个乘积项包含了函数的全部变量,其中每个变量都以原变量或反变量的形式出现,且仅出…

SpringBoot---------整合Redis

目录 第一步&#xff1a;引入依赖 第二步&#xff1a;配置Redis信息 第三步&#xff1a;选择Spring Data Redis进行操作Redis数据库 ①操作String类型数据&#xff08;用的少&#xff09; ②操作Object类型数据&#xff08;重要&#xff01;&#xff01;&#xff01;&#x…

jdk版本冲突,java.lang.UnsupportedClassVersionError: JVMCFRE003

主要是编辑器所用的jdk版本和项目用的不一致导致的&#xff0c;虽然编译通过了&#xff0c;但是运行是会报错 选好后点击Apply点击ok&#xff0c;然后重新编译一遍项目就可以了

ESP32引脚笔记

ESP32引脚笔记 ESP32建议使用的引脚 可参考下图Euno开发板引脚模拟输入可采用: 32、33、34、35、36、39 数字输出可采用: 上图右侧引脚 SPI : mosi-23, miso-19, clk-18, cs-5 IIC: scl-22, sda-21仅输入引脚 GPIO34~39是GPIs–仅输入的管脚。这些引脚没有内部上拉或下拉电阻。…

pip成功安装gdal的whl文件后,PyCharm仍报错No module named ‘osgeo’

在根据网上的教程,成功pip install 对应的whl文件后,发现PyCharm仍然显示无法调用osgeo。 出现这样的问题,首先关注自己使用的环境,例如我使用的环境是(见下图)但当我打算卸载gdal库后,发现gdal安装的环境地址和我使用的环境地址不同(如下图)啊,原来是安装gdal的环境…

池化整合多元数据库,zData X 一体机助力证券公司IT基础架构革新

引言 近期&#xff0c;云和恩墨 zData X 多元数据库一体机&#xff08;以下简称 zData X&#xff09;在某证券公司的OA、短信和CRM业务系统中成功上线&#xff0c;标志着其IT基础架构完成从集中式存储向池化高性能分布式存储的转变。zData X 成功整合了该证券公司使用的达梦、O…

12 c++版本的坦克大战

前言 呵呵 这大概是 大学里面的 c 贪吃蛇了吧 有一些 面向对象的理解, 但是不多 这里 具体的实现 就不赘述, 仅仅是 发一下代码 以及 具体的使用 坦克大战 #include<iostream> #include<windows.h> #include<conio.h> #include<ctime> #include…

HarmonyOS ArkUI实战开发—状态管理

一、状态管理 在声明式UI编程框架中&#xff0c;UI是程序状态的运行结果&#xff0c;用户构建了一个UI模型&#xff0c;其中应用的运行时的状态是参数。当参数改变时&#xff0c;UI作为返回结果&#xff0c;也将进行对应的改变。这些运行时的状态变化所带来的UI的重新渲染&…

计算机Windows系统优化小知识

本文涉及计算机Windows系统优化小知识,介绍了注册表、虚拟内存、常用优化工具目录目录什么是注册表优化优化工具什么是注册表注册表是保存所有系统设置数据的存储器。注册表保存了 Windows 运行所需的各种参数和设置,以及应用程序相关的所有信息。从 Windows启动开始,到用户…

CUDA和CUDNN版本切换

介绍了cuda和cudnn版本切换的方法,以及设置环境变量的坑0 背景 在用不同框架做深度学习时,难免会遇到需要不同版本的cuda和cudnn版本的情况,如果把原来版本的卸载掉重新安装新版本,则会影响其它框架的使用,最好的方法是在主机上安装多个版本的cuda和cudnn,需要用到哪种就…

用Python将原始边列表转换为邻接矩阵

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在图论和网络分析中&#xff0c;图是一种非常重要的数据结构&#xff0c;它由节点&#xff…