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