voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"ja-JP"];
が
"Building MacinTalk voice for asset: (null)"
とかログに吐いて日本語をしゃべれない件
言語(ロケール)の判定を
NSArray *languages = [NSLocale preferredLanguages];
lang = [languages objectAtIndex:0];
if ([lang isEqualToString:@"ja"])
voice = [AVSpeechSynthesisVoice voiceWithLanguage:@"ja-JP"];
とかやってたのが悪かった。(たぶん"ja"のままだったらよかったと思われ)
(嘘:langがiOS8だと"ja" iOS9だと"ja-JP"になってました)
CFStringRef text = (CFStringRef)CFBridgingRetain(inputText);
CFRange range = CFRangeMake(0,CFStringGetLength(text));
NSString * language = (NSString *)CFBridgingRelease(CFStringTokenizerCopyBestStringLanguage(text,range));
voice = [AVSpeechSynthesisVoice voiceWithLanguage:language];
にしたら動いた。
ラベル:アプリ製作