0

PortAudio を音声合成 (Text to Speech) エンジンのフロントエンドとして使用しており、再生が完了するまで待機する同期発言機能を提供したいと考えています。

これを処理するすべての PortAudio 関数は、再生が完了するまでではなく、基になる API がオーディオ データの消費を完了するまで待機するだけのようです。

これは PortAudio で可能ですか? そうでない場合、これをサポートする可能性のある PortAudio (C インターフェイスを含める必要がある) に代わる優れたクロスプラットフォームの代替手段はありますか?

4

1 に答える 1

1

ここに記載されているように、streamFinished コールバックかどうかはわかりません。

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

あなたが望むものです。同じ問題が発生する可能性がありますが、うまくいくと思います。

他の 2 つの可能性は次のとおりです。

  • より低いレイテンシー設定を使用してください。
  • ハードウェア タイミングを使用します。この情報は、GetStreamTime()などの呼び出しから入手できます。例えば:
    • 現在の時刻を取得する
    • x 秒間のオーディオをハードウェアにプッシュする
    • ハードウェア クロックが開始時刻 + x 秒を表示するまで待機します

このドキュメントにも興味があるかもしれません:

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

残念ながら、この種のことをより適切にサポートする別の API を知りません。

于 2012-11-02T16:17:06.847 に答える