开发 HarmonyOS NEXT 导航SDK 开发指南 语音播报 语音合成

语音合成 最后更新时间: 2026年05月29日

内置语音控制

导航SDK在AMapNavi提供了内置语音功能,开启内置语音以后,导航SDK会使用SDK内部语音合成方案进行播报,外部无需关心语音播报相关内容。

内置语音开关接口:

/**
 * 设置使用内部语音播报
 *
 * @param isUseInnerVoice 是否使用内部语音播报, 默认为false
 * @param isCallBackText  isUseInnerVoice设置为true以后,{@link AMapNaviListener#onGetNavigationText}接口会继续返回文字,默认为false
 * @since 2.2.4
 */
setUseInnerVoice(isUseInnerVoice: boolean, isCallBackText?: boolean): void

如果您使用内置语音,可以通过如下接口来控制内置语音的播报行为:

/**
 * 开始内置语音播报,只有在使用内置语音的情况下才有效
 *
 * @since 2.2.4
 */
startSpeak(): void;

/**
 * 停止内置语音播报,只有在使用内置语音的情况下有效
 * 注意:调用该接口,会停止播放导航语音,但是仍然可以播放自定义语音
 *
 * @since 2.2.4
 */
stopSpeak(): void;

SDK 会通过AMapNaviListener类回调将播报的文字内容透传出来,如果您不想使用SDK的内置语音进行播报,也可以选择第三方的语音合成SDK(如:阿里云语音合成)将内容转化成声音信息,完成导航播报。以下是涉及到相关接口和回调:

/**
 * 导航播报信息回调函数。
 *
 * @param type 播报类型枚举,详情见 {NaviTTSType}
 * @param text 播报文案
 * @since 1.0.0
 */
onGetNavigationTextAndType?:(text: string | null, type: number) => void

如果您使用自己合成的方式来进行播报,需要在每句播报前和播报完成后设置一下AMapNavi中如下接口,保证不出现语音打断和延迟问题。

/**
 * 设置外部播放器是否正在播报
 *
 * @since 1.0.0
 */
setTtsPlaying(playing: boolean): void

自定义语音播报

如果您使用了导航sdk的内置语音,我们还提供了自定义语音的播报功能,可以根据您的需要,传入自定义的播报文案进行语音合成与播报。

/**
 * 播放自定义文字,注意如果当前正在播放导航语音,可能导致播放失败,只在内置语音下生效
 *
 * @param tts       要播放的文字
 * @param forcePlay 是否强制进行播报
 *                  true  如果当前有其他导航语音,会等导航语音播放完毕后播放该文字,但是可能导致导航丢失掉关键引导信息
 *                  false 如果当前有其他导航语音,则不播报
 * @return 播放是否成功 true 成功,false 失败
 * @since 2.2.4
 */
playTTS(tts: string, forcePlay: boolean): boolean
返回顶部 示例中心 常见问题 智能客服 公众号
二维码