我正在編寫一個OS X應用程序,它使用NSSpeechSynthesizer
向用戶讀取文本並在文本字段(NSTextView
)中突出顯示正在讀取的單詞。這是通過執行NSSpeechSynthesizerDelegate
協議的speechSynthesizer:willSpeakWord:ofString:
方法完成的。此方法提供它將要發言的單詞的範圍(NSRange
),我將其轉發到我的NSTextView
的setSelectedRange方法。NSSpeechSynthesizer中可能存在的錯誤?
一切都很好,直到我用stopSpeaking
方法停止閱讀。如果在此之後將其設置爲再次讀取,speechSynthesizer:willSpeakWord:ofString:
提供的範圍似乎不同步。看起來,它猶豫幾秒鐘呼叫speechSynthesizer:willSpeakWord:ofString:
導致範圍稍微落後於講話時,它終於做到了。
我寫說明的問題,這可以在這裏找到一個簡單的應用: http://dl.dropbox.com/u/12516679/SpeechTest.zip
我希望有人會看這段代碼(它真的很簡單),或予以確認,這確實似乎是一個錯誤,或者(希望)告訴我我做錯了什麼。
- 更新 -
事實證明,非英語的聲音出現問題。我最初使用的是Ida,這是一種丹麥語音。我現在用許多不同的聲音對它進行了測試,我可以確認它適用於所有英語聲音。但它與丹麥,瑞典,挪威和荷蘭不同步。它也可能影響其他語言,但這些是我迄今爲止測試過的。
您的語音應用似乎工作正常,至少在我的電腦上。你能詳細描述一下你的問題嗎?因爲從我的角度來看,即使在我調用「stopSpeaking」方法時,一切正常,並按下play。同步似乎工作正常。 – 2011-12-15 16:54:47
對我來說也工作得很好......你在什麼版本的OS X上? – spudwaffle 2011-12-16 00:05:07