今天博主有一個文本轉語音(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:將要說某段話