BioErrorLog Tech Blog

試行錯誤の記録

ffmpegで音声ファイルの再生速度を変換する

音声ファイルの再生速度をffmpegで変換する方法の備忘録です。

はじめに

音声ファイルの再生速度をコマンドでパッと変更する方法はないかと調べてると、ffmpegで簡単にできることを知りました。

やり方の備忘録を残します。


ffmpegがまだインストールされてない場合、homebrewなどの各種パッケージマネージャや公式サイトから実行ファイルを取得してインストール可能です。

ffmpegで音声ファイルの再生速度を変換する

下記のようなコマンドで、再生速度を変換したファイルを生成できます。

ffmpeg -i input.mp3 -filter:a "atempo=0.5" output.mp3

-filter:aでオーディオを対象に変換することを示し、atempoで再生速度を指定します。 上記のコマンドでは、input.mp3を0.5倍速にしたファイルがoutput.mp3として出力されます。

また、-filter:a-afとしても同様に変換が可能です。

ffmpeg -i input.mp3 -af "atempo=0.5" output.mp3


なお、atempoには0.5~100.0の範囲しか指定できません。 例えば0.25倍速するには、下記のようにして0.5倍速変換を2回適用させます。

ffmpeg -i input.mp3 -filter:a "atempo=0.5,atempo=0.5" output.mp3


また、2倍速以上の変換を一気に行うと、サンプリングが(ブレンドではなく)スキップされる箇所が出てきます。 これが嫌な場合も、2倍速以内の倍速率を複数回繰り返すようにします。

# 一気に3倍速
ffmpeg -i input.mp3 -filter:a "atempo=3" output.mp3

# 一回の変換率が2倍を超えないよう2回に分けて3倍速に変換
ffmpeg -i input.mp3 -filter:a "atempo=sqrt(3),atempo=sqrt(3)" output.mp3


詳しくはffmpegのドキュメントにも記載があるのでこちらをご覧ください。

おわりに

以上、ffmpegで音声ファイルの再生速度を変換する方法を簡単にメモしました。 ffmpegは本当に便利ですね。

どなたかの参考になれば幸いです。

[関連記事]

www.bioerrorlog.work

参考