当前位置: 首页 > news >正文

小程序实现语音识别功能

在这里插入图片描述
不废话,直接上代码

<template><view><u-popupround="16" :show="recordShow" :close-on-click-overlay="false":safe-area-inset-bottom="false"@close="close"@open="open"><view class="tag-popup-box"><view class="title"><text>{{ tips }}</text><imagesrc=""@click="close"/></view><view class="voice-box" @touchstart="startRecord" @touchend="stopRecord" @touchcancel="stopRecord"><imagesrc=""class="voice-icon"/></view></view></u-popup></view>
</template>
<script setup lang="ts">
import {onMounted, ref, watch} from "vue";
let start = false
const tips = ref<string>('按住开始录音')
const props = defineProps({show: {type: Boolean,default: false}
})
const manager = ref<any>()
const emits = defineEmits(['update:show','startRecord','textChange','micInput'])const startRecord = async () => {if (start) return // 防止还在识别中时又触发录音console.log('touch started')tips.value = '准备中...'try {await checkPermission()} catch (e) {tips.value = '需要授权'return}manager.value.start()emits("startRecord")
}const stopRecord = () => {if (!start) return // 触发极短时间,stop会在还未start的情况下触发console.log('touch ended or canceled')manager.value.stop()
}watch(() => props.show, (value) => {recordShow.value = value
})const recordShow = ref<boolean>(props.show)
const open = () => {manager.value = requirePlugin("WechatSI").getRecordRecognitionManager()// recordShow.value = truemanager.value.onStart = (e:any) => {console.log('on-start')console.log(e)start = truetips.value = '正在识别...'}manager.value.onStop = (e:any) => {console.log('on-stop')console.log(e)start = falseif (e.result){tips.value = '按住开始录音'emits("micInput", e.result)} else {tips.value = '识别失败,请重试'}}manager.value.onRecognize = (e:any) => {console.log('on-recognize')console.log(e)}manager.value.onError = (e:any) => {console.log('on-error')console.log(e)start = falsetips.value = '识别失败,请重试'}
}
const close = () => {recordShow.value = falseemits('update:show', recordShow.value)
}const  checkPermission = async () => {const sRes = await uni.getSetting()if (sRes.authSetting['scope.record']) returntry {const aRes = await uni.authorize({scope: 'scope.record'})} catch (e) {const mRes = await uni.showModal({title: '授权',content: '请打开 录音功能 权限以便进行语音识别',showCancel: true,})if (mRes.cancel) throw new Error('授权失败')const sRes = await uni.openSetting()if (sRes.authSetting['scope.record']) {uni.showModal({title: '授权成功',content: '请继续点击下方按钮 进行语音输入',showCancel: false})throw new Error('授权成功')}throw new Error('授权失败')}
}
</script>
<style scoped lang="scss">
.tag-popup-box{height: 524rpx;background: #FFFFFF;width: 100%;padding: 40rpx 40rpx 0 ;box-sizing: border-box;border-radius: 32rpx 32rpx 0rpx 0rpx;.voice-box{width: 100%;display: flex;justify-content: center;margin-top: 60rpx;.voice-icon{width: 180rpx;height: 180rpx;}}.title{display: flex;justify-content: space-between;align-items: center;margin-bottom: 60rpx;&>text{font-size: 30rpx;font-family: PingFangSC-Medium, PingFang SC;font-weight: 500;color: #333333;line-height: 44rpx;}&>image{width: 44rpx;height: 44rpx;}}.content{width: 100%;height: 96rpx;background: rgba(153, 153, 153, 0.08);border-radius: 12rpx;padding: 0 26rpx;box-sizing: border-box;}.confirm-btn{margin-top: 138rpx;width: 100%;height: 80rpx;text-align: center;background: #07B780;border-radius: 8rpx;font-size: 28rpx;font-family: PingFangSC-Regular, PingFang SC;font-weight: 400;color: #FFFFFF;line-height: 80rpx;}
}
</style>

