1. TTSplayer的使用
TTS 能力的应用场景多为语音播报,将文本信息转换为语音数据后,需要在音频设备上播放出来。TTS 播放器就是针对这一场景而设计开发的一款通用产品。本开发指南面向安卓平台和PC平台下的 Java 语言。
TTS 播放器有以下特性
- 支持选择播放设备类型,如:外放,蓝牙耳机。 仅Android 平台
- 支持创建多个实例同时进行合成播报
- 支持暂停/继续/调整播放进度等控制
- 支持播放进度通知。仅本地 TTS 能力
- 支持合成进度通知。仅本地 TTS 能力
- 播放过程中可以通知正在播放的音节(拼音),及当前断句。仅本地 TTS 能力
- 支持简化播放。当业务场景非常简单时(仅使用一个播放器实例),可使用简化接口省略 TTS 能力初始化等调用。
- 平台相关功能可扩展。
1.1 使用
当仅使用一个 TTS 播放器实例且无其他 TTS 能力调用时,可以参考以下示例
// 初始化灵云 SDK。如果是 Android 平台,第二个参数为 Context 实例
HciCloudSys.hciInit(sysInitConfig, null);
TTSPlayer player = new TTSPlayer(new TTSPlayerListener() {
@Override
public void onPlayerEventStateChange(PlayerEvent playerEvent) {
System.out.println(playerEvent.toString());
// TODO: 状态通知,BEGIN, END, PAUSE, RESUME, BUFFERING
}
@Override
public void onPlayerEventProgressChange(PlayerEvent playerEvent,
int playPos, int synthPos, int total) {
// TODO: 进度通知,PROGRESS
// playPos 为播放进度,synthPos 为合成进度,total 为总进度
}
@Override
public void onPlayerEventProgressChange(PlayerEvent playerEvent,
int textStart, int textEnd, String sentence,
TtsSynthSyllable syllable) {
// TODO: 进度通知,PROGRESS
// textStart, textEnd 为当前播放的句子在合成文本中的起始位置
// sentence 为当前播放的句子文本
// syllable 为当前播放的音节
}
@Override
public void onPlayerEventPlayerError(PlayerEvent playerEvent,
int errorCode) {
// TODO: 错误通知, ENGINE_ERROR, DEVICE_ERROR
// errorCode 错误代码
}
@Override
public void onPlayerEventSeek(PlayerEvent playerEvent, int seekPos) {
// TODO: 进度调整通知, SEEKING, SEEK
// seekPos 进度位置
}
});
// ****** 以下调用不一定在同一线程上,但是时序上要保证正确 ********
player.play("要播放的文本", "capkey=tts.local.synth,speed=5",
"dataPath=/path/to/resource");
// ... 其他逻辑
player.pause();
// ... 其他逻辑
player.seek(1000, true); // 调整进度至 1000,调整完成后,自动 resume
// ... 其他逻辑
player.stop();
// ... 其他逻辑
HciCloudSys.hciRelease();