全部服务产品
开发者频道
定价
登录
语音播报
下载开发文档

为了能够让导航正常进行语音播报,还需要对TTS模块进行初始化,百度导航SDK支持两种TTS实现方案,即内置TTS和外置TTS。 导航SDK自带TTS能力已经打包为一个独立的aar,命名为NaviTts.aar,可以将其以aar module引入集成APP project,引入后,可以利用导航SDK提供的TTS接口进行初始化。
当不需要导航SDK自带TTS时,可以不进行集成,此时需要利用导航SDK支持外部TTS的方式进行TTS能力初始化。

1、内置TTS
TTS授权申请
(1)以SDK授权申请时相同账号登录,点击右上角的“控制台“,进入控制台界面,点击左侧导航栏“产品服务”,选择“语音技术”,然后点击创建应用。
androidstudio_2.png
(2)按步骤填入应用名称、包名等信息。
(3)点击立即创建会生成App ID、API KeySecret Key,就是在开发中初始化TTS时需要传入的参数
(4)申请 sn,在百度地图开放平台,点击控制台,左侧边栏点击"应用管理"-"我的应用",页面上找到"离线tts申请"点进去,然后点击"申请新语音key",选择应用对应的ak填写资料提交申请,申请成功后生成audio_key,该值为tts初始化的authSn参数。
androidstudio_2.png
内置 TTS 初始化代码参考:
// 使用内置TTS
BNTTsInitConfig config = new BNTTsInitConfig.Builder()
.context(getApplicationContext())
.appId(BNDemoUtils.getTTSAppID())
.appKey(BNDemoUtils.getTTSAppKey())
.secretKey(BNDemoUtils.getTTSsecretKey())
.authSn(BNDemoUtils.getAuth())
.build();
BaiduNaviManagerFactory.getTTSManager().initTTS(config);

需要状态的回调可以参考:

// 注册同步内置tts状态回调
BaiduNaviManagerFactory.getTTSManager().setOnTTSStateChangedListener(
new IBNTTSManager.IOnTTSPlayStateChangedListener() {
@Override
public void onPlayStart() {
Log.e("BNSDKDemo", "ttsCallback.onPlayStart");
}
@Override
public void onPlayEnd(String speechId) {
Log.e("BNSDKDemo", "ttsCallback.onPlayEnd");
}
@Override
public void onPlayError(int code, String message) {
Log.e("BNSDKDemo", "ttsCallback.onPlayError");
}
}
);
外置TTS

当初始化TTS只传入IBNOuterTTSPlayerCallback时,表示将使用外置TTS能力,不需要集成百度导航SDK自带的TTS资源。

// 使用外置TTS播报,与上面的内置TTS播报接口二选一,不可同时存在
BaiduNaviManagerFactory.getTTSManager().initTTS(new IBNTTSManager.IBNOuterTTSPlayerCallback() {
/**
* 外部TTS播报文案
* @param speech 播报文案
* @param bPreempt 是否抢占播报
*
* @return 执行成功1, 执行失败0
*/
@Override
public int playTTSText(String speech, int bPreempt, String speechId) {
Log.e(TAG, speech);
return 0;
}
/**
* 获取外部TTS当前播报状态
*
* @return {@link PLAYER_STATE_NOT_INIT} {@link PLAYER_STATE_IDLE} {@link PLAYER_STATE_PLAYING}
* {@link PLAYER_STATE_PAUSE} {@link PLAYER_STATE_ERROR}
*/
@Override
public int getTTSState() {
return 0;
}
});
注意:当使用外置TTS能力时,一定要正确返回getTTSState()接口的返回值,百度导航SDK内部将根据该值判断当前TTS模块状态,是否能够进行播报,其返回值类型如下:
IBNTTSManager.IBNOuterTTSPlayerCallback.PLAYER_STATE_NOT_INIT; //未初始化
IBNTTSManager.IBNOuterTTSPlayerCallback.PLAYER_STATE_IDLE; // 空闲
IBNTTSManager.IBNOuterTTSPlayerCallback.PLAYER_STATE_PLAYING; // 播放中
IBNTTSManager.IBNOuterTTSPlayerCallback.PLAYER_STATE_PAUSE; // 暂停
IBNTTSManager.IBNOuterTTSPlayerCallback.PLAYER_STATE_ERROR; // 错误

上一篇

导航实时数据获取

下一篇

传入外部GPS数据

本篇文章对您是否有帮助?