XAudio2 音声は、入力サンプル レートが出力音声の入力サンプル レートと異なる場合に、自動サンプル レート変換を実行できます。
サンプル レート変換は、次の規則に従います。
音声入力のサンプル レートが固定されています。
音声は、作成時に指定された入力サンプル レートのみを処理できます。 マスタリングボイス および サブミックスボイスの場合、入力サンプルレートは、IXAudio2::CreateMasteringVoice および IXAudio2::CreateSubmixVoice 関数に対する InputSampleRate 引数で指定されます。 ソース ボイスの場合、音声の入力サンプル レートは、IXAudio2::CreateSourceVoice 関数への pSourceFormat 引数によって指定されます。
音声の出力音声はすべて、同じ入力サンプル レートである必要があります。
音声は入力サンプル レートから任意の出力サンプル レートに変換できますが、音声の出力音声はすべて同じ入力サンプル レートである必要があります。 たとえば、音声は、入力サンプル レートが 22 kHz の任意の数の音声に出力できます。 ただし、同じ音声に複数の出力音声があり、それぞれの入力サンプル レートが異なる場合、オーディオ グラフは無効になります。
サンプル レート変換処理は、必要な場合にのみ行われます。
オーディオ データを別のサンプル レートに変換すると、処理オーバーヘッドが増えるため、回避することをお勧めしています。 音声の入力サンプル レートが出力音声の入力サンプル レートと一致する場合、この変換は行われず、処理時間が短縮されます。
出力サンプル レートは、音声の有効期間によって異なる場合があります。
音声の出力サンプル レートは固定されていません。 すべての出力音声の入力サンプル レートが同じである限り、オーディオ グラフは有効になります。 音声が異なる入力サンプル レートで新しい音声に出力するように変更された場合、音声は新しい音声の入力サンプル レートに変換されます。
音声間でサンプル レート変換を実行するためにサブミックス音声を追加する必要があるシナリオがいくつかあります。 音声がさまざまな入力サンプル レートの音声に出力する必要がある場合、元の音声の直接出力にできるのは 1 つの音声だけです。 音声の出力音声はすべて同じ入力サンプル レートである必要があるため、他の音声は間接的に出力を受信します。 元の音声と目的の出力音声の間に正しい入力サンプル レートを持つサブミックス音声が存在する必要があります。
たとえば、入力サンプル レートが 22 kHz のソース音声を、入力サンプル レートが 11 kHz のサブミックス 音声に出力し、入力サンプル レートが 44.1 kHz のマスタリング 音声に出力する必要がある場合を考えてみます。 2 つの出力音声の入力サンプル レートが異なるため、元の音声とその目的の出力音声の間にさらにサブミックス音声を挿入する必要があります。 ソース音声の忠実性を維持し、不要なコストの高いサンプル レートへの変換を回避するには、22 khz のサンプル入力レートを持つ 2 つのサブミックス音声をグラフに挿入する必要があります。 一方のサブミックス音声はリバーブ効果のあるサブミックス音声に 11 khz で出力され、もう 1 つのサブミックス音声は 44.1 khz のマスタリング音声に出力されます。
オーディオ グラフでのサンプル レート変換の例
すべての音声のサンプル入力レートは同じです。オーディオ グラフではサンプル レート変換は行われません。
すべての音声は、マスタリング音声を除き、同じサンプル入力レートを持ちます。サンプル レート変換は、マスタリング音声に移動するデータに対してのみ実行されます。
音声は異なるサンプル入力レートを持ち、サンプルレート変換を実行するためにより多くのサブミックス音声を必要とします。サンプル レート変換は、オーディオ グラフ内の複数の場所で実行されます。
関連トピック