iOS百度语音合成播报在播报频繁的情况下没实现串行播报
Fabuinitial 发布于2017-05 浏览:1993 回复:10
0
收藏

我使用的服务是:iOS离在线融合语音合成SDK


调用的接口是:BDSSpeechSynthesizer.h


参数设置情况:

    ///女声

    [[BDSSpeechSynthesizer sharedInstance] setSynthParam:

     [NSNumber numberWithInt:BDS_SYNTHESIZER_SPEAKER_FEMALE]

                                                  forKey:BDS_SYNTHESIZER_PARAM_SPEAKER];

    ///音量 0 ~9

    [[BDSSpeechSynthesizer sharedInstance] setSynthParam:[NSNumber numberWithInt:9] forKey:BDS_SYNTHESIZER_PARAM_VOLUME];

    ///语速 0 ~9

    [[BDSSpeechSynthesizer sharedInstance] setSynthParam:[NSNumber numberWithInt:7] forKey:BDS_SYNTHESIZER_PARAM_SPEED];

    ///语调 0 ~9

    [[BDSSpeechSynthesizer sharedInstance] setSynthParam: [NSNumber numberWithInt:5] forKey:BDS_SYNTHESIZER_PARAM_PITCH];

    ///mp3音质  压缩的16K

    [[BDSSpeechSynthesizer sharedInstance] setSynthParam:

     [NSNumber numberWithInt: BDS_SYNTHESIZER_AUDIO_ENCODE_MP3_16K]                                      forKey:BDS_SYNTHESIZER_PARAM_AUDIO_ENCODING   ];

    //播放等级

    [[BDSSpeechSynthesizer sharedInstance] setSynthParam:[NSNumber numberWithInt:2] forKey:BDS_SYNTHESIZER_PARAM_ETTS_VOCODER_OPTIM_LEVEL];

    /// 离线相关设置

    NSString* offlineEngineSpeechData = [[NSBundle mainBundle] pathForResource:@"Chinese_Speech_Female" ofType:@"dat"];

    NSString* offlineEngineTextData = [[NSBundle mainBundle] pathForResource:@"Chinese_Text" ofType:@"dat"];

    NSString* offlineEngineEnglishSpeechData = [[NSBundle mainBundle] pathForResource:@"English_Speech_Female" ofType:@"dat"];

    NSString* offlineEngineEnglishTextData = [[NSBundle mainBundle] pathForResource:@"English_Text" ofType:@"dat"];

    // 设置线程,默认使用主线程

    [[BDSSpeechSynthesizer sharedInstance] setSDKCallbackQueue:dispatch_queue_create("baiduVoiceQueue", DISPATCH_QUEUE_SERIAL)];

    

开发平台和机型:iOS 所有机型


SDK版本号:2.2.2


代码或日志截图(上传截图能帮助您更快解决问题):

[[BDSSpeechSynthesizer sharedInstance] setSDKCallbackQueue:dispatch_queue_create("baiduVoiceQueue", DISPATCH_QUEUE_SERIAL)];


复现步骤、现象及其他描述:

出现的问题是,推送消息用百度语音TTS播报,百度设置的线程是主线程串行,在调用时我也加了同步锁,可还是在消息频繁推送的情况下,上一条消息还没播报完就被下一条给盖过去了




收藏
点赞
0
个赞
共10条回复 最后由用户已被禁言回复于2022-04
#11chenxiaoyu3回复于2017-05

Fabuinitial:

回复chenxiaoyu3:是同样的文字,在不同时间的请求下,合成的结果时常不一样

回复Fabuinitial:是否可以提供一下出问题的具体文本,我们排查一下原因。

0
#10Fabuinitial回复于2017-05

chenxiaoyu3:

回复Fabuinitial:是同样的文字,在不同时间的请求下,合成的结果时常不一样?同样的文字有变化,还是说不同的文字,比如某个特定的句子,语速总是过快?

回复chenxiaoyu3:是同样的文字,在不同时间的请求下,合成的结果时常不一样

0
#9chenxiaoyu3回复于2017-05

Fabuinitial:

回复chenxiaoyu3:

我们在播放推送传来的内容,调用百度语音合成,合成播放的语音偶尔会出现语速突然变慢,语调也发生变化,间断性的出现

回复Fabuinitial:是同样的文字,在不同时间的请求下,合成的结果时常不一样?同样的文字有变化,还是说不同的文字,比如某个特定的句子,语速总是过快?

0
#8Fabuinitial回复于2017-05

chenxiaoyu3:

回复Fabuinitial:


1. 频繁调用开始合成接口,最终播放的顺序是应该由调用方执行控制。比如在第一个播报完成后再次调用第二次合成。

2. 还请描述一下具体的case

回复chenxiaoyu3:

我们在播放推送传来的内容,调用百度语音合成,合成播放的语音偶尔会出现语速突然变慢,语调也发生变化,间断性的出现

0
#7chenxiaoyu3回复于2017-05

Fabuinitial:

回复chenxiaoyu3:

APP ID:9539034

首先感谢您为我的解答,但还是存在以下问题

