2011-12-15 29 views
1

我正在編寫一個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,這是一種丹麥語音。我現在用許多不同的聲音對它進行了測試,我可以確認它適用於所有英語聲音。但它與丹麥,瑞典,挪威和荷蘭不同步。它也可能影響其他語言,但這些是我迄今爲止測試過的。

+1

您的語音應用似乎工作正常,至少在我的電腦上。你能詳細描述一下你的問題嗎?因爲從我的角度來看,即使在我調用「stopSpeaking」方法時,一切正常,並按下play。同步似乎工作正常。 – 2011-12-15 16:54:47

+0

對我來說也工作得很好......你在什麼版本的OS X上? – spudwaffle 2011-12-16 00:05:07

回答

0

好的,我找到了問題的根源和解決方法。它與這種語言無關,但事實上OS X Lion中大多數非英語聲音都是Nuance聲音(由Nuance Communications製作)。我已經用英語Nuance聲音測試證實了這一點,他們的確有同樣的問題。看起來Nuance提供的聲音在api中有問題。 我已經通過在讀取停止後實例化一個新的NSSpeechSynthesizer對象,爲此問題創建瞭解決方法。這不是漂亮,但它的作品:)

1

這是一個錯誤,但它已被更新的山獅的Nuance聲音解決。

相關問題