输入参数和输出回调

离线及在线选择

int initTts(TtsMode ttsMode);

初始化tts引擎,可以指定纯在线,离在线混合引擎。

  • TtsMode.ONLINE 纯在线。断网即不可使用。
  • TtsMode.MIX 离在线混合。 断网或者网络请求超时使用离线。

网络状况及离在线合成引擎:

合成参数

在SpeechSynthesizer类中setParam 方法中使用的参数及值。
填入的值如果不在范围内,相当于没有填写使用默认值。

参数名 类型,值 在线/离线生效 常用程度 解释
PARAM_SPEAKER 选项 在线 常用 仅在线生效,在线的发音
~ "0"(默认) ~ ~ 普通女声
~ "1" ~ ~ 普通男声
~ "2" ~ ~ 特别男声
~ "3" ~ ~ 情感男声<度逍遥>
~ "4" ~ ~ 情感儿童声<度丫丫>
PARAM_VOLUME String, 默认"5" 全部 常用 在线及离线合成的音量 。范围["0" - "15"], 不支持小数。 "0" 最轻,"15" 最响。
PARAM_SPEED String, 默认"5" 全部 常用 在线及离线合成的语速 。范围["0" - "15"], 不支持小数。 "0" 最慢,"15" 最快
PARAM_PITCH String, 默认"5" 全部 常用 在线及离线合成的语调 。范围["0" - "15"], 不支持小数。 "0" 最低沉, "15" 最尖
PARAM_MIX_MODE 选项 全部 常用 控制何种网络状况切换到离线。 SDK没有纯离线功能,强制在线优先。设置initTts(SpeechSynthesizer.PARAM_MIX_MODE)后,该参数生效。
~ MIXMODE
DEFAULT(默认)
~ ~ WIFI 使用在线合成,非WIFI使用离线合成 ,6s超时
~ MIX_MODE_HIGH
_SPEED_NETWORK
~ ~ WIFI,4G,3G 使用在线合成,其他使用离线合成 ,6s超时
~ MIXMODE_HIGH
_SPEED

SYNTHESIZE
~ ~ 同MIX_MODE_HIGH_SPEED_NETWORK。但是连接百度服务器超时1.2s后,自动切换离线合成引擎
~ MIXMODE_HIGH
SPEED_SYNTHESIZE
_WIFI
~ ~ 同 MIX_MODE_DEFAULT。 但是连接百度服务器超时1.2s后,自动切换离线合成引擎
PARAM_TTS_TEXT
_MODEL_FILE
String , 文件路径 离线 常用 文本模型文件路径,即bd_etts_text.dat所在的路径。
PARAM_TTS_SPEECH
_MODEL_FILE
String , 文件路径 离线 常用 声学模型文件路径。即"bd_etts_speech_female.dat“所在的路径。需要男声,请使用bd_etts_speech_male.dat。
PARAM_AUDIO
_ENCODE
选项 在线 基本不用 不使用改参数即可。SDK与服务器音频传输格式,与 PARAMAUDIO_RATE参数一起使用。可选值为SpeechSynthesizer.AUDIO_ENCODE*, 其中SpeechSynthesizer.AUDIO_ENCODE_PCM为不压缩
PARAM_AUDIO
_RATE
选项 在线 基本不用 不使用改参数即可。SDK与服务器音频传输格式,与 PARAMAUDIO_ENCODE参数一起使用。可选值为SpeechSynthesizer.AUDIO_BITRATE*, 其中SpeechSynthesizer.AUDIO_BITRATE_PCM 为不压缩传输
PARAMVOCODER
OPTIM_LEVEL
选项, 默认"0" 离线 基本不用 离线合成引擎速度优化等级。取值范围["0", "2"],值越大速度越快,但是效果越差
PARAMTTS
LICENCE_FILE
String , 文件路径 离线 基本不用 临时授权文件。目前SDK会自动下载正式授权文件。正式授权文件有效期3年,并在最后一个月SDK自动更新下载授权文件。

输出回调接口

SpeechSynthesizerListener 中,SDK会根据合成的状态及数据调用这个接口中的不同方法。

SDK使用的是边获取合成结果,边播放的方式。因此合成,播放的回调会交替进行。使用speak方法时,都会产生合成和播放的回调。
如果使用synthesize方法,则只会产生合成的回调,需要用户自行处理onSynthesizeDataArrived中的audioData的音频数据。

其中回调方法中的utteranceId是调用speak或者synthesize合成方法时输入的,默认是"0"。

合成开始

本次合成过程开始时,SDK的回调

void onSynthesizeStart (String utteranceId);

合成过程中的数据回调接口

合成数据过程中的回调接口,返回合成数据和进度,分多次回调。

void onSynthesizeDataArrived(String utteranceId, byte[] audioData, int progress);
  • audioData: 合成的部分数据,可以就这部分数据自行播放或者顺序保存到文件。如果保存到文件的话,是一个pcm可以播放的音频文件。 音频数据是16K采样率,16bits编码,单声道。

  • progress 大致进度。从0 到 “合成文本的字符数”。

合成结束

本次合成正常结束状态时,SDK的回调

void onSynthesizeFinish (String utteranceId);

播放开始

SDK开始控制播放器播放合成的声音。如果使用speak方法会有此回调,使用synthesize没有。

void onSpeechStart (String utteranceId);

播放过程中的回调

播放数据过程中的回调接口,分多次回调。
如果使用speak方法会有此回调,使用synthesize没有。

void onSpeechProgressChanged(String utteranceId, int progress);
  • progress 大致进度。从0 到 “合成文本的字符数”。

播放结束

播放正常结束状态时的回调方法,如果过程中出错,则回调onError,不再回调此接口。

void onSpeechFinish (String utteranceId);

合成和播放过程中出错时的回调

合成和播放过程中出错时回调此接口

onError(String utteranceId,SpeechError error);

SpeechError 类有2个值:

  • code:int,错误码。 具体错误码见“错误码及解决方法”一节
  • description: String, 具体的错误信息。