讯飞 语音sdk 分段播放文本

本文介绍如何使用讯飞语音合成SDK实现文本的分段播放功能。主要步骤包括:将待播放文本存储于数组中,依次播放数组中的每个文本片段,并通过回调函数控制播放流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

讯飞语音合成sdk中 分段播放文本功能的实现。


1.建立一个数组,把要分段播放的文本放入数组

2.首先播放数组的第一个记录。    [_iFlySpeechSynthesizer startSpeaking:@"测试语音"];

3. 在onComplete 方法中去播放下一个记录

_iFlySpeechSynthesizer4.注意,由于 _iFlySpeechSynthesizer 是派送单独线程进行 语音播放,在onComplete中无法获得 _iFlySpeechSynthesizer的上下文,所以要用这样的代码:

//把数组中的内容分段阅读,中间加入提示音
-(void) speechWithArray{
    if(self.speech_content_array == nil || [self.speech_content_array count] <= 0 ){
        return ;
    }
    [self speechWithString:self.speech_content_array[0] ];
}

-(void) speechWithString:(NSString  *) content{
    DLog(@"合成语音的内容是%@",content);
    [_iFlySpeechSynthesizer startSpeaking:content];
}


/** 播放后结束回调

 当整个合成结束之后会回调此函数

 @param error 错误码
 */
- (void) onCompleted:(IFlySpeechError*) error{
    self.current_speech_number ++;
    if (self.current_speech_number < [self.speech_content_array count]){
        [self.audioPlayer play];
        [self performSelectorOnMainThread:@selector(speechWithString:) withObject:(NSString *)self.speech_content_array[self.current_speech_number] waitUntilDone:NO];
    }else{
        [self.voiceHud dismissView];
        current_msc_status = MSC_Ready;
    }

}

<span style="color:#ff0000;">[self performSelectorOnMainThread:@selector(speechWithString:) withObject:(NSString *)self.speech_content_array[self.current_speech_number] waitUntilDone:NO];</span>
这个是关键。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值