参数及完整示例
更新时间:2023-03-14
参数及完整示例
BDSSpeechSynthesizerParams.h 文件中包含了各类参数的使用说明,如果开发者想寻找一些功能的设置办法,请浏览该文件中的相关参数说明
语音合成器参数
合成参数
百度语音合成支持的参数用BDSSynthesizerParamKey类型表示,具体如下:
参数 | 含义 |
---|---|
BDS_SYNTHESIZER_PARAM_SPEED | 语速(如现有语速不能满足,需更高语速可提交需求工单或联系商务同学申请) |
BDS_SYNTHESIZER_PARAM_PITCH | 音调 |
BDS_SYNTHESIZER_PARAM_VOLUME | 音量 |
BDS_SYNTHESIZER_PARAM_PID | 产品号 |
BDS_SYNTHESIZER_PARAM_LANGUAGE | 语言 |
BDS_SYNTHESIZER_PARAM_TEXT_ENCODE | 文本编码类型 |
BDS_SYNTHESIZER_PARAM_AUDIO_ENCODING | 音频编码类型 |
BDS_SYNTHESIZER_PARAM_SPEAKER | 发音人 在线基础:0(普通女声) 1(普通男声) 3(磁性男声<度逍遥>) 4(可爱童声<度丫丫>) 在线精品:106(情感男声<度博文>) 110 (活泼童声<度小童>) 111 (可爱童声<度小萌>)103(可爱童声<度米朵>)5(情感女声<度小娇>)5118(甜美女声<度小鹿>)5003(磁性男声<度逍遥(精品)>) |
BDS_SYNTHESIZER_PARAM_USER_AGENT | UA |
BDS_SYNTHESIZER_PARAM_ONLINE_REQUEST_TIMEOUT | 超时时间 |
BDS_SYNTHESIZER_PARAM_ETTS_AUDIO_FORMAT | 音频格式 |
BDS_SYNTHESIZER_PARAM_ETTS_VOCODER_OPTIM_LEVEL | 合成引擎速度优化等级 |
BDS_SYNTHESIZER_PARAM_SYNTH_STRATEGY | 合成策略 |
语音合成文本语言
语音合成文本语言用BDSSynthesizerLanguages类型表示,具体如下:
参数 | 含义 |
---|---|
BDS_SYNTHESIZER_LANGUAGE_ZH | 中文 |
BDS_SYNTHESIZER_LANGUAGE_EN | 英文 |
语音合成文本编码格式
语音合成文本编码格式用BDSSynthesizerTextEncodings类型表示,具体如下:
参数 | 含义 |
---|---|
BDS_SYNTHESIZER_TEXT_ENCODE_GBK | GBK编码 |
BDS_SYNTHESIZER_TEXT_ENCODE_BIG5 | 大五码编码 |
BDS_SYNTHESIZER_TEXT_ENCODE_UTF8 | UTF8编码 |
语音合成音频编码格式
不支持 mp3,支持AMR、OPUS。 语音合成音频编码格式用BDSSynthesizerAudioEncoding类型表示,具体如下:
参数 | 含义 |
---|---|
BDS_SYNTHESIZER_AUDIO_ENCODE_BV_16K | bv 16k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_6K6 | amr 6.6k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_8K85 | amr 8.85k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_12K65 | amr 12.65k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_14K25 | amr 14.25k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_15K85 | amr 15.85k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_18K25 | amr 18.25k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_19K85 | amr 19.85k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_23K05 | amr 23.05k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_AMR_23K85 | amr 23.85k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_OPUS_8K | opus 8k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_OPUS_16K | opus 16k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_OPUS_18K | opus 18k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_OPUS_20K | opus 20k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_OPUS_24K | opus 24k比特率 |
BDS_SYNTHESIZER_AUDIO_ENCODE_OPUS_32K | opus 32k比特率 |
关于AVAudioSession
SDK默认会将AudioSession的Category设置为AVAudioSessionCategoryPlayback,并在必要的时候调用setActive接口对外部音频进行打断及恢复,如果开发者不希望SDK对AudioSession进行操作自己管理,可以通过参数配置接口,把BDS_SYNTHESIZER_PARAM_ENABLE_AVSESSION_MGMT
对应的value设置为NO,即可屏蔽SDK内部的操作,按照需求,设置BDS_SYNTHESIZER_PARAM_AUDIO_SESSION_CATEGORY_OPTIONS
自行配置AudioSession。
完整示例
语音合成完整示例
-(void)configureOnlineTTS{
[[BDSSpeechSynthesizer sharedInstance] setApiKey:API_KEY withSecretKey:SECRET_KEY];
[[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryPlayback error:nil];
[[BDSSpeechSynthesizer sharedInstance] setSynthParam:@(0) forKey:BDS_SYNTHESIZER_PARAM_SPEAKER];
}
-(void)configureOfflineTTS{
NSError *err = nil;
// 在这里选择不同的离线音库(请在XCode中Add相应的资源文件),同一时间只能load一个离线音库。根据网络状况和配置,SDK可能会自动切换到离线合成。
NSString* offlineEngineSpeechData = [[NSBundle mainBundle] pathForResource:@"Chinese_And_English_Speech_Female" ofType:@"dat"];
NSString* offlineChineseAndEnglishTextData = [[NSBundle mainBundle] pathForResource:@"Chinese_And_English_Text" ofType:@"dat"];
err = [[BDSSpeechSynthesizer sharedInstance] loadOfflineEngine:offlineChineseAndEnglishTextData speechDataPath:offlineEngineSpeechData licenseFilePath:nil withAppCode:APP_ID];
if(err){
[self displayError:err withTitle:@"Offline TTS init failed"];
return;
}
[TTSConfigViewController loadedAudioModelWithName:@"Chinese female" forLanguage:@"chn"];
[TTSConfigViewController loadedAudioModelWithName:@"English female" forLanguage:@"eng"];
}
-(void)test : {
// 获得合成器实例
[[BDSSpeechSynthesizer sharedInstance] setSynthesizerDelegate:self];
// 设置委托对象
[[BDSSpeechSynthesizer sharedInstance] setSynthesizerDelegate:self];
// 开始合成并播放
NSError* speakError = nil;
if([[BDSSpeechSynthesizer sharedInstance] speakSentence:@"您好" withError:&speakError] == -1){
// 错误
NSLog("错误: %ld, %@", (long)speakError.code, speakError.localizedDescription);
}
if([[BDSSpeechSynthesizer sharedInstance] speakSentence:@"今天天气真不错" withError:&speakError] == -1){
// 错误
NSLog("错误: %ld, %@", (long)speakError.code, speakError.localizedDescription);
}
if([[BDSSpeechSynthesizer sharedInstance] speakSentence:@"Today's weather is really good!" withError:&speakError] == -1){
// 错误
NSLog("错误: %ld, %@", (long)speakError.code, speakError.localizedDescription);
}
}
- (void)synthesizerStartWorkingSentence:(NSInteger)SynthesizeSentence
{
NSLog(@"Began synthesizing sentence %ld", (long)SynthesizeSentence);
}
- (void)synthesizerFinishWorkingSentence:(NSInteger)SynthesizeSentence
{
NSLog(@"Finished synthesizing sentence %ld", (long)SynthesizeSentence);
}
- (void)synthesizerSpeechStartSentence:(NSInteger)SpeakSentence
{
NSLog(@"Began playing sentence %ld", (long)SpeakSentence);
}
- (void)synthesizerSpeechEndSentence:(NSInteger)SpeakSentence
{
NSLog(@"Finished playing sentence %ld", (long)SpeakSentence);
}