前言
在IOS7之前一般语音识别是靠一些第三方库,或者使用谷歌语音接口, 其中谷歌的语音接口最好。
伟大的谷歌~~ 不过现在升级的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以上才支持这些方法,所有还是得找个替代方法;
使用谷歌接口实现TTS
使用谷歌接口实现文本转语音一般的方法就是上传一段文字到谷歌的接口,然后它返回一个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格式,然后上传到谷歌接口进行语音识别,有兴趣的继续关注~~