为了能够让导航正常进行语音播报,还需要对TTS模块进行初始化,百度导航SDK支持两种TTS实现方案,即内置TTS和外置TTS。 导航SDK自带TTS能力已经打包为一个独立的aar,命名为NaviTts.aar,可以将其以aar module引入集成APP project,引入后,可以利用导航SDK提供的TTS接口进行初始化。
当不需要导航SDK自带TTS时,可以不进行集成,此时需要利用导航SDK支持外部TTS的方式进行TTS能力初始化。
TTS授权申请
(1)以SDK授权申请时相同账号登录,点击右上角的“控制台“,进入控制台界面,点击左侧导航栏“产品服务”,选择“语音技术”,然后点击创建应用。

(2)按步骤填入应用名称、包名等信息。
(3)点击立即创建会生成App ID、API Key和Secret Key,就是在开发中初始化TTS时需要传入的参数
(4)申请 sn,在百度地图开放平台,点击控制台,左侧边栏点击"应用管理"-"我的应用",页面上找到"离线tts申请"点进去,然后点击"申请新语音key",选择应用对应的ak填写资料提交申请,申请成功后生成audio_key,该值为tts初始化的authSn参数。

内置 TTS 初始化代码参考:
// 使用内置TTSBNTTsInitConfig 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() {@Overridepublic void onPlayStart() {Log.e("BNSDKDemo", "ttsCallback.onPlayStart");}@Overridepublic void onPlayEnd(String speechId) {Log.e("BNSDKDemo", "ttsCallback.onPlayEnd");}@Overridepublic void onPlayError(int code, String message) {Log.e("BNSDKDemo", "ttsCallback.onPlayError");}});
当初始化TTS只传入IBNOuterTTSPlayerCallback时,表示将使用外置TTS能力,不需要集成百度导航SDK自带的TTS资源。
// 使用外置TTS播报,与上面的内置TTS播报接口二选一,不可同时存在BaiduNaviManagerFactory.getTTSManager().initTTS(new IBNTTSManager.IBNOuterTTSPlayerCallback() {/*** 外部TTS播报文案* @param speech 播报文案* @param bPreempt 是否抢占播报** @return 执行成功1, 执行失败0*/@Overridepublic 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}*/@Overridepublic int getTTSState() {return 0;}});
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; // 错误
上一篇
下一篇
本篇文章对您是否有帮助?