2012-11-01 58 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。