読者です 読者をやめる 読者になる 読者になる

iOS8のAVSpeechSynthesizerがバグってるらしい

Titanium

Titanium SDK : 3.4.0
iOS : 8.0.2

今年の1月末に

ってブログ書いてて、このコード使って別のことしようと思ってせこせこアプリ作ってたら音声読み上げが上手く行かず1時間くらいハマった。

AVSpeechSynthesizerのバグ

ここ見た。

1回目に音声読み上げしようとすると失敗して、2回目は成功するんだけど、俺のコードおかしい?
いやおかしくないよ、iOS8でバグが起きてるらしいよ。ちなみにiOS7だと正常に動くよ。
って話をしている。

実際その通りで、私はObjective-CSwiftではなくTitanium Mobileで現象を確認したんだけど、1回目に音声読み上げさせようとするとUsing voice booster for route: Speakerって言われてしまって音声が読み上がらず、2回目以降は問題なく音声読み上げが成功していた。

対処法

AVSpeechUtterance *bugWorkaroundUtterance = [AVSpeechUtterance speechUtteranceWithString:@" "];
bugWorkaroundUtterance.rate = AVSpeechUtteranceMaximumSpeechRate;
[self.speechSynthesizer speakUtterance:bugWorkaroundUtterance];

1回" "を読み上げさせようという回答が書いてあって、benbahrenburg/Utteranceでも、とりあえずこの暗黒魔法は動いた…。(スペースだけなので何も読み上げられない。)

あくまで暗黒魔法であり気持ち悪さが拭えないので修正を待つしか無い。