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

2024-04-27 14:12

本文主要是介绍vue实现录音并转文字功能,包括PC端web,手机端web,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

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来实现类似功能。

这篇关于vue实现录音并转文字功能,包括PC端web,手机端web的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/940719

相关文章

微信小程序中的图像魔术:高效利用Canvas实现图片压缩技巧全解析

微信小程序中的图像魔术:高效利用Canvas实现图片压缩技巧全解析 Canvas基础与图片压缩原理Canvas介绍图片压缩原理 微信小程序实战:Canvas压缩图片步骤1:准备Canvas环境步骤2:加载图片步骤3:压缩逻辑实现 安全性能与安全考量结语与讨论 在微信小程序开发中,图像处理是一项关键任务,尤其是在上传用户生成内容的场景下,图片的体积大小直接影响到用户体验和服务器带宽

Android JNI实现线程内部调用JAVA方法

JNILib.java class JNILib() {external fun start(callBack: DataCallBack):Intinterface DataCallBack{fun onData(type:Int,data:ByteArray)}} jni.cpp static MessageUtil messageUtil;// 全局变量,表示 Java 虚拟机

ASP.NET信息安全研究所设备管理系统的设计与实现

摘  要 以研究所的设备管理系统为背景,以研究所设备管理模式为研究对象,开发了设备管理系统。设备管理系统是设备管理与计算机技术相结合的产物,根据系统的功能需求分析与定义的数据模式,分析了应用程序的主要功能和系统实现的主要技术。系统主要包括后台数据库的开发和前端应用程序的开发两个方面。考虑了当前设备管理的相关问题,探讨了系统实现的主要相关技术:如数据库技术、C#等。该系统考虑了实际开发的设备管理系

在vue项目中使用echarts 阿星小栈

在后台管理系统中,图表是一个很普遍的元素。目前常用的图标插件有 charts,  Echarts, highcharts。这次将介绍 Echarts 在 Vue 项目中的应用。 安装echarts依赖 npm install echarts -S 或者使用国内的淘宝镜像: 安装 npm install -g cnpm --registry=https://registry.npm.

CSS上下左右居中 阿星小栈

align-items: center;justify-content: center; //水平text-align: center;display: flex;

Vue、React实现excel导出功能(三种实现方式保姆级讲解)

第一种:后端返回文件流,前端转换并导出(常用,通常公司都是用这种方式) 第二种:纯后端导出(需要了解) 第三种:纯前端导出(不建议使用,数据处理放在前端会引发一些不必要的问题) 一、实现效果: 二、以下是三种不同方式实现的详细步骤: 1、后端返回文件流,前端转换后并导出 (1)添加导出按钮 代码如下: <!-- 这里我用的是antdVue组件库,按照你当前项目使用的组件库更改一

ASP.NET校园新闻发布系统的设计与实现

摘   要 校园新闻发布系统是在学校区域内为学校教育提供资源共享、信息交流和协同工作的计算机网络信息系统。随着网络技术的发展和Internet应用的普及,互联网已成为人们获取信息的重要来源。由于现在各大学校的教师和学生对信息的需求越来越高,校园信息对提高学校的教学质量、提高学生的学习质量等等有很重要的作用。 本毕业设计主要采用了B/S设计模式,基于ASP.NET+SQL Server2000技

PHP json_encode返回的json前端获取时出现unicode转码和反斜杠\导致无法解析的解决办法...

今天用PHP写一个接口文件出现了一个非常奇葩的问题,首先我的json字符串绝对没有问题,然后使用json_encode编码后echo出去作为接口的返回值。前端使用JS获取接口返回的json对象时,返回的是一个字符串,不是Object(正常应该返回JSON的Object)。而且这个字符串还被Unicode转码过。 (截图只贴了一部分json值) 我以为Unicode转码的问题,就在网上找

5G工业路由器实现驾考科目三实时监控与远程控制

5G驾考路由器的应用主要体现在智能驾考系统中,其优势包括提高考试安全性、效率和规范性,同时杜绝违规行贿作弊的行为。 在驾考系统中,5G工业路由器是数据传输的桥梁设备。车载设备如摄像头、定位系统、硬盘录像机、传感器等,通过串口或网口的方式与5G工业路由器连接。路由器再通过5G网络建立与考试中心的VPN连接,实现数据的实时传输和远程监控。考试中心就能实时查看到每辆考试车的视频、位置信息、考试状态

egret 二级属性实现tween

暂且这么命名吧  egret的tween实现是 egret.Tween.get(对象).to({属性:值},时间) 但是scroll有个属性是viewport里面还有一层属性为ScrollH ScrollV 这是一个滚动距离的属性 如果按照之前的想法直接get到scroll是无法设置这个值的 所以需要get到scroll的对象的viewport对象然后设置属性 可以理解为get是获取对象