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

网站后台打开很慢新乡网站建设设计公司哪家好

网站后台打开很慢,新乡网站建设设计公司哪家好,上海松江建设银行网站,wordpress个人资料页修改语音识别(语音转文字) 在鸿蒙应用开发中,需要涉及到录音或者语音识别的功能,我们需要用到CoreSpeechKit这个API,使用语言引擎进行转换。 效果: 申请麦克风权限: {"name": "oh…

语音识别(语音转文字)

在鸿蒙应用开发中,需要涉及到录音或者语音识别的功能,我们需要用到CoreSpeechKit这个API,使用语言引擎进行转换。

效果:

申请麦克风权限:

{"name": "ohos.permission.MICROPHONE","reason": "$string:MICROPHONE_reason","usedScene": {"abilities": ["EntryAbility"],}
},

初始化引擎

// 创建引擎,通过callback形式返回
// 设置创建引擎参数
// 调用createEngine方法
asrEngine = await speechRecognizer.createEngine({language: 'zh-CN',online: 1,extraParams: { "locate": "CN", "recognizerMode": "short" }
});

设置回调函数对象

// 创建回调对象
let setListener: speechRecognizer.RecognitionListener = {// 开始识别成功回调onStart(sessionId: string, eventMessage: string) {Logger.info(`onStart, sessionId: ${sessionId} eventMessage: ${eventMessage}`);},// 事件回调onEvent(sessionId: string, eventCode: number, eventMessage: string) {Logger.info(`onEvent, sessionId: ${sessionId} eventCode: ${eventCode} eventMessage: ${eventMessage}`);},
​// 识别结果回调,包括中间结果和最终结果// 箭头函数 的 this 会在创建时,绑定 当前所在作用域中的 this(当前组件)onResult: (sessionId: string, result: speechRecognizer.SpeechRecognitionResult) => {Text = result.resultLogger.info(`onResult, sessionId: ${sessionId} sessionId: ${JSON.stringify(result)}`);Logger.info('result', result.result)// 保存 识别的结果// 通知 父组件},// 识别完成回调// 箭头函数 的 this 会在创建时,绑定 当前所在作用域中的 this(当前组件)onComplete: (sessionId: string, eventMessage: string) => {Logger.info(`onComplete, sessionId: ${sessionId} eventMessage: ${eventMessage}`);},// 错误回调,错误码通过本方法返回// 如:返回错误码1002200006,识别引擎正忙,引擎正在识别中// 更多错误码请参考错误码参考onError(sessionId: string, errorCode: number, errorMessage: string) {Logger.error(`onError, sessionId: ${sessionId} errorCode: ${errorCode} errorMessage: ${errorMessage}`);}
}
// 设置回调
asrEngine.setListener(setListener);

设置参数,启动回调

// 语音 03 - 设置识别参数 开始识别
let recognizerParams: speechRecognizer.StartParams = {sessionId: sessionId,// 识别的语音的信息audioInfo: {audioType: 'pcm',sampleRate: 16000,soundChannel: 1,sampleBit: 16},extraParams: { "vadBegin": 2000, "vadEnd": 3000, "maxAudioDuration": 40000 }
};
// 调用开始识别方法
asrEngine.startListening(recognizerParams);

参考代码:

调用

SysPermissionUtils.request(getContext() as common.UIAbilityContext, async (isGranted: boolean) => {if (!isGranted) {DialogUtils.showToastMsg('请开启音频录制权限')context.sendBridgeResult({ startRecord: "noPower" })return}SpeechRecognitionTool.startRecord()
}, "ohos.permission.MICROPHONE")

封装类:

import { speechRecognizer } from '@kit.CoreSpeechKit'
import { audio } from '@kit.AudioKit'
import Logger from './Logger'
​
//录音音频捕获对象
let audioCapturer: audio.AudioCapturer | null = null
//语音识别引擎对象
let asrEngine: speechRecognizer.SpeechRecognitionEngine | null = null
// 语音识别的会话 ID
let sessionId: string = '123456';
let Text: string = ''
​
export class SpeechRecognitionTool {static async startRecord() {
​
​// 创建引擎,通过callback形式返回// 设置创建引擎参数// 调用createEngine方法asrEngine = await speechRecognizer.createEngine({language: 'zh-CN',online: 1,extraParams: { "locate": "CN", "recognizerMode": "short" }});
​// 语音 02 - 设置识别之后的回调函数// 创建回调对象let setListener: speechRecognizer.RecognitionListener = {// 开始识别成功回调onStart(sessionId: string, eventMessage: string) {Logger.info(`onStart, sessionId: ${sessionId} eventMessage: ${eventMessage}`);},// 事件回调onEvent(sessionId: string, eventCode: number, eventMessage: string) {Logger.info(`onEvent, sessionId: ${sessionId} eventCode: ${eventCode} eventMessage: ${eventMessage}`);},
​// 识别结果回调,包括中间结果和最终结果// 箭头函数 的 this 会在创建时,绑定 当前所在作用域中的 this(当前组件)onResult: (sessionId: string, result: speechRecognizer.SpeechRecognitionResult) => {Text = result.resultLogger.info(`onResult, sessionId: ${sessionId} sessionId: ${JSON.stringify(result)}`);Logger.info('result', result.result)// 保存 识别的结果// 通知 父组件},// 识别完成回调// 箭头函数 的 this 会在创建时,绑定 当前所在作用域中的 this(当前组件)onComplete: (sessionId: string, eventMessage: string) => {Logger.info(`onComplete, sessionId: ${sessionId} eventMessage: ${eventMessage}`);},// 错误回调,错误码通过本方法返回// 如:返回错误码1002200006,识别引擎正忙,引擎正在识别中// 更多错误码请参考错误码参考onError(sessionId: string, errorCode: number, errorMessage: string) {Logger.error(`onError, sessionId: ${sessionId} errorCode: ${errorCode} errorMessage: ${errorMessage}`);}}// 设置回调asrEngine.setListener(setListener);
​// 语音 03 - 设置识别参数 开始识别let recognizerParams: speechRecognizer.StartParams = {sessionId: sessionId,// 识别的语音的信息audioInfo: {audioType: 'pcm',sampleRate: 16000,soundChannel: 1,sampleBit: 16},extraParams: { "vadBegin": 2000, "vadEnd": 3000, "maxAudioDuration": 40000 }};// 调用开始识别方法asrEngine.startListening(recognizerParams);
​// ---------- 下面是录音相关的逻辑  ----------// 录音 01 - 创建 录音 实例对象let audioCapturerOptions: audio.AudioCapturerOptions = {streamInfo: {samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_16000, // 采样率channels: audio.AudioChannel.CHANNEL_1, // 通道sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, // 采样格式encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW // 编码格式},capturerInfo: {source: audio.SourceType.SOURCE_TYPE_MIC,capturerFlags: 0}};
​// 调用 createAudioCapturer 创建 录音用的实例对象audioCapturer = await audio.createAudioCapturer(audioCapturerOptions)
​// 录音 02 监听录制的结果并 做一些事情
​// 回调函数中,将录制的音频信息,保存到  cacheDir 中audioCapturer.on('readData', (buffer: ArrayBuffer) => {// 语音04 - 写入音频留// 写入的音频流,转手传递给 识别引擎asrEngine?.writeAudio(sessionId, new Uint8Array(buffer));// Logger.info('readData 触发啦~~~')});
​// 录音 03 - 开启录制await audioCapturer.start();
​
​}
​static async closeRecord(callBack: RecognizerRes) {callBack.callBack(Text)// 录音 04 关闭 + 销毁audioCapturer?.stop()audioCapturer?.release()
​// 语音 05 关闭+释放asrEngine?.finish(sessionId)asrEngine?.shutdown()
​}
}
​
export interface RecognizerRes {callBack: (text: string) => void
}

ok,以上就是我在鸿蒙应用中将录音转为文字的分享。

http://www.dtcms.com/a/415696.html

相关文章:

  • 大连图书馆网站建设要求做外国网站用什么服务器
  • 《Python中的依赖注入实战指南:构建可测试、可扩展的模块化系统》
  • vk汉化网站谁做的钱江摩托车官网
  • 青岛北京网站建设价格苏州 网站制作公司
  • Ripple - 优雅的 TypeScript UI 框架
  • [xboard]11 uboot通用启动流程
  • 做代理稳妥的彩票网站有哪些北京微信网站开发
  • 公司网站建设多少费用济南兴田德润评价辽宁省建设工程信息网网
  • 运营商查浏览网站济南网站建设cn un
  • 怎么做游戏网站的宣传图片如何做的网站手机可以用吗
  • STM32启动流程全面解析:从上电复位到进入main函数
  • 做网站用什么语言数据库图片制作在线生成器免费版
  • 做招标网站 如何企业信息管理系统软件
  • ubuntu22.04安装cuda版本的opencv4.8.1
  • 教师招聘网站长城建设集团建设酒店网站ppt模板下载
  • 用家里的电脑做网站服务器个人网站建设价格套餐
  • golang 在京东低空无人机送货系统中的应用
  • 网站后台管理系统的重要技术指标沈阳网红餐厅
  • 营销型网站的目标是数据推广公司
  • 阿里云建站教程视频wordpress 过滤器
  • 帮人做ppt的网站运营一款app的费用
  • 氛围编程:软件开发新纪元
  • 基于MCU的文件系统
  • 做网站网站代理的犯法么西安互联网公司集中在哪里
  • [吾爱原创] 带搜索的导航网站小工具,可自行添加网址
  • linux基础服务
  • C# 串口通信全解析:从基础到复杂协议的设计思路
  • 传统食品加工企业的自动化转型之路:西门子S7-200 SMART PLC助力腾飞
  • 如何做局域网网站建设国办网站建设指引
  • LinuxC++——gtest框架入门