タイムストレッチ/ピッチシフト

タイムストレッチ とは、オーディオ信号のピッチはそのままで、テンポ(持続時間)だけを変更する処理である。
ピッチシフト (またはピッチスケーリング) はその逆で、テンポ(持続時間)はそのままで、ピッチだけを変更する処理である。同様な方法で、テンポやピッチを個別もしくは両方同時に時間変化させる事もできる。

これらの処理はたとえば、(再演奏や再収録が不可能な)複数の録音済みクリップをミックスする時に、ピッチやテンポを合わせるのに使用される。(ピッチ感の薄いドラム・トラックは、適当にリサンプリング処理()でテンポ変更しても悪影響が出にくいが、ピッチのあるトラックでは難しい)
またピッチシフト処理は、楽音の音域拡張(たとえばギター音を1オクターブ下で出す)などのエフェクト処理にも使われる。

ピッチシフト 
ピッチシフト（）は音響信号の音高を遷移させる操作である。移調（トランスポーズ）あるいは周波数スケーリングとも呼ばれる。

例えば各ノートのピッチを完全五度上に移動し、テンポは同じに保つ事ができる。この移調は「ピッチシフト」と見なす事ができ、ピアノ鍵盤上で各ノートを7キー上に「シフト」したり、メル尺度や線形ピッチ空間上での一定量の加算に相当する。同じ移調を「周波数スケーリング」と見なす事もでき、各音符の周波数を3/2倍に「スケーリング」(乗算)する事に相当する。

音楽的な移調は音の音色（倍音や和音の周波数比）を維持する。

音高以外にも副作用する手法の場合、ノイズ量や音色も変化する。例えばスケーリングした場合フォルマントはChipmunks的効果で歪む。 振幅変調による周波数シフト時には各ノートの周波数に固定の周波数オフセットが加わり音色が歪む。なお「ピッチ・スケーリング」という表現は、音楽的ピッチ空間で各ノートの位置をピッチに応じてスケールする（例: 線形ピッチ空間上で、最も高いノートを低いノートよりも広い間隔にシフトする）稀な操作を指し、その場合は音楽的な調性が崩れる。

ピッチシフトを実現する手法の例として以下が挙げられる。

 ボコーダ: 音高とその他特徴量（例: スペクトル包絡）へ分解、音高のみを操作、再合成
 
 チャンネルボコーダ
 LPCボコーダ
 Alvin and the Chipmunks: アナログ・レコーディング手法

手法

リサンプリング 

最も簡単にディジタル録音クリップの持続時間とピッチを変更する方法は、リサンプリング処理である。これはサンプルから()連続波形を効率的に再構成し、それを別のサンプルレートでサンプリングし直す。そうして得た新しいサンプルを元のサンプルレートで再生すると、音はゆっくり再生されるか、あるいは素早く再生される。ただしサンプル音の周波数は常に速度と同じ比率でスケールされるので、聴覚上のピッチは上下に移動する: 言い換えれば、ゆっくり再生すればピッチが下がり、素早く再生すればピッチが上がり、二つの効果 (速度 と ピッチ) は分離できない。これはレコードやテープといったアナログ録音の再生速度を速くしたり遅くするのと同様で、Chipmunk効果が得られる。

フェーズボコーダ 

ピッチに影響を与えずに信号の長さを変える一つの方法がフェーズボコーダである。STFTによる時間周波数表現上で操作をおこなうことで周波数成分を維持したまま信号長を操作できる。またフェーズボコーダ技術は、ピッチシフト/コーラス効果/音色操作/ハーモナイズ効果/その他特殊な変更などの実現に使用でき、これらは全て時間の関数として変化させる事ができる。

SOLA 

PSOLAでは波形の周期をで検出、区間を抽出、操作し、クロスフェードで再合成する。この手法は 時間領域調波構造伸縮 (TDHS: Time-Domain Harmonic Scaling) あるいは 同期波形重畳法 (SOLA: Synchronized OverLap-Add method) と呼ばれる。倍音構造が複雑な信号(管弦楽曲など)の周期を自己相関が誤って推定すると失敗する。このためピッチ検出をアルゴリズムでなく人の耳に頼る場合もある（例: Adobe Audition / 以前のCool Edit Pro）()。

Sinusoidal spectral modeling 

タイムストレッチの他の代替手法は、信号のスペクトルモデルに頼っている。この手法では、信号のSTFTを使ってSTFTフレーム中のピーク成分を識別し、隣接フレームのピークをつないで正弦波トラック("tracks")を生成する。次にこのトラックを、新しい時間スケールで再合成する。この手法は、特に信号が複数のサブ帯域に分離している時に多声の素材やパーカッシブな素材の両方で良い結果をもたらす。しかしこの手法は他の手法と比べ、より多くの計算資源を必要とする。

