訊飛音声sdkセグメント再生テキスト

1442 ワード

訊飛音声合成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>
これがポイントです.