语音合成 最后更新时间: 2021年01月22日
内置语音控制
导航SDK从v5.6.0开始在AMapNavi提供了内置语音功能,开启内置语音以后,导航SDK会使用SDK内部语音合成方案进行播报,外部无需关心语音播报相关内容。
内置语音开关接口:
/**
* 设置使用内部语音播报
*
* @param isUseInnerVoice 是否使用内部语音播报, 默认为false
* @param isCallBackText isUseInnerVoice设置为true以后,{@link AMapNaviListener#onGetNavigationText}接口是否继续返回文字,默认为false
*/
@Override
public void setUseInnerVoice(boolean isUseInnerVoice, boolean isCallBackText)
如果您使用内置语音,可以使用如下接口来控制内置语音的播报行为:
/**
* 开始内置语音播报,只有在使用内置语音的情况下才有效
* @since 6.4.0
*/
@Override
public void startSpeak()
/**
* 停止内置语音播报,只有在使用内置语音的情况下有效
* 注意:7.1.0版本以后,调用该接口,会停止播放导航语音,但是仍然可以播放自定义语音
* @since 6.4.0
*/
@Override
public void stopSpeak()
SDK 会通过AMapNaviListener类回调将播报的文字内容透传出来,如果您不想使用SDK的内置语音进行播报,也可以选择第三方的语音合成SDK(如:阿里云语音合成)将内容转化成声音信息,完成导航播报。以下是涉及到相关接口和回调:
/**
* 导航播报信息回调函数。
* @param text 播报文字。
* @since 5.3.0
*/
void onGetNavigationText(String text)
如果您使用自己合成的方式来进行播报,需要在每句播报前和播报完成后设置一下AMapNavi中如下接口,保证不出现语音打断和延迟问题。
/**
* 获取当前SDK播报状态
* 注意:正在播报的时候请不要播报语音,会导致与导航的播报冲突。
* @since 6.4.0
* @return 如果正在播报语音,返回值为true,如果没有在播报语音,返回值为false
*/
public static boolean isTtsPlaying()
自定义语音播报
如果您使用了导航sdk的内置语音,我们还提供了自定义语音的播报功能,可以根据您的需要,传入自定义的播报文案进行语音合成与播报。
/**
* 播放自定义文字,注意如果当前正在播放导航语音,可能导致播放失败,只在内置语音下生效
*
* @param tts 要播放的文字
* @param forcePlay 是否强制进行播报
* true 如果当前有其他导航语音,会等导航语音播放完毕后播放该文字,但是可能导致导航丢失掉关键引导信息
* false 如果当前有其他导航语音,则不播报
* @return 播放是否成功 true 成功,false 失败
* @since 6.7.0
*/
@Override
public boolean playTTS(String tts, boolean forcePlay)