前言
在IOS7之前一般語音辨識是靠一些第三方庫,或者使用Google語音介面, 其中Google的語音介面最好。
偉大的Google~~ 不過現在升級的IOS內建文本轉語音也非常不錯,支援很多種文字,不過聲音有點難聽:
IOS 7 文本轉語音的實現
實現TTS 主要依賴AVSpeechSynthesizer,AVSpeechUtterance,AVSpeechSynthesisVoice,要使用這些類必須先加入
AVFoundation架構:
AVSpeechSynthesisVoice :用來配置發音,支援的發音非常多.個人感覺台灣發音最好聽~通過調用
[AVSpeechSynthesisVoicespeechVoices]類方法可用看到支援的發音種類;
AVSpeechUtterance :這個類就是用來將字串合成為語音對象提供給AVSpeechSynthesizer來播放,這個類還有一些
執行個體方法用來控制語速,音調等等。。
實現代碼:
AVSpeechUtterance *utterance = [AVSpeechUtterancespeechUtteranceWithString:@“hello”];
//英式發音
AVSpeechSynthesisVoice *voice = [AVSpeechSynthesisVoicevoiceWithLanguage:@“en-GB”];
utterance.voice = voice;
NSLog(@"%@",[AVSpeechSynthesisVoicespeechVoices]);
AVSpeechSynthesizer *synth = [[AVSpeechSynthesizeralloc]init];
[synth speakUtterance:utterance];
使用SDK內建的方法實現TTS非常的簡單,不過只有IOS7以上才支援這些方法,所有還是得找個替代方法;
使用Google介面實現TTS
使用Google介面實現文本轉語音一般的方法就是上傳一段文字到Google的介面,然後它返回一個MP3格式的音頻。下載下來播放。這種方法比較麻煩。
在我用webView的時候發現了個可以偷懶的方法。在webView中有個屬性可以自動播放網頁上的流媒體,只要設定這個屬性就可以不用下載也直
接播放音頻。
實現代碼
NSString *str = [NSStringstringWithFormat:@"http: //translate.google.com/translate_tts?tl=en&q=%@",@“hello”];
NSURL *url = [NSURLURLWithString:str];
NSURLRequest *request = [[NSURLRequestalloc]initWithURL:url];
UIWebView *webView = [[UIWebViewalloc]init];
webView.allowsInlineMediaPlayback = YES;//設定這個屬性webView就會自動播網頁上的流媒體,ipad是預設YES;
// iPhone Safari defaults to NO. iPad Safari defaults to YES
//現在只要載入這個頁面,在載入完成後就會播放你選擇的文字了.
[self.webViewloadRequest:request];
PS: 接下來我會寫一些在IOS上實現語音辨識的內容,在IOS上將錄製的PCM格式的錄音轉換成FLAC格式,然後上傳到Google介面進行語音辨識,有興趣的繼續關注~~