输入参数和输出回调
更新时间:2023-01-30
离线及在线选择
int initTts(TtsMode ttsMode);
初始化tts引擎,可以指定纯在线,离在线混合引擎,纯离线引擎。
- TtsMode.ONLINE 纯在线。断网即不可使用。
- TtsMode.MIX 离在线混合。 断网或者网络请求超时使用离线。
- TtsMode.OFFLINE 纯离线。 任意网络状态都可以使用。
网络状况及离线合成引擎
合成参数
在SpeechSynthesizer类中setParam 方法中使用的参数及值。 填入的值如果不在范围内,相当于没有填写使用默认值。
参数名 | 类型,值 | 在线/离线生效 | 常用程度 | 解释 |
---|---|---|---|---|
PARAM_SPEAKER(基础发音人) | 选项 | 在线 | 常用 | 仅在线生效,在线的发音 |
~ | "0"(默认) | ~ | ~ | 度小美(普通女声) |
~ | "1" | ~ | ~ | 度小宇(成熟男声) |
~ | "3" | ~ | ~ | 度逍遥(磁性男声) |
~ | "4" | ~ | ~ | 度丫丫(可爱女童) |
PARAM_SPEAKER (精品发音人) | "106" | ~ | ~ | 度博文(情感男声) |
~ | "110" | ~ | ~ | 度小童(情感儿童声) |
~ | "111" | ~ | ~ | 度小萌(情感女声) |
~ | "103" | ~ | ~ | 度米朵(情感儿童声) |
~ | "5" | ~ | ~ | 度小娇(情感女声) |
~ | "5003" | ~ | ~ | 精品度逍遥(磁性男声) |
~ | "5118" | ~ | ~ | 度小鹿(甜美女声) |
PARAM_VOLUME | String, 默认"5" | 全部 | 常用 | 在线及离线合成的音量 。范围["0" - "15"], 不支持小数。 "0" 最轻,"15" 最响(取值为0时为音量最小值,并非为无声) |
PARAM_SPEED | String, 默认"5" | 全部 | 常用 | 在线及离线合成的语速 。范围["0" - "15"], 不支持小数。 "0" 最慢,"15" 最快(如需更高语速可提交需求工单或联系商务同学申请) |
PARAM_PITCH | String, 默认"5" | 全部 | 常用 | 在线及离线合成的语调 。范围["0" - "15"], 不支持小数。 "0" 最低沉, "15" 最尖 |
PARAM_MIX_MODE | 选项 | 全部 | 常用 | 控制何种网络状况切换到离线。设置initTts(SpeechSynthesizer.PARAM_MIX_MODE)后,该参数生效。 |
~ | MIXMODE DEFAULT(默认) |
~ | ~ | WIFI 使用在线合成,非WIFI使用离线合成 |
~ | MIX_MODE_HIGH _SPEED_NETWORK |
~ | ~ | WIFI,4G,3G 使用在线合成,其他使用离线合成 |
~ | MIXMODE_HIGH _SPEED SYNTHESIZE |
~ | ~ | 同MIX_MODE_HIGH_SPEED_NETWORK。但是连接百度服务器超时1.2s后,自动切换离线合成引擎 |
~ | MIXMODE_HIGH SPEED_SYNTHESIZE _WIFI |
~ | ~ | 同 MIX_MODE_DEFAULT。 但是连接百度服务器超时1.2s后,自动切换离线合成引擎 |
PARAM_MIX_MODE_TIMEOUT(MIX模式下生效) | 选项 | 离在线混合模式 | 不常用 | 离在线模式,强制在线优先。在线请求后超时xx秒后,转为离线合成。 |
~ | PARAM_MIX_TIMEOUT_FOUR_SECOND | 默认 | ~ | 默认值,在线请求后超时4秒后,转为离线合成。 |
~ | PARAM_MIX_TIMEOUT_THREE_SECOND | 默认值 | ~ | 默认值,在线请求后超时3秒后,转为离线合成。 |
~ | PARAM_MIX_TIMEOUT_TWO_SECOND | 默认值 | ~ | 默认值,在线请求后超时2秒后,转为离线合成。 |
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, int engineType);
- audioData: 合成的部分数据,可以就这部分数据自行播放或者顺序保存到文件。如果保存到文件的话,是一个pcm可以播放的音频文件。 音频数据是16K采样率,16bits编码,单声道。
- progress 大致进度。从0 到 “合成文本的字符数”。
- engineType 1: 当前的audioData数据由离线引擎合成; 0:当前的audioData数据数据由在线引擎(百度服务器)合成。
合成结束
本次合成正常结束状态时,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,具体的错误信息。