iOS中文本朗讀需要使用AVFoundation框架
1.首先要了解兩個類充當的角色
AVSpeechSynthesizer相當於一個DVD
AVSpeechUtterance相當於一個磁盤
2.AVSpeechSynthesizer的屬性和方法
delegate 代理,用於監聽朗讀器的開始、暫停、停止和完成等等操作的
speaking 是否正在朗讀
paused 是否暫停
- (void)speakUtterance:(AVSpeechUtterance *)utterance;
使用該方法向語音隊列裏添加需要朗讀的語句,然後會按着添加順序依次朗讀 - (BOOL)stopSpeakingAtBoundary:(AVSpeechBoundary)boundary;
停止朗讀 - (BOOL)pauseSpeakingAtBoundary:(AVSpeechBoundary)boundary;
暫停朗讀 - (BOOL)continueSpeaking;
繼續朗讀
3.AVSpeechUtterance的屬性和方法
(instancetype)speechUtteranceWithString:(NSString *)string;
(instancetype)initWithString:(NSString *)string;
兩個初始化方法,參數是你需要朗讀的文字
voice AVSpeechSynthesisVoice,設置朗讀文字的語言,如果不設置會默認爲當前系統的語言,
使用[NSLocale availableLocaleIdentifiers]可以獲取語言列表
rate 0.0-1.0,設置朗讀的速度
pitchMultiplier 0.5-2.0,設置朗讀的音調
volume 0.0-1.0,朗讀的聲音大小
preUtteranceDelay 距離上一句結束的間隔
postUtteranceDelay 下一句朗讀距離該句結束開始的間隔
下面是一個簡單的朗讀代碼
_speechSynthesizer = [[AVSpeechSynthesizer alloc] init];
NSArray *array = @[@"Hello sun!",
@"開始說中文?",
@"其他的語言我不知道能不能行"];
for(NSString *str in array){
AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:str];
utterance.rate = 0.5;
utterance.pitchMultiplier = 0.8;
utterance.volume = 0.5;
utterance.postUtteranceDelay = 0.1;
[_speechSynthesizer speakUtterance:utterance];
}