[音声処理] チャネル ボコーダー アルゴリズムの紹介

シリーズ記事ディレクトリ



チャンネルボコーダー

あらゆる種類の編集ソフトウェアの中で、非常に魔法的でテクノロジーに満ちた一種の効果音があります。

このタイプのサウンドの背後にある原理は、元の Channel Vocoder から来ています。チャンネル ボコーダーは、もともと 1930 年代にホーマー ダドリーによって発明されました. 発明の当初の意図は音声通信でしたが、それに関する限り、効果音の分野でさらに進歩しました.

Channel vocoder の入力には、搬送波信号 (carrier) と変調信号 (modulator) の 2 つの信号があります。効果音シーンでは、搬送波は通常ノコギリ波やバイオリンなどの倍音豊かなオーディオであり、変調器は通常音声信号です。アルゴリズムの出力は 2 つの信号の混合です。信号を重ねて古典的なロボット サウンドを作成し、ハリウッドで特殊効果として広く使用されています。次のビデオは、私が実装したチャンネル ボコーダーの例です。これは非常に「機械的な」サウンドです。

channel_vocoder_video

アルゴリズムの原理

Channel vocoder のアルゴリズムの実装は、時間領域フィルターの実装と周波数領域のフーリエ変換の実装に分けることができます。

時間領域フィルターの実装

写真の説明を追加してください

チャンネルボコーダーは時間領域のフィルターバンクモデルとして記述でき、アルゴリズムの処理ロジックは上の図のようになります. 図を見てみましょう.

まず、特定の周波数のオーディオ情報を除外するバンドパス フィルターのセットを選択する必要があります.たとえば、[337.5, 575, 850, 1200, 1700, 2350] を選択できます.

次に、搬送波については、BPF 処理後に異なる周波数帯域の信号を取得すれば十分であり、変調器については、BPF 処理後に信号の包絡線を取得する必要があります。エンベロープを取得するには多くの方法がありますが、簡単な方法は、信号のエネルギー値を取得し、それをローパス フィルターに通すことです。

次に、変調器のエンベロープをキャリアの同じ周波数帯域の信号で乗算し、最終的に周波数帯域のすべての信号を累積して最終的な出力を取得します。フィルターバンドモデルを使ったチャンネルボコーダーをオンラインで体験できるページです

考えるべきいくつかの質問を次に示します。

  1. 何個の周波数帯域を選択すればよいですか? 固定値はなく、アルゴリズムのパラメータとして設定できます。周波数帯域が多ければ多いほど計算量は多くなりますが、出力信号のモジュレータ信号が明瞭になり、周波数帯域が少ないほど計算は速くなりますが、出力信号の「機械的な感触」が強くなるほど明瞭度が低下します変調器信号。具体的な感想としては、記事冒頭の動画の「Number Band」パラメータの調整に注目。
  2. 変調器と搬送波の信号長が一致しない場合はどうすればよいですか? 変調器は通常音声信号ですが、生放送シーンでチャンネル ボコーダー効果音を使用する場合、変調器は無限に長く、キャリアは固定長のオーディオであり、キャリアは繰り返し使用できます。

周波数領域フーリエ変換

写真の説明を追加してください

時間領域でチャネル ボコーダーを実現するには、多くの計算を必要とする特定の周波数帯域を除外するために多くのバンドパス フィルターが必要です。チャンネル ボコーダーの効果音の原理は、以下のとおりです。

  1. キャリア信号と変調器信号の周波数固有の情報を見つける
  2. 変調器の帯域情報に対して何らかの非線形演算 (エンベロープの検索など) を実行し、この結果を搬送波帯域情報と結合します。

上記の 2 つの目標を達成するために、チャネル ボコーダーの最新の実装では、通常、バンドパス フィルターを FFT に置き換えます。この方法は、多くの周波数帯域を使用する場合に高速であり、FFT の大きさを使用して、非線形フィルタリングとローパス フィルタリングの両方を簡単に実行できます。FFT チャネル ボコーダ アルゴリズムの処理ロジックは、上の図に示すとおりです。具体的には、次のとおりです。

  1. 変調器で FFT を実行して FFT ビンを取得し、FFT ビンを N バンドに分割し、各バンドの振幅の平均値を取得し、b N b_Nを取得します。bN
  2. 搬送波に対して FFT を実行して FFT ビンを取得し、FFT ビンを N バンドに分割し、各バンドの振幅の平均値を取得し、N a_Nを取得します。aN
  3. 1 と 2 を完了した後、各バンドについて、s = b N a N s = \frac{b_N}{a_N} を計算します。s=aNbN、現在の搬送波帯域で s を乗算して、搬送波が変調器の情報を搬送するようにします。
  4. 最後に、乗算された FFT ビンで IFFT を実行して、時間領域の出力信号を取得します。

チャネル ボコーダーは周波数領域で実装され、計算量が大幅に減少します. Number Bands を 256 に簡単に設定することは問題ありません.Band-Filter モデルは 64 に設定されています. Number Bands パラメータは、エフェクトに影響を与えることなくリアルタイムで調整できます。ただし、周波数ドメイン実装のコードの複雑さは比較的高く、リングバッファを入力と出力に設定して信号の連続性を確保する必要があります。これにより、特定の遅延が発生します (FFT のウィンドウ サイズによって異なります)。

要約する

この記事では、古典的なロボット サウンド エフェクトを実現するために使用できる非常に魔法のようなサウンド エフェクトである Channel ボコーダーを紹介します。チャネル ボコーダは、時間領域と周波数領域で 2 つの実装方法を使用できます。タイム ドメイン方式では、バンドパス フィルターを介して特定の周波数帯域の信号をフィルター処理し、変調器のエンベロープ情報をキャリアに追加して達成するフィルター バンド モデルと見なされます。ドメイン法、FFT を介して 最後に、各帯域の平均値を取得し、変調器の各帯域の平均値に搬送波の帯域を掛けてから、IFFT を使用して時間領域の出力信号を取得します。周波数ドメイン法は計算量が少なく、パラメータ調整が最適化されているため、現在の実装のほとんどは周波数ドメイン法ですが、アルゴリズムの遅延が発生します。

参考

おすすめ

転載: blog.csdn.net/weiwei9363/article/details/127461433