2012-11-01 75 views
0

我使用PortAudio作爲語音合成(文本到語音)引擎的前端,並且我想提供一個等待直到播放完成的同步說話功能。等待播放完成

似乎所有處理此問題的PortAudio函數都只能等到底層API完成了音頻數據的消費,而不是直到播放完成。

PortAudio可以嗎?如果不是的話,是否有任何可以支持此功能的跨平臺替代品(必須包括C接口)?

回答

1

我不知道,如果streamFinished回調,如下記載:

http://portaudio.com/docs/v19-doxydocs/portaudio_8h.html#aa11e7b06b2cde8621551f5d527965838

是你想要的。它可能會遭遇同樣的問題,但我認爲它會起作用。其他

兩種可能性:

  • 使用更低的延遲設置。
  • 使用硬件時序。此信息可通過撥打電話GetStreamTime()獲得。例如:
    • 獲取當前時間的音頻
    • 推x秒硬件
    • 等待硬件時鐘顯示的開始時間加上x秒

您也可能有興趣本文檔中:

http://www.rossbencina.com/static/writings/portaudio_sync_acmc2003.pdf

恐怕我不知道有更好的支持這種事情的另一個API。