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

タイムストレッチとピッチシフトは音のテンポあるいはピッチを変更する音響信号処理である。

 タイムストレッチ 
タイムストレッチ（）は音のテンポを変更する音響信号処理である。

タイムストレッチといった場合、テンポ以外の属性は極力維持するというニュアンスを含む（例: ピッチの維持）。

 ピッチシフト 
ピッチシフト（）は音のピッチを変更する音響信号処理である。移調（トランスポーズ）あるいは周波数スケーリングとも。

ピッチシフトといった場合、ピッチ以外の属性は極力維持するというニュアンスを含む（例: テンポの維持）。

例えば各ノートのピッチを完全五度上に移動し、テンポは同じに保つ事ができる。この移調は「ピッチシフト」と見なす事ができ、ピアノ鍵盤上で各ノートを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ソフトウェアのモノフォニック・バージョンで使用されている。 (円筒上の螺旋の説明は26分付近)

次の表は各手法の特徴を比較したものである。
+表. 手法比較手法名対象計算量フェーズボコーダ任意多PSOLA単音（声、単音楽音）少

 応用 
 速聴 

タイムストレッチは速聴に応用される。

速聴は「1倍速より速い音声の聴取」である（参考: 速読）。これによりオーディオブックや講義録音などの時短理解ができる。音声を短くタイムストレッチすることで速聴用音声を生成できる。速聴を実現する（=タイムストレッチを実装する）ソフトウェアの例としてスピードリスニングが挙げられる。なお、速聴と理解度の関係性には議論がある（例: 通常発話の2倍速なら理解度は下がらない）。

 低速再生 
タイムストレッチは低速再生により外国語の理解度を高めるために応用される。

 尺合わせ 
タイムストレッチはラジオコマーシャルやテレビコマーシャルの音声をCM枠の長さに正確に合わせる（=尺合わせ）ために応用される。

 ミキシング 
タイムストレッチとピッチシフトはミキシングに応用される。

ポスプロとしてのミキシングでは音素材の再収録が不可能なため、曲全体と馴染ませるために音素材のピッチやテンポを調整する必要がある。タイムストレッチとピッチシフトはこの用途で利用される。楽器や声によってその難易度は異なる。例えばピッチ感の薄いドラム・トラックは適当にリサンプリングあるいはBeat slicingでテンポ変更しても悪影響が出にくいが、ピッチのあるトラックでは難しい。

 エフェクター 
ピッチシフト楽音の音域拡張エフェクターに応用される(例: ギター音を1オクターブ下で出す)。

 脚注 

 出典 

 関連項目 
音響信号処理
エフェクター
ピッチ同期重畳加算

 外部リンク 
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チップ上で動作するギター用リアルタイム・ピッチシフターの理論、数式、図面 および 性能

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