ぼんやりDTP

DTPに関係したりしなかったりするぼんやりとした話をなんとなく。

AIFFファイルの前後の無音部分をトリミングしてMP3に変換したい

AIFFファイルの前後の無音部分をトリミングしてMP3に変換したい

ffmpegを使う場合

# aiffのまま
for i in *.aiff
do
    ffmpeg -i "$i" -af "silenceremove=start_periods=1:start_duration=1:start_threshold=-60dB:detection=peak,aformat=dblp,areverse,silenceremove=start_periods=1:start_duration=1:start_threshold=-60dB:detection=peak,aformat=dblp,areverse" "$(basename -s .aiff "$i")_trimmed.aiff"
done

# mp3に変換
for i in *.aiff
do
    ffmpeg -i "$i" -af "silenceremove=start_periods=1:start_duration=1:start_threshold=-60dB:detection=peak,aformat=dblp,areverse,silenceremove=start_periods=1:start_duration=1:start_threshold=-60dB:detection=peak,aformat=dblp,areverse" "$(basename -s .aiff "$i")_trimmed.mp3"
done

soxを使う場合

両サイドの無音部分を削除するコマンド例。

sox in.wav out.wav silence 1 0.1 1% reverse silence 1 0.1 1% reverse

silence で無音部分を削除。

上記コマンド例の silence オプションのパラメーターは下記の通り。

フィルターを使うかどうか 無音が続く時間 無音とみなす閾値
1 0.1 1%

reverse は前後を反転。

例:カレントディレクトリのaiffファイルを全部処理するコマンド例。前後の完全無音のみ削除。

# aiffのまま
for i in *.aiff
do
    sox "$i" "$(basename -s .aiff "$i")_trimmed.aiff" silence 1 0.1 0% reverse silence 1 0.1 0% reverse
done

# mp3に変換
for i in *.aiff
do
    sox "$i" "$(basename -s .aiff "$i")_trimmed.mp3" silence 1 0.1 0% reverse silence 1 0.1 0% reverse
done

参考ページ:

  1. bash - batch convert mp3 files to wav using sox - Unix & Linux Stack Exchange

  2. The SoX of Silence

  3. ubuntu - How to include input file name in output file name in ffmpeg - Unix & Linux Stack Exchange

  4. audio - How to trim silence only from beginning and end of mp3 files using FFMpeg? - Super User

  5. [ffmpeg][sox] ffmpeg と sox でドラマから音声を無音部分を除いて抜き出す答えを知りたい | 答えを知りたい

  6. 音声の無音部分削除

  7. ffmpegで音声をカット編集 - Qiita