IOS开发笔记之文字转语音AVSpeechSynthesizer用法

最近在弄文字转语音的东西,IOS6以前的话基本是用私用api或者请求第三方的语音包,IOS7之后有了AVSpeechSynthesizer可以使用,记录下。

使用前先导入

#import 

下面是我自己用的方法

/**
 *  调用系统朗读text
 *
 *  @param text 需要朗读的文字
 */
- (void)readText:(NSString *)text{
    
    if( ([[[UIDevice currentDevice] systemVersion] doubleValue] < 7.0)){
        return;
    }
    
    
    _AVsynthesize = [[AVSpeechSynthesizer alloc]init];
    _AVsynthesize.delegate = self;
    AVSpeechUtterance * utt = [[AVSpeechUtterance alloc] initWithString:text];
    AVSpeechSynthesisVoice * type = [AVSpeechSynthesisVoice voiceWithLanguage:@"zh-CN"];
    utt.voice = type;
    utt.rate = 0.1;
    
    [_AVsynthesize speakUtterance:utt];
    MYLog(@"read.isSpeaking = %hhd",_AVsynthesize.isSpeaking);
    
    /*
     IOS7包含了一组可以用来合成的声音的嗓音,你可以自定义多种嗓音来合成。
     "[AVSpeechSynthesisVoice 0x978a0b0] Language: th-TH",
     "[AVSpeechSynthesisVoice 0x977a450] Language: pt-BR",
     "[AVSpeechSynthesisVoice 0x977a480] Language: sk-SK",
     "[AVSpeechSynthesisVoice 0x978ad50] Language: fr-CA",
     "[AVSpeechSynthesisVoice 0x978ada0] Language: ro-RO",
     "[AVSpeechSynthesisVoice 0x97823f0] Language: no-NO",
     "[AVSpeechSynthesisVoice 0x978e7b0] Language: fi-FI",
     "[AVSpeechSynthesisVoice 0x978af50] Language: pl-PL",
     "[AVSpeechSynthesisVoice 0x978afa0] Language: de-DE",
     "[AVSpeechSynthesisVoice 0x978e390] Language: nl-NL",
     "[AVSpeechSynthesisVoice 0x978b030] Language: id-ID",
     "[AVSpeechSynthesisVoice 0x978b080] Language: tr-TR",
     "[AVSpeechSynthesisVoice 0x978b0d0] Language: it-IT",
     "[AVSpeechSynthesisVoice 0x978b120] Language: pt-PT",
     "[AVSpeechSynthesisVoice 0x978b170] Language: fr-FR",
     "[AVSpeechSynthesisVoice 0x978b1c0] Language: ru-RU",
     "[AVSpeechSynthesisVoice 0x978b210]Language: es-MX",
     "[AVSpeechSynthesisVoice 0x978b2d0] Language: zh-HK",
     "[AVSpeechSynthesisVoice 0x978b320] Language: sv-SE",
     "[AVSpeechSynthesisVoice 0x978b010] Language: hu-HU",
     "[AVSpeechSynthesisVoice 0x978b440] Language: zh-TW",
     "[AVSpeechSynthesisVoice 0x978b490] Language: es-ES",
     "[AVSpeechSynthesisVoice 0x978b4e0] Language: zh-CN",
     "[AVSpeechSynthesisVoice 0x978b530] Language: nl-BE",
     "[AVSpeechSynthesisVoice 0x978b580] Language: en-GB",
     "[AVSpeechSynthesisVoice 0x978b5d0] Language: ar-SA",
     "[AVSpeechSynthesisVoice 0x978b620] Language: ko-KR",
     "[AVSpeechSynthesisVoice 0x978b670] Language: cs-CZ",
     "[AVSpeechSynthesisVoice 0x978b6c0] Language: en-ZA",
     "[AVSpeechSynthesisVoice 0x978aed0] Language: en-AU",
     "[AVSpeechSynthesisVoice 0x978af20] Language: da-DK",
     "[AVSpeechSynthesisVoice 0x978b810] Language: en-US",
     "[AVSpeechSynthesisVoice 0x978b860] Language: en-IE",
     "[AVSpeechSynthesisVoice 0x978b8b0] Language: hi-IN",
     "[AVSpeechSynthesisVoice 0x978b900] Language: el-GR",
     "[AVSpeechSynthesisVoice 0x978b950] Language: ja-JP"
     */
    
}


如果需要播放中暂停和继续

/**
 *  暂停或继续朗读
 */
- (void)pauseOrResume{
    if (_isPause) {
        [self resumeSpeechReading];
    }else{
        [self pauseSpeechReading];
    }
    
    _isPause = !_isPause;
}

/**
 *  暂停朗读
 */
-(void)pauseSpeechReading
{
    if([_AVsynthesize isSpeaking]) {
        NSLog(@"Reading paused");
        [_AVsynthesize pauseSpeakingAtBoundary:AVSpeechBoundaryImmediate];
        AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@""];
        [_AVsynthesize speakUtterance:utterance];
        [_AVsynthesize pauseSpeakingAtBoundary:AVSpeechBoundaryImmediate];
    }
}

/**
 *  恢复朗读
 */
-(void)resumeSpeechReading
{
    NSLog(@"Reading resumed");
    [_AVsynthesize continueSpeaking];
}

个人使用记录,有缺漏的以后补充


你可能感兴趣的:(IOS开发笔记)