池田幹男
Since 2003
Last update 30 Nov 2006
プログラムはここを参照して下さい。 圧縮時の音が劣化するバグが訂正されました(30 Nov 2006)
PICOLA と TDHS で目指せランク一位!
多分、世界的に見ても唯一と思われる、PICOLA の解説のページです。PICOLA はじつは既にいくつかの応用製品ができています。また、MPEG 4 の規格には オプションとして採り入れられています。
PICOLA は音声(や類似の音響信号)の時間長を変更するもので、Pointer Interval Controlled OverLap and Add の略です。PICOLA という名称は、そ の動作(アルゴリズム)からとっています。PICOLA は 1985 年に 現 NTT の森田直孝さんが、名古屋大学の修士の学生時代に開発しました。
時間軸の変更は、見方を変えると、時間軸を変更しないで、サンプリング周波 数を変更したこと、つまり周波数軸を圧伸することに相当します。周波数軸の 圧伸の観点から、同様のアルゴリズム TDHS (Time Domain Harmonic Scaling) が開発されています。アーカイブには PICOLA と TDHS の両方が入っています。
PICOLA のアルゴリズムでは、音声に特徴的な概周期性を利用しています。 概周期制とは、同じような波形が繰り返し現れるということです。PICOLA では、 同じような波形を挿入することによって、時間軸を伸長します。下図を見て下さい。
この図は、音声を伸長する場合を示しています。ここで、Tp は、音声 の基本周期を表しています。基本周期とは、類似した波形が繰り返す周期のことです。 音声を伸長するために、時々、長さTpの 音声波形を挿入します。伸長率に応じて、挿入する周期 L を変化させます。 図2 を見れば分かるように、長さ L の長さの波形が、長さ Tp + L の波形に伸長されたのと同じ効果を持ちます。従って、伸長率 r(>1) は (Tp + L) / L となります。逆に言うと、伸長率から L = Tp / (r - 1) として、波形を挿入する周期を決めます。
従って、伸長の手順は以下のとおりになります。

図 1 : PICOLAの 波形伸長の動作
圧縮の場合は、伸長の場合の逆のことをします。圧縮の場合は、ある周期 Tp+L 毎に音声の基本周期 Tp の長さの波形を削除します。同 じように考えてみれば、長さ Tp+L の長さの波形が、L の長さ の波形に変換されます。したがって、伸縮率 r ( < 1 ) は r = L/(Tp+L) です。逆にいうと、伸縮率から L = Tp r / (1-r) として、 L を求めることができます。図2を圧縮の動作を示します。 重複加算 された区間が削除された波形区間に相当します。

図 2 : PICOLA の波形圧縮動作
従って、PICOLA の波形圧縮の手順は以下のようになります。
それでは PICOLA はどのような分野に応用可能でしょうか?
それでは、同じように信号を圧伸する TDHS と PICOLA とはどう違うのでしょうか?
TDHS では nTp の区間の長さの信号を重複加算して、mTpの長 さの信号を置き換えることによって、圧縮伸長を行ないます。図 3 に伸長の 例を、図 4 に圧縮の例を示します。入力バッファの現在の処理点から nTpの長さの波形と、(m-n)Tp 後(m>n)(または前 (m < n))の長さnTpの波形をとって、重複 加算します。そして、現在の処理点から長さ mTp の信号を、重複加算 した長さ nTp の信号で置き換えます。nTp の長さが、 mTpの長さに置き換わるので、n/mの圧伸が可能になります。
PICOLA では、L の長さを調整することによって圧伸し、 Tp+L : L の任意の圧伸率を達成可能です。しかも、全ての場合で、重 複加算処理は長さTpに限られていました。一方、TDHS ではやはり n/mの任意の圧伸率が可能ですが、n, mが大きな値になる場合 には、非常に長い区間の信号が必要になります。このような長い区間では、信 号の周期が定常的であるとはいえないので、圧伸率をなるべくなめらかに大き な範囲で使用したい場合には PICOLA のほうが、品質面で有利になります。実 用上では TDHS は n, m が 4 よりも小さい場合には PICOLA との差は さほど問題にはなりません。ちょっとしたテクニックを使えば、n, m の選択の幅が小さくてものn/m の最大値と最小値の間の任意の有理数 比を実現する方法があります。( 複数のカウンタを使用し、圧伸比の誤差が最 小になるようにする。) しかし、どちらの方法が実装が容易かを考えれば、明 白でしょう。

図 3: TDHSによる音声伸長の例

図 4: TDHSによる音声圧縮の例