私はNSSpeechSynthesizer
を使用してテキストをユーザに読んで、テキストフィールド(NSTextView
)にある単語をハイライト表示するOS Xアプリケーションを作成しています。これは、NSSpeechSynthesizerDelegate
プロトコルのspeechSynthesizer:willSpeakWord:ofString:
メソッドを実装することによって行われます。このメソッドは、私がNSTextView
のsetSelectedRangeメソッドに転送することを話している単語の範囲(NSRange
)を提供します。NSSpeechSynthesizerのバグはありますか?
stopSpeaking
メソッドで読み取りを停止するまではすべて正常です。この後に再度読み込むように設定すると、speechSynthesizer:willSpeakWord:ofString:
によって提供される範囲は同期していないようです。 speechSynthesizer:willSpeakWord:ofString:
を数秒間呼び出すことを躊躇しているようであり、最終的にはその範囲が演説にいくぶん遅れているようです。
私はここで見つけることができ、問題を説明する簡単なアプリケーション、書かれている:私は誰かがこのコードを見て(それは本当に簡単である)のいずれか、これは確かにあると思われることを確認することを願ってい http://dl.dropbox.com/u/12516679/SpeechTest.zip
をバグ、または(うまくいけば)私が間違っていることを教えてください。
- UPDATE -
それは問題は英語以外の声で発生することが判明しました。私はもともとデンマークの声であるIdaを使っていました。私は今多くの異なった声でそれをテストしました、そして、私はそれがすべての英語の声でうまく動作することを確認することができます。しかし、それはデンマーク、スウェーデン、ノルウェー、オランダと同期していませんでした。おそらく他の言語にも影響しますが、これまでにテストしたものです。
あなたのスピーチアプリケーションは、少なくとも自分のコンピュータで正常に動作しているようです。あなたの問題をもう少し詳しく説明できますか?私の視点からは、たとえ "stopSpeaking"メソッドを呼び出していても、すべてが正常に動作しているので、再生を押してください。同期が正常に動作しているようです。 –
私のためにもうまくいっています... OS Xのどのバージョンですか? – spudwaffle
まあ、それは良いニュースだと思います。おそらく私にも希望があります:)私の問題は、読書が止められてから再び演奏を押すと、シンセサイザーがすぐに話し始めることです。しかし、 "speechSynthesizer:willSpeakWord:ofString:"への最初の呼び出しが遅くなり、強調表示が同期しなくなります。 NSLogを使って印刷する範囲も間違っています。 ライオンを実行している新しい15インチのMBPがあります。私たちは同僚の新しいiMac(ライオンを走らせている)でアプリケーションをテストしたところ、同じ問題があります。 – pajevic