0

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

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

PortAudio 有可能吗?如果没有,是否有任何好的跨平台替代 PortAudio(必须包含 C 接口)可能支持这一点?

4

1 回答 1

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 对这类事情有更好的支持。

于 2012-11-02T16:17:06.847 回答