"Songify"のような自分のボコーダーシンセサイザーをプログラムしたいのですが、ボコーダーアルゴリズムの単純なアルゴリズムが見つかりません。多分あなたはボコーダーがどのように機能するかについての情報を探す場所を説明したり教えたりすることができます。
"Songify"のような自分のボコーダーシンセサイザーをプログラムしたいのですが、ボコーダーアルゴリズムの単純なアルゴリズムが見つかりません。多分あなたはボコーダーがどのように機能するかについての情報を探す場所を説明したり教えたりすることができます。
回答:
ここでのすべての回答が質問と無関係であることを恐れています。音楽制作の世界でボコーダーと呼ばれるものは、信号処理で使用される位相ボコーダーとはほとんど関係がありません。さらに悪いことに、元の投稿で参照されているSongifyアプリはボコーダーの例ではありません。これを整理しましょう!
1.フェーズボコーダー
位相ボコーダ他の回答で参照は、(短期のフーリエ変換信号の時間周波数表現を計算することによって、信号の時間/ピッチ修正(タイムストレッチ、ピッチシフト)を行うために使用することができる信号処理技術であります、またはSTFT)、次に信号フレームを挿入/削除し、位相情報のコヒーレンスを維持します。音声との関係は歴史的なものに過ぎず、現在、ローエンドのオーディオハードウェア/ソフトウェアのピッチシフトとタイムストレッチに使用されています。RubberBandは、位相ボコーダーに基づくオープンソースのC ++時間/ピッチ変更ライブラリーの例です。
2.ボコーダー
音楽制作の分野の人々がボコーダーを指すとき、彼らは信号(通常はモジュレーターと呼ばれる音声)のスペクトルエンベロープを抽出し、他の信号(通常はキャリアと呼ばれるリッチシンセテクスチャ)をフィルターするデバイスを指します応答が抽出されたスペクトルエンベロープであるフィルターを使用します。結果のサウンドの例については、クラフトワークトランスヨーロッパエクスプレスで0:23を聴くか、最初の数秒からアランパーソンズのProject The Ravenを聴いてください。結果として生じる効果は、キャリア信号によって演奏されるメロディーまたはコードに適用されるボーカルのような音色であり、音声がシンセサイザーを通して話されているような感覚を与えます。
ボコーダーはもともとアナログデバイスであり、高Qの12個以上のバンドパスフィルターの2つのバンクで実装されていました。変調信号は最初のフィルターバンクを介して送信され、すべてのサブバンド信号の振幅はエンベロープフォロワーの配列。並行して、キャリア信号は別のフィルターバンクを介して送信されます。各サブバンドは(VCAを使用して)エンベロープフォロワーによって与えられたゲインで増幅されます。アナログを読む場合は、Jurgen Haibleの生きているボコーダーから、ここでボコーダーチャネルの回路図を見ることができます。-モジュレーター信号フィルターの上、キャリアフィルターとVCA。音楽プロデューサーがボコーダーがクラシックなアナログデバイスのように聞こえることを期待しているため、ボコーダーのソフトウェア実装はこれに近いままです!ただし、「ビンテージ」デバイスへの忠実性が必要なく、40バイクアッドよりも安価なものが必要な場合、同じ結果を得る別の方法は、全極フィルター(希望する距離に応じて8〜20の次数)を推定することです。元の音声に戻るには)変調器信号から(ARモデリング); 次に、このフィルターをキャリアに適用します。ここでの一般的な問題は、フィルター係数を20ミリ秒程度のフレームごとに更新する必要があることです。したがって、急激な係数の更新を適切に処理する全極フィルターの表現が必要です。
3.自動チューニングとピッチの再マッピング
Songifyが行うことは次のとおりです。録音された声の韻律(ピッチ輪郭)を抽出し、結果のピッチ輪郭がターゲットのメロディーに一致するように変更します。これはオートチューンの動作と少し似ていますが、オートチューンはピッチを最も近い音楽的に正確な半音に「丸める」のに対し、Songifyはターゲット値をプッシュするだけです。
ここで機能するアルゴリズムは、音声信号がモノラルであり、ソースフィルターモデルによく適合するため、従来のピッチシフトタイムストレッチングとは大きく異なります。時間領域ピッチ同期オーバーラップ追加(TD-PSOLA)のようなアプローチは、一般的なタイムストレッチアルゴリズム(通常はフェーズボコーダーで行われる)よりも音声のピッチを透過的に変更するために、計算上および品質の面ではるかに効率的です。 )。これらは、たとえば、音声合成で、合成された文の韻律を変更するために使用されます-実際、Songifyとは異なります!自動チューニングは、このような時間領域の方法にも基づいています(入力波形の全サイクルを検出し、それらを再サンプリングします)。
Dan Ellisのこのページには、非常に優れたMatlabの例があります。http://www.ee.columbia.edu/~dpwe/resources/matlab/pvoc/
以下は、Mathworksの疑似コードへのリンクの1つです。
FFTビンには中心周波数があります。その正確なビン周波数での正弦波は、1つのFFTフレームだけ正確にオフセットされた2つの参照ポイントを基準にして同じ位相を持つか、2つの参照ポイントまたは任意の距離だけ離れた2つのFFTフレームに対して計算できるデルタ位相を持ちます(おそらくオーバーラップします)。 。位相ボコーダーの基本的な考え方は、FFTビンの中心周波数が一致しない場合に、その周波数の正弦波が2つのオフセットFFTフレームの参照点で検出された位相と一致するように、各FFTビンの周波数を近くの周波数にわずかに調整することです。
これらの調整された周波数は、元のスペクトルのシーケンスが周波数または時間領域でスケーリングされている場合でも、再合成されたフレーム全体でより多くの連続性を示す波形の細かい再合成に使用できます。これらのオフセット周波数は、周波数推定に、またはピッチ推定方法の一部としても使用できます。ピッチ推定とサウンド再合成を使用すると、あるピッチでサウンドを取得し、別のピッチを除いてほぼ同じように聞こえるサウンドに再合成をプッシュできる場合があります。
次の記事では、短時間フーリエ変換(STFT)ベースの位相ボコーダーと、オーディオ信号の時間とピッチの変更に取り組むピッチ同期オーバーラップ加算(PSOLA)技術について説明します。
Moulines、E.&ラロッシュ、J.
「ピッチスケールと音声の時間スケールの修正のためのノンパラメトリック手法」、
音声コミュニケーション、1995
(からのリンクで使用可能ないくつかのPDF版のGoogle学者)