HarmonyOS 6.1 开发者盛宴|《灵犀厨房》实战(十六):【语音合成】烹饪步骤分步语音播报——让菜谱开口说话摘要:上一篇我们构建了超级设备仪表盘,实现了 7 台设备的统一监控。但真正的“免提厨房”还差一个关键维度——语音。试想,锅里油花四溅,你双手翻飞,根本腾不出手滑手机看下一步。这时候,耳机里清晰播报“第三步:加入蚝油,翻炒均匀”,你只管听、只管做。本篇,我们将接入 HarmonyOS 6.1.0 的CoreSpeechKit(语音基础服务),为菜谱详情页的每一个烹饪步骤装上“嘴巴”。你将学会如何封装 TTS 引擎、管理 7 态播报状态机、实现自动连续播放,以及让语音与 Swiper 步骤精确同步。这套方案严格遵循 API 23 规范,并为下一篇的声控操作埋下伏笔。一、引言与系列定位经过第 14-15 篇的分布式流转和设备模拟,我们已经能在手机、平板、手表之间自由切换,还能模拟智能厨电的状态。但所有信息获取方式都是“看”——这在烹饪时恰恰是最不友好的。想象你正在灶台前忙碌的真实场景:烹饪阶段交互方式痛点选菜谱📱 滑动浏览正常交互,无痛点备菜📋 偶尔看一眼食材清单手中拿食材,偶尔瞄一下烹饪中🔥🍳 边看边做🔴 手上沾油沾水,根本不想碰手机调味收尾⚖️ 看用量🔴 频繁切换“看步骤→操作→再看”语音播报正是为了消灭这个痛点而生的——手机放支架上,语音自动播报每一步,听完就做,整个烹饪过程手指完全不碰屏幕。本篇,我们将正式进入《灵犀厨房》的“语音维度”。二、核心原理与底层机制深度解读2.1 CoreSpeechKit:藏在系统里的“AI 播音员”HarmonyOS 6.1.0(API 23)提供了@kit.CoreSpeechKit作为统一的语音基础服务,其中textToSpeech模块负责文字转语音。你可以把它想象成系统内置的一个“AI 播音员”——你把文字稿交给它,它用自然的人声读出来。为什么不用第三方 TTS?方案优势劣势选型讯飞 / 百度 SDK音色丰富额外集成、包体积增大、权限复杂❌CoreSpeechKit系统内置、零额外包体积、免权限、离线可用音色选择有限✅对于烹饪播报场景,我们需要的是清晰、稳定、低延迟的中文语音,CoreSpeechKit 完全够用。而且它是离线引擎,不需要网络连接,打开灶台就能播。重要提示:API 23 的textToSpeech不支持原生的pause/resume方法。本方案通过停止 + 重新播报来模拟暂停/恢复效果——暂停时记录当前步骤索引,恢复时从断点重新合成。这是官方推荐的无缝替代方案。2.2 状态机设计:7 种状态的“交通指挥”TTS 引擎不是简单的“播放/停止”二元开关。它有一套完整的生命周期状态机,就像十字路口的红绿灯系统:startNarration()引擎就绪创建失败speakCurrentStep()播报完成 / 出错pauseNarration()resumeNarration()stopNarration()stopNarration()stopNarration()所有步骤播报完成destroy()destroy()IDLEINITIALIZINGREADYSPEAKINGPAUSEDSTOPPEDCOMPLETEDDESTROYED金句:状态机是异步操作的“安全带”——每种状态之间都有明确的转换规则,不会出现“已经停止了还在播”的混乱局面。三、关键知识点详解3.1 TTS 播报模式对比模式行为描述适用场景本篇支持单句播报只播当前一步,播完就停熟练用户,只查某一步✅自动连续播报播完当前步 → 自动跳到下一步 → 继续播新手学做菜,全程听指导✅整段播报一次性把所有步骤合成一段无步骤联动❌ 不适合分步场景3.2 暂停/恢复的实现方案对比方案原理流畅度API 23 兼容选型原生pause/resume直接暂停/恢复音频流高❌ 不支持❌停止 + 重新播报记录断点,恢复时重新合成中(有短暂重连)✅✅本篇采用3.3 SpeakListener 回调生命周期API 23 的textToSpeech使用SpeakListener接口管理播报生命周期:TtsSpeechManagerSpeakListenerTTS 引擎TtsSpeechManagerSpeakListenerTTS 引擎