等到播放完成

时间:2012-11-01 07:05:24

标签: c audio portaudio

我正在使用PortAudio作为语音合成(文本到语音)引擎的前端,我想提供一个等待回放完成的同步说话功能。

似乎所有处理此问题的PortAudio函数只等到底层API完成消费音频数据,而不是直到播放完成。

PortAudio有可能吗?如果没有,是否有任何可能支持此功能的PortAudio(必须包含C接口)的跨平台替代方案?

1 个答案:

答案 0 :(得分: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会更好地支持这类事情。