您的位置:首页 > 财经 > 金融 > 网络营销的特点不包括什么_seo推广软件代理_河南seo_怎么查百度收录

网络营销的特点不包括什么_seo推广软件代理_河南seo_怎么查百度收录

2025/4/3 19:22:44 来源:https://blog.csdn.net/m0_68038853/article/details/146518913  浏览:    关键词:网络营销的特点不包括什么_seo推广软件代理_河南seo_怎么查百度收录
网络营销的特点不包括什么_seo推广软件代理_河南seo_怎么查百度收录

语音识别(语音转文字)

在鸿蒙应用开发中,需要涉及到录音或者语音识别的功能,我们需要用到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,以上就是我在鸿蒙应用中将录音转为文字的分享。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com