正確な比率で再生速度とピッチを同時に変更する方法
再生速度とピッチを同時に変更するには、ピッチを維持せず、1つの速度倍率 r を適用します。すべての周波数は元の値の r 倍になり、再生時間は元の長さを r で割った値になります。たとえば、1.25×で再生すると440 Hzの音は550 Hzになり、60秒の音声は48秒に短縮されます。
このガイドは、書き出す音声ファイルでこの連動した変化を作りたい音声編集者向けです。比率を計算し、適切なツールで適用して、結果が意図した再生時間と音程に合っているか確認します。Audacityでは、この動作がChange Speed and Pitchマニュアルに記載されています。
速度とピッチを同時に変更するとは?
連動した速度変更では、録音された音の出来事が速く、または遅く進み、それに比例して周波数が上がる、または下がります。AudacityのChange Speed and Pitchエフェクトは、テンポ、ピッチ、周波数成分を明示的に同時に変更します。別のChange Pitchエフェクトでは、再生時間は変わりません。必要な結果に合った操作を選んでください。出典: Change Speed and Pitch、Change Pitch。
ここでは比率を新しい再生速度 ÷ 元の再生速度と定義します。比率が1を超えると録音は速くなり、ピッチが上がります。0より大きく1未満なら遅くなり、ピッチが下がります。値を入力する前に、方向を明記してください。「新しい速度は元の速度の5/4」は、「5:4に変更する」より明確です。
正確な比率はどう計算する?
まず、実際に分かっている要件を使います。次の式は一定の速度で連動して変更する理想的な場合を示しています。例は計算例であり、編集結果を測定したものではありません。
| 分かっている要件 | 速度倍率 r の計算 | 計算例 |
|---|---|---|
| 速度比が直接分かっている | r = 新しい速度 ÷ 元の速度 | 5/4 = 1.25 |
| 元の周波数と目標周波数 | r = 目標周波数 ÷ 元の周波数 | 550 ÷ 440 = 1.25 |
| 元の再生時間と目標再生時間 | r = 元の再生時間 ÷ 目標再生時間 | 60 ÷ 48 = 1.25 |
| 元のテンポと目標テンポ | r = 目標BPM ÷ 元のBPM | 120 ÷ 96 = 1.25 |
r が分かったら、予想される結果を計算します。新しい再生時間 = 元の再生時間 ÷ r、新しい周波数 = 元の周波数 × rです。同じ音声イベントの並びを新しい速度で再生するため、再生時間の関係はこの式で求められます。
エフェクトが変化率をパーセントで求める場合は、100 × (r − 1)を入力します。つまり、1.25×は+25%、0.8×は−20%です。Audacityのマニュアルにも、倍率からパーセントへの同じ関係が記載されています。出典: Change Speed and Pitch。
よくある間違いは、再生速度のパーセントと変化率を混同することです。「元の速度の125%」は1.25×を意味します。「速度を125%上げる」は2.25×を意味します。また、再生時間の式を逆にする間違いもあります。60秒を48秒に収めるには速く再生する必要があるため、倍率は1を超えます。
音程の間隔を速度比に変換するには?
平均律の半音 n 個分の間隔には、r = 2^(n/12)を使います。n が正ならピッチが上がり、負なら下がります。既存の比率から間隔を求めるには、n = 12 × log₂(r)を使います。これらの関係は、周波数比が2:1のオクターブを12個の等しい半音比に分割したものです。出典: UNSW、音名、MIDI番号、周波数。
次の表では、これらの式を例として60秒の録音に適用しています。表示される小数は丸めています。
| 速度倍率 | 変化率 | 新しい再生時間 | 音程の間隔 |
|---|---|---|---|
| 0.5× | −50% | 120秒 | −12半音 |
| 0.8× | −20% | 75秒 | 約−3.863半音 |
| 1.25× | +25% | 48秒 | 約+3.863半音 |
| 1.5× | +50% | 40秒 | 約+7.020半音 |
| 2× | +100% | 30秒 | +12半音 |
| 約1.059463094× | 約+5.946309% | 約56.632459秒 | +1半音 |
目標が数値比なのか、平均律の音程なのかを決めてください。3:2の比率は正確に1.5ですが、平均律で7半音上げるには2^(7/12)、約1.498307077が必要です。設定値は近いものの、結果は異なります。丸めた表示だけが目標値の記録にならないよう、編集メモには定義となる分数または式を残してください。
Audacityで比率を適用するには?
このエフェクトが使えるバージョンでは、対象の音声を選択し、Effect → Pitch and Tempo → Change Speed and Pitchを開きます。Speed Multiplier、またはそれに相当するPercent Changeに値を入力します。ダイアログではこれらの設定と、選択範囲の再生時間が連動します。出典: AudacityのChange Speed and Pitchマニュアル。
例として5/4に変換する場合は、1.25または+25%を入力し、60秒の選択範囲が48秒になることを確認します。プレビューして適用した後、別の出力ファイルに書き出します。後で同じ素材から修正を始められるよう、元のファイルも残してください。
メニュー名や使用できる設定はバージョンによって異なる場合があります。選択した操作で速度とピッチが連動することを確認してください。現行のAudacityマニュアルでは、Change Pitchは再生時間を維持すると説明されています。そのため、このエフェクトに音程の間隔だけを入力しても、今回の作業は完了しません。出典: AudacityのChange Pitchマニュアル。
設定値としては、インターフェースが実際に保持する数値を使います。入力した比率が丸められる場合、長い書き出しを実行する前に、保持された数値から結果を計算してください。1.25のような比率は小数が有限桁で終わりますが、平均律の半音1つ分は、有限桁の小数で入力すると近似値になります。
FFmpegで再現可能な変換を行うには?
FFmpegを使う方法もあります。asetrateはPCMのサンプルデータを変えずにサンプルレートを変更し、速度とピッチを連動して変化させます。その後、aresampleで指定した出力サンプルレートに変換できます。出典: FFmpegフィルター文書のソース、FFmpegフィルター文書。
次の完全な例を実行するには、FFmpegがインストールされ、ターミナルからffmpegとして利用できる必要があります。書き込み可能なディレクトリで、まだ使われていないファイル名を指定して実行してください。最初のコマンドは、48,000 Hzで440 Hzのテスト音を10秒間生成します。2つ目のコマンドは5/4の比率を適用し、48,000 HzのWAVファイルを書き出します。FFmpegの文書に記載されたsineソースがサンプルデータを生成します。出典: FFmpegフィルター文書のソース。
ffmpeg -n -f lavfi -i "sine=frequency=440:sample_rate=48000:duration=10" -c:a pcm_s16le ratio-input.wav
ffmpeg -n -i ratio-input.wav -af "asetrate=60000,aresample=48000" -c:a pcm_s24le ratio-output.wav
中間レートは48,000 × 1.25 = 60,000 Hzです。予想される出力は、550 Hzの音が8秒間続くファイルです。リサンプリングによって出力サンプルレートを48,000 Hzに戻しても、変更後の再生時間は維持されます。これらのコマンドは文書と照合しましたが、調査環境ではFFmpegを利用できなかったため、実行していません。
この例を変更する場合は、まず元ファイルのサンプルレートを確認してください。元のレートが S の場合、中間レートはS × rでなければなりません。元のファイルが48,000 Hzでないのに60,000を使うと、比率が変わります。特に大きく変換する場合は、使用するビルドとフィルターチェーンで中間レートが受け入れられることを確認してください。
デジタルファイルで比率を正確に保つには?
次の3点を分けて考えます。意図する比率、ツールで設定できる値、そして書き出したサンプル数で表せる再生時間です。5/4のような正確な分数は、有限桁の小数で表せます。多くの音程比は数値で入力する際に近似値になります。
サンプルレートを使った変換では、中間サンプルレートが丸められていないかも確認が必要です。例として、48,000 Hzの音源を平均律で半音上げる場合、数学上は約50,854.228529 Hzが必要です。設定値を50,854 Hzにすると、実際に適用される比率は数学上の目標値全体ではなく50,854/48,000になります。1200 × log₂(実際の比率 ÷ 目標比率)を計算すると、誤差は約−0.00778セントです。セントの関係はUNSWの周波数と音名の資料に記載されています。
再生時間には別の制約があります。デジタルファイルのサンプルフレーム数は整数です。48,000 Hzでは、1サンプルフレームの長さは約20.833マイクロ秒です。計算した目標再生時間がサンプル境界の間にある場合、近くの境界で表す必要があります。上の10秒のテストでは、予想される8秒の出力は、チャンネルあたり正確に384,000サンプルフレームに相当します。
これらの計算を使って判断できます。定義した比率を記録し、実際に適用した値を残して、結果の差がプロジェクトに必要な精度の範囲内か比較してください。丸めた設定値を、目標と数学的に完全に一致するものとして説明するのは避けてください。
書き出した結果を確認するには?
書き出したファイルそのものを確認します。診断には、まず再生時間、次に周波数、最後に録音全体を調べる順序が有効です。
- 再生時間を比較する。 元の再生時間を r で割ります。生成例では、10 ÷ 1.25 = 8秒です。末尾も含め、ファイル全体を確認してください。
- 既知の周波数を比較する。 440 Hzのテスト音は1.25×で550 Hzになります。比較したい精度に合う分解能の周波数アナライザーを使います。
- 保持された設定を確認する。 丸めの有無を含め、実際に使った倍率または中間サンプルレートを記録します。
- 結果を最初から最後まで聴く。 冒頭、末尾、切り替わり部分、および意図した範囲を処理したかを確認します。
不一致のパターンから、原因を絞り込めます。再生時間は正しいのにピッチが変わっていない場合、ピッチを維持する処理が使われた可能性があります。ピッチは正しいのに再生時間が変わっていない場合は、独立したピッチ変更操作を行った可能性があります。両方の変化が同じ比率で誤っている場合は、比率の向きを再確認してください。サンプルレートによる処理なら、元のサンプルレートも確認します。これらは連動した変更の式から導かれる診断上の推論です。
再生時間とピッチの両方に目標がある場合は、編集前に必要な比率を比較してください。60秒の録音を48秒に短縮するには r = 1.25が必要です。ピッチを2倍にするには r = 2が必要です。1回の一定の連動変更では、両方を同時に満たせません。どちらかの目標を変更するか、ピッチと再生時間を個別に調整できる処理を選ぶ必要があります。
確実に変換するには、比率を記録し、予想される再生時間と周波数を計算して、連動した変更を1回適用します。その後、書き出した結果を予測値と照合します。こうすれば、再現可能な結果が得られ、丸めがあった場合も明確に説明できます。
