今天博主有一个文本转语音(TTS)的需求,遇到了一些困难点,在此和你们分享,但愿可以共同进步.post
文本转语音技术, 也叫TTS, 是Text To Speech的缩写. iOS若是想作有声书等功能的时候, 会用到这门技术.spa
iOS7以后才有该功能,须要导入 AVFoundation 库orm
//在iPhone静音模式开启后,声音没法播放,须要打开后台播放接口
AVAudioSession *audioSession = [AVAudioSession sharedInstance];事件
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];字符串
//语音合成器, 是最主要的接口string
AVSpeechSynthesizer *av = [[AVSpeechSynthesizer alloc]init];it
//要说的一段话,语音合成器的播放内容接口io
AVSpeechUtterance *utterance1 = [[AVSpeechUtterance alloc]initWithString:[NSString stringWithFormat:@"%@",@"实时"]]; //须要转换的文本后台
//读完一段后的停顿时间
utterance1.postUtteranceDelay=0.1;
//说话的速率
utterance1.rate=0.4;
//开始播放内容
[av speakUtterance:utterance1];
AVSpeechSynthesisVoice定义了一系列的声音, 主要是不一样的语言和地区.下面是他的几个属性和方法
voiceWithLanguage: 根据制定的语言, 得到一个声音.
speechVoices: 得到当前设备支持的声音
currentLanguageCode: 得到当前声音的语言字符串, 好比”ZH-cn”
language: 得到当前的语言
上面是一段简单的TTS播放,若是想要进行更复杂的操做,能够遵照AVSpeechSynthesizerDelegate协议,实现其方法
合成器的委托, 对于一些事件, 提供了响应的接口.
didCancelSpeechUtterance: 已经取消说话
didContinueSpeechUtterance: 已经继续说话
didFinishSpeechUtterance: 已经说完
didPauseSpeechUtterance: 已经暂停
didStartSpeechUtterance:已经开始
willSpeakRangeOfSpeechString:将要说某段话