2015年11月24日

iOS9でAVspeechsynthesizerが動かない件(解決編)

iOS9(9.02)に上げたら
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];
にしたら動いた。
ラベル:アプリ製作
posted by one-hand-engineer at 16:42| Comment(0) | TrackBack(0) | 日記 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック