苹果公司在iOS7中添加了文字转语音的功能,这对于辅助功能和其余任务来讲都是很是有用的工具,能够帮助用户浏览内容或增长程序的趣味。能够用AVSpeechSynthesizer和AVSpeechUtterance类来讲出任意字符串。对于长篇文原本说,这项功能很是方便,它令开发者能够得到比使用VoiceOver时更为精细的控制权,从而可以以编程的方式控制语音,包括选定发音内容和时机,以及调整音调和语速等,此外,即使用户不使用辅助功能,语音合成依然有效。编程
avspeech支持的语言种类包括:工具
Arabic (ar-SA)spa
Chinese (zh-CN, zh-HK, zh-TW)code
Czech (cs-CZ)开发
Danish (da-DK)字符串
Dutch (nl-BE, nl-NL)it
English (en-AU, en-GB, en-IE, en-US, en-ZA)io
Finnish (fi-FI)table
French (fr-CA, fr-FR)class
German (de-DE)
Greek (el-GR)
Hebrew (he-IL)
Hindi (hi-IN)
Hungarian (hu-HU)
Indonesian (id-ID)
Italian (it-IT)
Japanese (ja-JP)
Korean (ko-KR)
Norwegian (no-NO)
Polish (pl-PL)
Portuguese (pt-BR, pt-PT)
Romanian (ro-RO)
Russian (ru-RU)
Slovak (sk-SK)
Spanish (es-ES, es-MX)
Swedish (sv-SE)
Thai (th-TH)
Turkish (tr-TR)
中文(简体中文)
阿拉伯语(沙特阿拉伯)
中文(普通话)
中文(香港)
中文(台湾)
捷克
丹麦
荷兰语(比利时)
荷兰语
英语(澳大利亚)
英语(英国)
英语(爱尔兰)
英语(美国)
英语(南非)
芬兰语
法语(加拿大)
法语(标准)
德语(标准)
希腊语
北印度语
匈牙利语
印尼语
意大利语(标准)
日语
韩语
挪威语
波兰语
葡萄牙语(巴西)
葡萄牙语(葡萄牙)
罗马尼亚语
俄语
斯洛伐克语
西班牙语
西班牙语(墨西哥)
瑞典语
泰语
土耳其语
对于下面的代码只要稍微修改一下代码,就能够换用其余语言和地域口音来发声了。使用AVSpeechSynthesisVoice能够选定某一种语言,也能够遍历可以使用的各类语言。
- (void)action { AVSpeechUtterance *utterance = [AVSpeechUtterance speechUtteranceWithString:@"hello there you beautiful world"]; utterance.rate = AVSpeechUtteranceMinimumSpeechRate + (AVSpeechUtteranceMaximumSpeechRate - AVSpeechUtteranceMinimumSpeechRate) * 0.2; utterance.voice = [self anotherVoiceForLanguage:@"en"]; AVSpeechSynthesizer *synthesizer = [[AVSpeechSynthesizer alloc] init]; [synthesizer speakUtterance:utterance]; } - (AVSpeechSynthesisVoice *)anotherVoiceForLanguage:(NSString *)lang { //srand(time(NULL)); NSArray *voices = [AVSpeechSynthesisVoice speechVoices]; NSMutableArray *voicesForLanguage = [NSMutableArray array]; for (AVSpeechSynthesisVoice *voice in voices) { if ([voice.language hasPrefix:lang]) { [voicesForLanguage addObject:voice]; } } NSUInteger voiceIndex = rand() % voicesForLanguage.count; return voicesForLanguage[voiceIndex]; }