this episode means a lot to me

自分のためのブログです。日々のやったこと・ふりかえりを主に書いています

MENU

mp4ファイルから無音部分を除去する。Ubuntu18.04

概要

900ファイルほどまとめて無音部分を除去したかったので調査。

mp4の状態のまま無音部分の除去をしたかったけど見当たらず、
音声部分だけ倍速再生してオーディオブック的な使い方ができればということで実行

詳細

  • mp3のままだと変更できないので、wavに一旦変換する。
  • オーディオファイル
  • 最初の無音部分をカット
  • 最後の無音部分をカット
  • ついでに、ファイルの間の一定時間無音のものもカット -WAVはMP4の10倍ほどのサイズになったのでフォルダを分割してシェルでまとめて実行

環境

事前準備

Soxは 以下でインストール
UbuntuでOpenMeetingsとかで、SoXのインストールなどを | UbuntuやWordPress等を使ってみるテスト

手順

  1. フォルダ配下のmp4ファイルをwavに変換

    find . -name '*.mp4' -exec ffmpeg -i '{}' -vn '{}'.wav ';'

  2. 無音部分はSoxで削除する

    find . -name '*.wav' -exec sox '{}' '{}'_remove_silence.wav silence 1 0.1 1% -1 0:20 0.1% ';'

  3. wavをmp3に変更する

    find . -name '*_remove_silence.wav' -exec ffmpeg -i '{}' '{}'.mp3 ';'

参考は以下の通り
http://programming.ironsand.net/2014/how-to-extract-audios-without-silence-with-ffmpeg-and-sox/

勘所

durationは秒数指定したいなら小数点・MM:SS・SSt(e.g. 100.0 , 1:40, 100t)を使い、サンプル数の時は整数指定をするようだ。

  1. sox input.wav output3.wav silence 1 0.1 1% -1 100.0 0.1% →長さ1:33
  2. sox input.wav output3.wav silence 1 0.1 1% -1 100 0.1% →長さ1:24
  3. sox input.wav output3.wav silence 1 0.1 1% -1 1:40 0.1% →長さ1:33