位相と時間をほどく 

ピッチシフトとタイムストレッチの別の方法は、旋律楽器などの単音を位相と時間に分離する手法である。 時間コントロールだけを変更すれば、伸長/短縮/時間反転/ループ生成(サンプラー用)が可能である。時間短縮は圧縮用途にも使える。 また位相コントロールだけを変更すれば、既存の音のピッチシフトやFMシンセシス・ディストーションの適用が可能である。これはウェーブテーブル・シンセシスに対し楽器を別のやり方で演奏するのに使用できる。(play instruments alternatively to wavetable synthesis)()

位相と時間を独立してコントロールするには、全ての位相と時間の組に関する音の変位を把握する必要がある。これは右図に示す円筒に相当する。ただし音響信号は一次元信号に過ぎない。音響信号は円筒上の完全な関数 (full function) の観測と見なす事ができる。これは図中に黒い螺旋曲線として描かれている。円筒上の完全な関数は、(おおよそ)同じ位相の螺旋上の点間の補間で近似できる。この関数から異なる音響信号を導ける。例えば図中の薄灰色のゆるい螺旋曲線は、元信号と時間発展が同じで周波数がより低い音、または元信号と周波数が同じで時間発展がより速い音、あるいはその中間の音、の経路(path)を示している。最終的に全体プロセスは、類似した位相と類似した時間における値を補間した離散音響信号のために実装できる。

ここに記述された手法は、Melodyneソフトウェアのモノフォニック・バージョンで使用されている。

次の表は各手法の特徴を比較したものである。

応用

速聴 (高速音声再生) 

特定の場合のスピーチについては、タイムストレッチはPSOLAを使って実現できる。

タイムストレッチはオーディオブックや講義録音に使える。再生速度を落とす事で外国語の理解度を高める事ができる。

他方、再生速度が上がると理解度が低下すると想像するかもしれないが、Herb Friedmanは次のように語っている:“実験によれば、脳は話し言葉を通じた耳からの情報速度が「平均的」読解速度の時に最も効率的に働き、その速度はおよそ200〜300 wpm (wpm:一分あたりの単語数)であり、他方、話し言葉の平均的速度は100〜150 wpm 程度に過ぎない。”

再生速度を上げた音声(速聴)は「速読」と等価なものだと見なされている。

タイムストレッチはしばしば、ラジオコマーシャルやテレビコマーシャルのオーディオをCM枠の長さ(例えば30秒あるいは60秒)に正確に合わせる(尺合わせ)ために使用される。

関連項目 
音響信号処理		  (Audio signal processing)
エフェクター		
	  (Time-compressed speech)
  (Pitch control)
ピッチ同期波形重畳法	  (PSOLA: Pitch Synchronous Overlap and Add)

参考文献

外部リンク 
Stephan Bernsee, “Time Stretching and Pitch Shifting Overview” — 現代のタイム-ピッチ修正技術の包括的概観
フェーズボコーダ
Mark Dolson, “The Phase Vocoder: A Tutorial” — フェーズボコーダに関するよい解説
Jean Laroche, Mark Dolson, “New Phase-Vocoder Techniques for Pitch-Shifting, Harmonizing and Other Exotic Effects”
Axel Röbel, “A new Approach to Transient Processing in the Phase Vocoder”
OverLap-Add系アルゴリズム
池田幹男, “PICOLA と TDHS” — MPEG4規格オプションの時間伸長アルゴリズム PICOLA (Pointer Interval Controlled OverLap and Add)と、それとよく類似した周波数軸圧伸アルゴリズム TDHS (Time Domain Harmonic Scaling)

ソースコード
Elastique from Zplane — 一部のDJソフトウェアで使われているコード「Elastique」
タイムストレッチ
Dirac Time Stretching Library — 人気のあるフリーおよび商用版のタイムストレッチ・ライブラリ「Dirac」(iOS, Linux, Windows, Mac OS X用)
ピッチシフト
Stephan Bernsee's smbPitchShift C source code — 周波数領域でピッチ操作を行うC言語ソースコード
pitchsift.js from KievII — Javascript ピッチシフター (オープンソースのKievII libraryのsmbPitchShiftコードに基づく)
How to build a pitch shifter — DSPチップ上で動作するギター用リアルタイム・ピッチシフターの理論、数式、図面 および 性能

音響工学
デジタル信号処理
エフェクター