相关文章:

小程序实现语音识别功能

不废话&#xff0c;直接上代码 <template><view><u-popupround"16" :show"recordShow" :close-on-click-overlay"false":safe-area-inset-bottom"false"close"close"open"open"><view clas…...

判断两层对象中是否有空的value值

1、方法 hasEmptyValue(obj) {for (var key in obj) {if (obj.hasOwnProperty(key)) {var value obj[key];// 检查第一层属性值是否为空if (value null || value undefined || value ) {return true;}// 检查第二层属性值是否为空if (typeof value object) {for (var inn…...

【SQLite】环境安装

SQLite - C/C SQLite简介 SQLite 是一种轻量级的嵌入式数据库引擎&#xff0c;它在程序中直接访问数据库文件而不需要独立的数据库服务器。以下是一些关于 SQLite 的简介信息&#xff1a; 嵌入式数据库引擎&#xff1a; SQLite 是一种嵌入式数据库引擎&#xff0c;这意味着它…...

【QT】飞机大战

0 项目简介 飞机大战是我们大家所熟知的一款小游戏&#xff0c;本教程就是教大家如何制作一款自己的飞机大战 首先我们看一下效果图 玩家控制一架小飞机&#xff0c;然后自动发射子弹&#xff0c;如果子弹打到了飞下来的敌机&#xff0c;则射杀敌机&#xff0c;并且有爆炸的特…...

linux最全基础入门命令(简单明了建议收藏)

Linux是一种开源的操作系统&#xff0c;它有许多强大的命令行工具&#xff0c;可以让用户对系统进行各种操作和管理。本文将介绍一些Linux最常见最全的命令&#xff0c;以及它们的用法和示例。 目录 ls:用于列出目录中的文件和子目录cd:用于切换当前工作目录pwd:于显示当前工作…...

dgl 的cuda 版本 环境配置(dgl cuda 版本库无法使用问题解决)

1. 如果你同时有dgl dglcu-XX.XX 那么&#xff0c;应该只会运行dgl &#xff08;DGL的CPU版本&#xff09;&#xff0c;因此&#xff0c;你需要把dgl(CPU)版本给卸载了 但是我只卸载CPU版本还不够&#xff0c;我GPU 版本的dglcu依旧不好使&#xff0c;因此吧GPU版本的也得卸载…...

回文数和复利的威力(C#)

题目&#xff1a;回文数 回⽂数指正序&#xff08;从左到右&#xff09;和倒序&#xff08;从右到左&#xff09;读都是⼀样的整数。 输⼊⼀个数&#xff0c;判断是否是回⽂数 样例输⼊ 2397 输出no 样例输⼊ 2992 样例输出yes 输⼊的整数⼤于0&#xff0c;⼩于1000000。如…...

【Java】面向对象程序设计 课程笔记 Java核心类

&#x1f680;Write In Front&#x1f680; &#x1f4dd;个人主页&#xff1a;令夏二十三 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd; &#x1f4e3;系列专栏&#xff1a;Java &#x1f4ac;希望你看完之后&#xff0c;能对你有所帮助&#xff0…...

16个值得推荐的.NET ORM框架

什么是ORM? ORM 是 Object Relational Mapping 的缩写&#xff0c;译为“对象关系映射”&#xff0c;是一种程序设计技术&#xff0c;用于实现面向对象编程语言里不同类型系统的数据之间的转换。它解决了对象和关系型数据库之间的数据交互问题&#xff0c;ORM的作用是在关系型…...

Git 进阶使用

一. Git图形化操作 1.1.什么是图形化管理工具 图形化管理工具是一种通过可视化界面来操作计算机系统或应用程序的软件工具。在软件开发中&#xff0c;它通常用于管理和操作版本控制系统&#xff08;如Git、SVN等&#xff09;以及代码开发环境&#xff08;如IDE&#xff09;。与…...

【微软技术栈】C#.NET 泛型数学

本文内.NET 7 为基类库引入了新的数学相关泛型接口。 提供这些接口意味着可以将泛型类型或方法的类型参数约束为“类似于数字”。 此外&#xff0c;C# 11 及更高版本允许定义 static virtual 接口成员。 由于必须将运算符声明为 static&#xff0c;因此这一新的 C# 功能可用于在…...

【nlp】1.1文本处理的基本方法

文本处理的基本方法 1 什么是分词2 什么是命名实体识别3 什么是词性标准1 什么是分词 分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。在英文的行文中,单词之间是以空格作为自然分界符的,而中文只是字、句和段能通过明显的分界符来简单划界,唯独词没有一个形…...

流量分析(信息安全铁人三项赛分区赛2-5.18)

题目描述 目录 题目描述 黑客的IP是多少 服务器1.99的web服务器使用的CMS及其版本号(请直接复制) 服务器拿到的webshell的网址(请输入url解码后的网址) 服务器1.99的主机名 网站根目录的绝对路径(注意最后加斜杠) 黑客上传的第一个文件名称是什么 黑客进行内网扫描&am…...

云服务器如何选?腾讯云2核2G3M云服务器88元一年!

作为一名程序员&#xff0c;在选择云服务器时&#xff0c;我们需要关注几个要点&#xff1a;网络稳定性、价格以及云服务商的规模。这些要素将直接影响到我们的使用体验和成本效益。接下来&#xff0c;我将为大家推荐一款性价比较高的轻应用云服务器。 腾讯云双11活动 腾讯云…...

【Hello Go】初识Go语言

初识Go语言 Go语言介绍Go语言是什么Go语言优势Go语言能用来做什么 Go语言环境安装第一个GO语言程序运行Go语言程序 Go语言介绍 Go语言是什么 go语言是是Google开发的一种静态强类型、编译型、并发型&#xff0c;并具有垃圾回收功能的编程语言. 静态类型&#xff1a;在静态类型…...

计算机视觉:人脸识别与检测

目录 前言 识别检测方法 本文方法 项目解析 完整代码及效果展示 前言 人脸识别作为一种生物特征识别技术&#xff0c;具有非侵扰性、非接触性、友好性和便捷性等优点。人脸识别通用的流程主要包括人脸检测、人脸裁剪、人脸校正、特征提取和人脸识别。人脸检测是从获取的图…...

【NLP】理解 Llama2:KV 缓存、分组查询注意力、旋转嵌入等

LLaMA 2.0是 Meta AI 的开创性作品&#xff0c;作为首批高性能开源预训练语言模型之一闯入了 AI 场景。值得注意的是&#xff0c;LLaMA-13B 的性能优于巨大的 GPT-3(175B)&#xff0c;尽管其尺寸只是其一小部分。您无疑听说过 LLaMA 令人印象深刻的性能&#xff0c;但您是否想知…...

ctyunos 与 openeuler

ctyunos-2.0.1-220311-aarch64-dvd ctyunos-2.0.1-220329-everything-aarch64-dvd glibc python3 对应openEuler 20.03 LTS SP1...

跟着GPT学设计模式之工厂模式

工厂模式&#xff08;Factory Design Pattern&#xff09;分为三种更加细分的类型&#xff1a;简单工厂、工厂方法和抽象工厂。在这三种细分的工厂模式中&#xff0c;简单工厂、工厂方法原理比较简单&#xff0c;在实际的项目中也比较常用。而抽象工厂的原理稍微复杂点&#xf…...

VScode+python开发,多个解释器切换问题

内容&#xff1a;主要VScode使用多个解释器 环境准备 VScode编辑器&#xff0c;两个版本python解释器 python3.7.2 python3.11.6 问题&#xff1a; 目前我们的电脑安装了python3.7.2、python3.11.6两个解释器&#xff0c;在vscode编辑器中&#xff0c;无法切换解释器使用如…...

PyFluent:重新定义CFD仿真的Python原生接口解决方案

PyFluent&#xff1a;重新定义CFD仿真的Python原生接口解决方案 【免费下载链接】pyfluent Pythonic interface to Ansys Fluent 项目地址: https://gitcode.com/gh_mirrors/pyf/pyfluent PyFluent作为Ansys Fluent的Python原生接口&#xff0c;代表了计算流体动力学&am…...

如何在10分钟内构建高质量AI语音克隆模型:Retrieval-based-Voice-Conversion-WebUI完全指南

如何在10分钟内构建高质量AI语音克隆模型&#xff1a;Retrieval-based-Voice-Conversion-WebUI完全指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trendi…...

联想拯救者Y7000系列BIOS隐藏功能一键解锁工具:3分钟开启高级设置,轻松安装黑苹果

联想拯救者Y7000系列BIOS隐藏功能一键解锁工具&#xff1a;3分钟开启高级设置&#xff0c;轻松安装黑苹果 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具&#xff0c;例如关闭CFG LOCK、修改DVMT等等 项目地…...

老显卡在Debian 12上重获新生:保姆级教程解决NVIDIA 390驱动安装与版本冲突

老显卡在Debian 12上的重生指南&#xff1a;NVIDIA 390驱动完整解决方案 当GeForce 600/700系列显卡遇上最新的Debian 12系统&#xff0c;就像让一位老将披上现代战甲——既充满情怀又颇具挑战。本文将带你穿越驱动安装的迷雾森林&#xff0c;从硬件识别到版本冲突解决&#xf…...

QQ空间历史数据安全备份:GetQzonehistory高效解决方案

QQ空间历史数据安全备份&#xff1a;GetQzonehistory高效解决方案 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在数字时代&#xff0c;个人社交数据的永久性面临严峻挑战。据中国互联…...

如何永久解除科学文库文档访问限制:终极解密解决方案

如何永久解除科学文库文档访问限制&#xff1a;终极解密解决方案 【免费下载链接】ScienceDecrypting 破解CAJViewer带有效期的文档&#xff0c;支持破解科学文库、标准全文数据库下载的文档。无损破解&#xff0c;保留文字和目录&#xff0c;解除有效期限制。 项目地址: htt…...

OpenHarness,轻量级AI智能体驾驭框架,开启高效开发新范式

在人工智能技术飞速发展的当下&#xff0c;大语言模型已经成为推动各行各业变革的核心力量。从简单的问答交互到复杂的代码编写、任务规划&#xff0c;大模型展现出了强大的能力。但想要让大模型真正成为能够自主完成任务的智能体&#xff0c;就需要一套完善的基础设施来支撑&a…...

原神帧率解锁完整指南:5步突破60帧限制,体验丝滑游戏画面

原神帧率解锁完整指南&#xff1a;5步突破60帧限制&#xff0c;体验丝滑游戏画面 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 对于追求极致流畅游戏体验的《原神》玩家来说&#xff0…...

Gemini 2.0与Gemma混搭开发:手把手教你构建低成本AI代理系统

Gemini 2.0与Gemma混搭开发&#xff1a;构建低成本AI代理系统的实战指南 1. 双轨战略的技术架构设计 谷歌的闭源Gemini与开源Gemma组合为开发者提供了独特的混合部署可能。这种架构设计的核心在于分层处理&#xff1a;将计算密集型任务交给云端Gemini处理&#xff0c;而设备端则…...

Qwen3-ForcedAligner-0.6B完整指南:音频格式支持/实时录音/时间戳导出全解析

Qwen3-ForcedAligner-0.6B完整指南&#xff1a;音频格式支持/实时录音/时间戳导出全解析 你是不是也遇到过这样的烦恼&#xff1f;开会录音想整理成文字&#xff0c;手动打字累到怀疑人生&#xff1b;做视频需要加字幕&#xff0c;一句一句对时间轴对到眼花。今天要介绍的这个…...