我有这个代码让我的应用程序读取文本
self->myUtterance = [AVSpeechUtterance speechUtteranceWithString:@"Ciao come stai?"];
self->myUtterance.rate = 0.5;
self-> myUtterance.pitchMultiplier = 1.5;
//self-> myUtterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"it-IT"];
self->synth = [[AVSpeechSynthesizer alloc] init];
[self->synth speakUtterance:self->myUtterance];
我读到过"默认情况下,AVSpeechSynthesizer会根据用户当前的语言偏好使用语音说话。"但它不起作用。
事实上,即使我的iPhone全部设置为意大利语和地区,语音也是英语。
如果我删除对这行代码的注释
//self-> myUtterance.voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"it-IT"];
然后语音是意大利语,但我希望根据用户的语言偏好自动设置语言。
您可以使用[[[NSBundle mainBundle] preferredLocalizations] firstObject]
查找应用程序的当前语言。
(如果是nil
,或者你的应用程序没有本地化,你可以使用[[NSLocale currentLocale] languageCode]
,但这不考虑设置中指定的语言,只要用户只更改应用程序的语言,而不是所有设备的语言(
通过这种方式,您可以使用[AVSpeechSynthesisVoice voiceWithLanguage:]
指定语言,并确保您使用了应用程序语言。
否则,您可以让用户选择口语。