资讯动态

【第 08 课 | Core Speech Kit实战:端侧语音识别与合成的完整实现】

发布时间:2026/10/23 4:55:35 来源:尧图企业网站定制
适用AI工具DevEco Code / Cursor前置博客第02篇预计阅读时间20分钟一、端侧语音为什么值得鸿蒙开发者认真做Core Speech Kit 提供端侧语音识别ASR与语音合成TTS能力两大卖点离线可用与数据不出设备。对会议记录、驾驶场景、无障碍等应用这不仅是功能更是合规刚需。端侧方案与云端的取舍很简单短指令、隐私敏感、弱网环境用端侧超长音频转写、多语种混说可走云端补充。本篇聚焦端侧完整实现。二、能力全景与调用链路语音转文字文字转语音否是申请麦克风权限业务需求ASR: createEngine 创建识别引擎TTS: createEngine 创建合成引擎startListening 开始录音onResult 流式返回分段结果用户停止?finish 结束并释放引擎speak 传入文本与发音人参数onData 回调音频流/直接播报stop/shutdown 释放统一由 AudioRenderer 管理焦点三、ASR语音转文字完整实现3.1 权限与引擎创建先在module.json5声明麦克风权限并做运行时动态申请requestPermissions:[{name:ohos.permission.MICROPHONE,reason:$string:mic_reason,usedScene:{abilities:[EntryAbility],when:inuse}}]创建识别引擎并启动监听import{speechRecognizer}fromkit.CoreSpeechKit;letengine:speechRecognizer.SpeechRecognitionEngine;asyncfunctionstartAsr(context:Context):Promisevoid{constextraParam:Recordstring,Object{locate:CN,recognizerMode:short// 短句模式实时性最好};constinitInfo:speechRecognizer.CreateEngineParams{language:zh-CN,online:1,// 端侧引擎extraParams:extraParam};engineawaitspeechRecognizer.createEngine(initInfo);engine.on(result,(event:speechRecognizer.SpeechRecognitionResult){// isLast 为 false 时是中间结果可做边说边显示this.recognizedTextevent.result;});engine.on(error,(err){// 常见错误码9400002 无录音权限 / 9400003 引擎忙this.handleAsrError(err);});engine.startListening({sessionId:this.sessionId,audioInfo:null,extraParams:null});}3.2 AI 用法错误分支与状态机生成ASR 的业务难点不在主流程而在错误分支与 UI 状态机录音中/识别中/无权限/引擎忙的互斥切换。这是 AI 最擅长的机械活为 ASR 功能生成完整状态机Idle→Requesting→Listening→Recognizing→Error。错误码 9400002 引导用户去设置开权限9400003 延迟重试并设置最大3次。生成 ArkTS 状态管理代码与对应 UI 提示。AI 生成的状态机 权限引导 UI 直接可用人工只需补业务文案。实测这类状态机 错误引导交给 AI比手写节省一半时间且分支覆盖更全人容易漏连续两次引擎忙这种边角。3.3 离线识别与多方言端侧引擎支持离线识别弱网/无网自动走本地模型代码无需区分——online: 1的引擎创建后由系统智能调度。方言方面主流方言粤语、四川话等已进入识别语言列表AI 可帮你查 Kit 文档生成当前支持的方言清单与对应 locale 参数表避免硬编码踩空。四、TTS语音合成与播报import{textToSpeech}fromkit.CoreSpeechKit;asyncfunctionspeak(context:Context,text:string):Promisevoid{constengineawaittextToSpeech.createEngine({language:zh-CN,online:1,extraParams:{style:interaction-broadcast,locate:CN,name:EngineName}});constparams:textToSpeech.SpeakParams{requestId:this.reqId,extraParams:{speed:1.0,volume:1.0,pitch:1.0,soundChannel:textToSpeech.SpeechAudioChannel.AUDIO_MUSIC// 走媒体通道可后台播}};engine.speak(text,params);}注意soundChannel的选择导航提示类走默认音频通道即可长内容朗读听文章用AUDIO_MUSIC媒体通道配合后台任务保活锁屏不中断。五、组合实战会议速记ASR TTS 组合的经典场景是会议速记实时转写上屏 关键节点语音确认。架构要点ASR 中间结果高频刷新 UI 时节流到 300ms 更新一次避免渲染抖动转写文本分段落缓存到 preferences异常退出可恢复结束后把文本交给 AI 做摘要——这也是 2026 年很成熟的玩法端侧 Kit 拿原始数据云端 LLM 做增值处理给 AI 的组合指令示例实现会议速记页ASR 实时转写300ms 节流上屏、暂停/继续、结束后生成摘要调用云端接口。生成页面代码与数据持久化层。六、避坑清单引擎是重资源createEngine 耗时且占内存全局复用一个实例页面销毁只 stop 不 shutdown。中间结果别直接存库等isLast: true的最终结果再持久化否则同一句话会存多遍。权限被拒后的引导9400002 错误要给出去设置入口纯 toast 用户会以为是功能坏了。录音指示器系统会在状态栏展示录音图标应用内再加一个明确的录音状态 UI避免用户困惑。七、下一步语音之后是视觉。下一篇 Core Vision Kit人脸检测、文字识别与图像超分的实战集成。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