2016-01-22 53 views

回答

2

據我所知,ISpVoice::Pause完全在SAPI層中實現,並且不進行任何引擎調用。

+0

目前我用多個單詞編寫整個音頻緩衝區,可能需要編寫單個單詞,我不確定這是否是問題。 – Questions

1

我試圖準確理解你的最終目標是什麼,但我認爲我會採取一個答案來回答這個問題。

對於聲音,暫停執行以下操作根據MSDN

ISpVoice ::暫停在最近的警報界限暫停語音和關閉輸出設備,允許未決的發言從其他聲音請求訪問。

假設您已經使用SPF_AYSNC的講電話,你可能還需要還成立事件的興趣和警報界限所看到here

凡例子顯示處理書籤警報界限

'Create a Normal Priority voice - male 
Set objHIM = New SpVoice 
Set objHIM.Voice = objHIM.GetVoices("gender=male").Item(0) 

objHER.Speak "the priority of this voice is S V P alert" 
objHIM.Speak "the priority of this voice is S V P normal" 

objHIM.EventInterests = SVEBookmark  'Receive bookmark events only 
objHIM.AlertBoundary = SVEPhoneme  'Let alert voices interrupt words 

'Normal voice speaks text which generates events. 

strSpeak = "This is text that contains bookmarks " _ 
      & "for the purpose of generating events." 

objHIM.Speak strSpeak, SVSFIsXML + SVSFlagsAsync 
+0

這是從應用程序的角度來看的,但我想知道如何在應用程序中觸發暫停事件時在引擎中處理它。例如,我在引擎中調用ISpTTSEngineSite :: GetActions來獲取速率,音量變化等。同樣爲了解應用程序的興趣,我調用ISpTTSEngineSite :: GetEventInterest。我不明白的是如何獲取/檢查暫停事件是否被觸發,以及在引擎側處理它們的步驟。 – Questions