1.我的问题应该是线程上的问题,虽然委托能实现控制播报,但是无法实现全部的顺序播报,在频繁次合成时,只有部分播报,对于iOS不知道这问题你们有没有测试过, 还是说能给我一个案例

2.百度语音合成iOS和andrio都出现语音速度的问题,对于字符偏长的字符播报速度会偏快,这是什么原因造成的

期待您的回复

回复Fabuinitial:


1. 频繁调用开始合成接口,最终播放的顺序是应该由调用方执行控制。比如在第一个播报完成后再次调用第二次合成。

2. 还请描述一下具体的case

0
#6Fabuinitial回复于2017-05

回复chenxiaoyu3:

APP ID:9539034

首先感谢您为我的解答,但还是存在以下问题

1.我的问题应该是线程上的问题,虽然委托能实现控制播报,但是无法实现全部的顺序播报,在频繁次合成时,只有部分播报,对于iOS不知道这问题你们有没有测试过, 还是说能给我一个案例

2.百度语音合成iOS和andrio都出现语音速度的问题,对于字符偏长的字符播报速度会偏快,这是什么原因造成的

期待您的回复

0
#5Fabuinitial回复于2017-05

chenxiaoyu3:

回复Fabuinitial:可以参考 合成委托的函数(

[[BDSSpeechSynthesizer sharedInstance] setSynthesizerDelegate:self];

)通过修改合成开始,合成结束等委托 进行播报顺序的控制

回复chenxiaoyu3:谢谢,我试试

0
#4chenxiaoyu3回复于2017-05

Fabuinitial:

我使用的服务是:iOS离在线融合语音合成SDK


调用的接口是:BDSSpeechSynthesizer.h


参数设置情况:

    ///女声

    [[BDSSpeechSynthesizer sharedInstance] setSynthParam:

     [NSNumber numberWithInt:BDS_SYNTHESIZER_SPEAKER_FEMALE]

                                                  forKey:BDS_SYNTHESIZER_PARAM_SPEAKER];

    ///音量 0 ~9

    [[BDSSpeechSynthesizer sharedInstance] setSynthParam:[NSNumber numberWithInt:9] forKey:BDS_SYNTHESIZER_PARAM_VOLUME];

    ///语速 0 ~9

    [[BDSSpeechSynthesizer sharedInstance] setSynthParam:[NSNumber numberWithInt:7] forKey:BDS_SYNTHESIZER_PARAM_SPEED];

    ///语调 0 ~9

    [[BDSSpeechSynthesizer sharedInstance] setSynthParam: [NSNumber numberWithInt:5] forKey:BDS_SYNTHESIZER_PARAM_PITCH];

    ///mp3音质  压缩的16K

    [[BDSSpeechSynthesizer sharedInstance] setSynthParam:

     [NSNumber numberWithInt: BDS_SYNTHESIZER_AUDIO_ENCODE_MP3_16K]                                      forKey:BDS_SYNTHESIZER_PARAM_AUDIO_ENCODING   ];

    //播放等级

    [[BDSSpeechSynthesizer sharedInstance] setSynthParam:[NSNumber numberWithInt:2] forKey:BDS_SYNTHESIZER_PARAM_ETTS_VOCODER_OPTIM_LEVEL];

    /// 离线相关设置

    NSString* offlineEngineSpeechData = [[NSBundle mainBundle] pathForResource:@"Chinese_Speech_Female" ofType:@"dat"];

    NSString* offlineEngineTextData = [[NSBundle mainBundle] pathForResource:@"Chinese_Text" ofType:@"dat"];

    NSString* offlineEngineEnglishSpeechData = [[NSBundle mainBundle] pathForResource:@"English_Speech_Female" ofType:@"dat"];

    NSString* offlineEngineEnglishTextData = [[NSBundle mainBundle] pathForResource:@"English_Text" ofType:@"dat"];

    // 设置线程,默认使用主线程

    [[BDSSpeechSynthesizer sharedInstance] setSDKCallbackQueue:dispatch_queue_create("baiduVoiceQueue", DISPATCH_QUEUE_SERIAL)];

    

开发平台和机型:iOS 所有机型


SDK版本号:2.2.2


代码或日志截图(上传截图能帮助您更快解决问题):

[[BDSSpeechSynthesizer sharedInstance] setSDKCallbackQueue:dispatch_queue_create("baiduVoiceQueue", DISPATCH_QUEUE_SERIAL)];


复现步骤、现象及其他描述:

出现的问题是,推送消息用百度语音TTS播报,百度设置的线程是主线程串行,在调用时我也加了同步锁,可还是在消息频繁推送的情况下,上一条消息还没播报完就被下一条给盖过去了




回复Fabuinitial:可以参考 合成委托的函数(

[[BDSSpeechSynthesizer sharedInstance] setSynthesizerDelegate:self];

)通过修改合成开始,合成结束等委托 进行播报顺序的控制

0
#3Fabuinitial回复于2017-05

回复周俊316:嗯,好的,APP ID:9539034

0
#2周俊316回复于2017-05

您好,能否提供下APP ID 以便技术追查原因?稍后技术查看后,给您详细答复


0
TOP
切换版块