Titanium SDK : 3.4.0
iOS : 8.0.2
今年の1月末に
ってブログ書いてて、このコード使って別のことしようと思ってせこせこアプリ作ってたら音声読み上げが上手く行かず1時間くらいハマった。
AVSpeechSynthesizerのバグ
ここ見た。
1回目に音声読み上げしようとすると失敗して、2回目は成功するんだけど、俺のコードおかしい?
いやおかしくないよ、iOS8でバグが起きてるらしいよ。ちなみにiOS7だと正常に動くよ。
って話をしている。
実際その通りで、私はObjective-CやSwiftではなくTitanium Mobileで現象を確認したんだけど、1回目に音声読み上げさせようとするとUsing voice booster for route: Speaker
って言われてしまって音声が読み上がらず、2回目以降は問題なく音声読み上げが成功していた。
対処法
AVSpeechUtterance *bugWorkaroundUtterance = [AVSpeechUtterance speechUtteranceWithString:@" "];
bugWorkaroundUtterance.rate = AVSpeechUtteranceMaximumSpeechRate;
[self.speechSynthesizer speakUtterance:bugWorkaroundUtterance];
1回" "
を読み上げさせようという回答が書いてあって、benbahrenburg/Utteranceでも、とりあえずこの暗黒魔法は動いた…。(スペースだけなので何も読み上げられない。)
あくまで暗黒魔法であり気持ち悪さが拭えないので修正を待つしか無い。