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

封装一个语言识别文字的方法

语音识别

需求:

  1. 参考官方文档,整合语音识别api
  2. callback 的写法改为 Promise 的版本
  • 在startRecord中:
  1. 参考文档实例化-开启转换
  2. 将录制的内容传递给录音识别
  3. 回调函数中的 Log,改为 Logger
  • 在closeRecord:
  1. 结束识别、释放资源
  2. 设置状态为 VoiceState.VOICEOVER

 

  async startRecord() {// 开始识别this.asrEngine = await speechRecognizer.createEngine({language: 'zh-CN',online: 1})// 保存组件的 this,后续通过_this来使用组件const _this = thisthis.asrEngine.setListener({onStart(sessionId: string, eventMessage: string) {console.info(`onStart, sessionId: ${sessionId} eventMessage: ${eventMessage}`);},onEvent(sessionId: string, eventCode: number, eventMessage: string) {console.info(`onEvent, sessionId: ${sessionId} eventCode: ${eventCode} eventMessage: ${eventMessage}`);},onResult(sessionId: string, result: speechRecognizer.SpeechRecognitionResult) {_this.keyword = result.result_this.onChange(result.result)console.info(`onResult, sessionId: ${sessionId} sessionId: ${JSON.stringify(result)}`);},onComplete(sessionId: string, eventMessage: string) {_this.onComplete(_this.keyword)_this.keyword = ''_this.voiceState = VoiceState.DEFAULTconsole.info(`onComplete, sessionId: ${sessionId} eventMessage: ${eventMessage}`);},onError(sessionId: string, errorCode: number, errorMessage: string) {console.error(`onError, sessionId: ${sessionId} errorCode: ${errorCode} errorMessage: ${errorMessage}`);}})const recognizerParams: speechRecognizer.StartParams = {sessionId: '10000',audioInfo: {audioType: 'pcm',sampleRate: 16000,soundChannel: 1,sampleBit: 16}}this.asrEngine?.startListening(recognizerParams)// 开始录音const audioStreamInfo: audio.AudioStreamInfo = {samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_16000,channels: audio.AudioChannel.CHANNEL_1,sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW}const audioCapturerInfo: audio.AudioCapturerInfo = {source: audio.SourceType.SOURCE_TYPE_MIC,capturerFlags: 0}const audioCapturerOptions: audio.AudioCapturerOptions = {streamInfo: audioStreamInfo,capturerInfo: audioCapturerInfo}this.audioCapturer = await audio.createAudioCapturer(audioCapturerOptions)this.audioCapturer.on('readData', (buffer) => {console.log('mk-logger', buffer.byteLength)this.asrEngine?.writeAudio('10000', new Uint8Array(buffer))})await this.audioCapturer.start()this.voiceState = VoiceState.VOICING}

相关文章:

封装一个语言识别文字的方法

语音识别 需求: 参考官方文档,整合语音识别apicallback 的写法改为 Promise 的版本 在startRecord中: 参考文档实例化-开启转换将录制的内容传递给录音识别回调函数中的 Log,改为 Logger 在closeRecord: 结束识别…...

解决 iOS App Tracking Transparency 权限问题

解决 iOS App Tracking Transparency 权限问题 在 iOS 14 及更高版本中,Apple 引入了 App Tracking Transparency (ATT) 框架,要求应用在跟踪用户之前必须获得用户的明确许可。这通常涉及到访问用户的广告标识符(IDFA)。如果没有…...

ClickHouse 的底层架构和原理

ClickHouse 是一个用于实时分析和处理大规模数据的列式数据库,其设计目标是高效地处理海量数据的查询需求。它特别适合 OLAP(Online Analytical Processing)场景,能够在不依赖复杂的索引结构的情况下,实现极快的查询速…...

rtmp推流

获取摄像头名称 打开命令行工具,运行以下命令以列出所有可用的视频设备: ffmpeg -f dshow -list_devices true -i dummy查找输出中的“Video devices”部分,记录下你的摄像头名称。 构建推流命令 ffmpeg -f dshow -i video"摄像头名称…...

【数据库】死锁排查方式

定位 查是否锁表 select username,lockwait,status,machine,program from v$session where sid in (select session_id from v$locked_object); 查锁表sql select sql_text from v$sql where hash_value in (select sql_hash_value from v$session where sid in (select s…...

去耦合的一些建议

尽量少用全局变量,以减少状态共享和潜在的副作用。 模块化设计:将代码分成小模块,每个模块独立实现特定功能,减少模块之间的相互依赖。 封装:将数据和操作封装在类中,控制对内部状态的访问,避…...

SpringBoot+Thymeleaf图书管理系统

一、项目介绍 > 这是一个基于SpringBootThymeleaf实现的图书管理系统。 > 包含图书管理、作者管理、分类管理、出版社管理等功能。 > 界面简洁美观,代码结构清晰,完成度比较高,适用于JAVA初学者作为参考项目。 二、项目演示 三…...

TDengine 签约前晨汽车,解锁智能出行的无限潜力

在全球汽车产业转型升级的背景下,智能网联和新能源技术正迅速成为商用车行业的重要发展方向。随着市场对环保和智能化需求的日益增强,企业必须在技术创新和数据管理上不断突破,以满足客户对高效、安全和智能出行的期待。在这一背景下&#xf…...

模板字符串中定义方法并传参

遇到一个使用js es6的模板字符串进行事件绑定和传参的问题,这个问题的引起是因为使用innerHTML插入了一大串html并进行事件的绑定和传参。 以react为例,写一个demo记录一下 模板字符串中写方法的话需要用onclick来定义,传参需要这么写${char…...

Numpy 数组元素添加与元素删除函数详解

元素添加 Numpy中有类似python列表操作函数append()及insert(),但是用法稍有不同,append()及insert()不作为数组的实例方法使用。 np.append() np.append()的参数如下 def append(arr, values, axisNone): 其中,arr为数组对象&#xff0…...

【Python】高效图像处理库:pyvips

月亮慢慢变圆,日子慢慢变甜。 在图像处理领域,pyvips 是一个轻量级且高效的库,适合处理大规模图像、实现高性能的操作。相较于其他常见的图像处理库如 PIL 或 OpenCV,pyvips 以其低内存占用和出色的速度脱颖而出。本文将介绍 pyv…...

java项目之在线考试与学习交流网页平台源码(springboot)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的在线考试与学习交流网页平台。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 基于JAVA语言…...

【Android源码】屏蔽系统通知出现在系统栏中

环境 aosp: android-14.0.0_r1 真机&#xff1a;Pixel5 目标 我想把usb连接的两个系统通知屏蔽掉 “正在通过 USB 为此设备充电”“已连接到 USB 调试” 步骤 首先找到这两句内容出现的位置在 frameworks/base/core/res/res/values-zh-rCN/strings.xml <string name&…...

MySQL索引测试

在MySQL中&#xff0c;即使表中没有数据&#xff0c;查询优化器也会考虑使用索引来执行查询。但在某些情况下&#xff0c;查询优化器可能会选择不使用索引&#xff0c;这通常是基于成本效益分析的结果。 表中没有任何数据时&#xff0c;无论是否使用索引&#xff0c;查询结果都…...

【软件设计】常用设计模式--观察者模式

软件设计模式&#xff08;四&#xff09; 观察者模式一、观察者模式&#xff08;Observer Pattern&#xff09;1. 概念2. 模式结构3. UML 类图4. 实现方式C# 示例步骤1&#xff1a;定义观察者接口步骤2&#xff1a;定义主题接口步骤3&#xff1a;实现具体主题步骤4&#xff1a;…...

东北非国企就职体验

有感而发&#xff0c;校招毕业选了个非央国企但偏稳的工作&#xff0c;属于事儿少离家近钱还可以。不忙&#xff0c;收入在东北也还不错&#xff0c;可是看到近期那些考上公务员那些有编制的pyq&#xff0c;真的是很感叹他们的生活真的是丰富多彩。 虽然我不忙&#xff0c;但是…...

经典sql题(二)求连续登录最多天数用户

示例数据 假设我们的 test 表有以下数据&#xff1a; iddate12023-10-01 08:00:0012023-10-02 09:00:0012023-10-03 10:00:0012023-10-05 11:00:0022023-10-01 10:00:0022023-10-02 12:00:0022023-10-03 14:00:0022023-10-04 15:00:0032023-10-01 16:00:0032023-10-02 16:00:…...

A. Closest Point

time limit per test 2 seconds memory limit per test 512 megabytes Consider a set of points on a line. The distance between two points ii and jj is |i−j||i−j|. The point ii from the set is the closest to the point jj from the set, if there is no othe…...

沟通更高效:微信群转移至企业微信操作攻略!

微信群转移到企业微信并不难&#xff0c;具体操作如下&#xff1a; 打开移动端企业微信主页&#xff0c;找到微信聊天栏中的【接收微信中的工作消息】&#xff1b; 点击【前往微信选择群聊】&#xff0c; 跳转到微信&#xff1b; 选择微信上的工作群聊&#xff0c;只能选择作…...

计算机毕业设计 基于Python Django的旅游景点数据分析与推荐系统 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…...

Chrome for Testing 终极配置指南:5个实战技巧让浏览器自动化测试更高效

Chrome for Testing 终极配置指南&#xff1a;5个实战技巧让浏览器自动化测试更高效 【免费下载链接】chrome-for-testing 项目地址: https://gitcode.com/gh_mirrors/ch/chrome-for-testing Chrome for Testing 是 GoogleChromeLabs 团队专门为浏览器自动化测试设计的…...

运维养龙虾--腾讯云 CloudQ 上线:把企业云上治理,装进你每天都在用的聊天框

想象一下&#xff1a;凌晨两点&#xff0c;你被告警叫醒&#xff0c;不用登录控制台&#xff0c;不用翻文档&#xff0c;直接在企业微信里问一句"昨晚华东区账单怎么涨了"&#xff0c;2分钟后就拿到了完整的根因分析报告。这不是科幻&#xff0c;这是 CloudQ 正在做的…...

U8/修改采购入库单辅计量单位

SELECT cAssUnit,Inventory.cSTComUnitCode,* --UPDATE rdrecords01 SET cAssUnit Inventory.cSTComUnitCode FROM rdrecords01 LEFT JOIN Inventory ON rdrecords01.cInvCode Inventory.cInvCode...

GHelper全面革新:华硕笔记本硬件控制的智能突破方案

GHelper全面革新&#xff1a;华硕笔记本硬件控制的智能突破方案 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar…...

AI 模型训练中的梯度裁剪技巧

AI模型训练中的梯度裁剪技巧 在深度学习的模型训练过程中&#xff0c;梯度爆炸是一个常见的问题&#xff0c;它会导致模型参数更新过大&#xff0c;进而使训练过程变得不稳定甚至无法收敛。为了解决这一问题&#xff0c;梯度裁剪&#xff08;Gradient Clipping&#xff09;技术…...

实战指南:基于快马AI生成代码,快速构建并部署一个完整企业网站

今天想和大家分享一个实战经验&#xff1a;如何用InsCode(快马)平台快速搭建一个完整的企业网站。整个过程非常流畅&#xff0c;特别适合需要快速上线展示页面的场景。 项目结构规划 首先明确企业网站需要的核心页面&#xff1a;首页、关于我们、服务项目、案例展示、团队介绍、…...

如何统计不同电话号码的个数?—位图法

在技术领域&#xff0c;我们常常被那些闪耀的、可见的成果所吸引。今天&#xff0c;这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力&#xff0c;让我们得以一窥未来的轮廓。然而&#xff0c;作为在企业一线构建、部署和维护复杂系统的实践者&#xff0c;我们深知…...

NVIDIA Profile Inspector深度解析:解锁显卡隐藏性能的5个关键技术维度

NVIDIA Profile Inspector深度解析&#xff1a;解锁显卡隐藏性能的5个关键技术维度 【免费下载链接】nvidiaProfileInspector 项目地址: https://gitcode.com/gh_mirrors/nv/nvidiaProfileInspector NVIDIA Profile Inspector作为一款功能强大的显卡配置工具&#xff0…...

基于STM32的充电桩控制器设计(有完整资料)

资料查找方式&#xff1a;特纳斯电子&#xff08;电子校园网&#xff09;&#xff1a;搜索下面编号即可编号&#xff1a;T4532205M设计简介&#xff1a;本设计是基于单片机的充电桩控制器设计&#xff0c;主要实现以下功能&#xff1a;1、RFID可以注册卡以及删除卡&#xff0c;…...

OpenClaw+SecGPT-14B:个人安全实验室自动化搭建全指南

OpenClawSecGPT-14B&#xff1a;个人安全实验室自动化搭建全指南 1. 为什么需要自动化安全实验室 作为一名长期从事安全研究的工程师&#xff0c;我深刻体会到传统手工分析的低效与局限。每次分析新样本时&#xff0c;都需要重复搭建环境、配置工具、收集威胁情报&#xff0c…...