ピッチ変換

ピッチ変換は人間の声や音楽のトーンを変える技術です。これにレート変換を組み合わせると話速変換を行うこともできます。以下では簡単な方法としてピッチ周期を2倍にする方法と1/2にする方法を説明します。なお、本来なら図で説明するところですが、時差ぼけでものすごく眠いので文字で説明します。すみません。

2倍

ピッチ周期を2倍に伸張するとトーンが1オクターブ下がります。

固有のピッチ周期で区切られた区間A.B.C.Dを考えてください。A、B、C、Dは1ピッチ長の波形です。ピッチが急速に変化しないならばそれぞれの区間の波形と周期はほとんど同じはずです。ここで、区間A.Bを新しい波形XXで置き換えることを考えます。同様に区間C.Dは新しい波形YYで置き換えます。置き換え後の波形はXX.YYになります。

新しい波形の条件を考えてみましょう。

この条件が全ての区間で成立しなければなりません。そこでXXを作り出すために次のような操作を行います。

まず波形Aに窓関数を作用させて新しい波形aを作ります。この窓関数は区間の先頭で1で、終端で0になるような三角形の窓関数です。次に波形Bに別の窓関数を作用させて波形bを作ります。この窓関数は区間の先頭で0で終端で1になる三角形です。こうして得た波形aを長さ(A.B)まで伸張した波形をα、波形bを長さ(A.Bま)まで伸張した波形をβとします。求めるXXは

XX=α+β

によって合成できます。同様にYYを合成します。こうして作り出したXX.YYはA.B.C.Dに対してピッチ長が元の2倍であり、上の条件を満たします。

1/2

ピッチ圧縮もすでに説明した条件を満たすために窓関数を利用した合成を行います。ただし、こちらのほうがアクロバティックです。

波形II.JJ.KKからP.Q.R.S.T.Uを合成する方法を考えます。まず波形II.JJに窓関数を適用します。窓関数の形は前半が0から1に変化し、後半が1から0に変化する三角形です。この波形を1ピッチ分に圧縮した波形をγ.δとします。同様に波形JJ.KKに同じ窓関数を作用させて1ピッチ分に圧縮した波形をε.ζとします。

こうして作った波形をもとの1/2ピッチずらしながら以下のように足していきます。

・・
 γδ
  γδ
   εζ
    εζ
     ・・
PQRSTU

こうして作ったP.Q.R.S.T.Uはピッチ長が元の半分であり、上の条件を満たします。

まとめ

ここで紹介したのは一番単純なピッチ変換方法です。すでにおわかりに最初にピッチ検出をしなければ成らないことと、無声音のようにピッチが存在しない場合の処理を考えなければならないのが欠点です。反面、生成した信号はいたるところで連続であるのがこの方式のよいところです。

Blackfin空挺団 | プログラム | EZ-KIT | コア&ペリフェラル | TOPPERS/JSP | こぼれ話 | DSP掲示板