オーディオファイルを無音のところで分割

Pocket

CDから取り込んだオーディオデータを音が途切れるところで自動的に分割する方法。

インストール

iTunesに取り込んだ音声データをffmpegでmp3に変換し、その後Soxで分割します。
そのためにffmppegとsoxをインストールします。

homebrewでffmpegをインストール


brew install ffmpeg

同じく、soxをインストール。lameはsoxでmp3ファイルを作るために必要になります。


brew install lame
brew install sox

m4aをmp3に変換

iTunesで取り込んだデータがm4aというフォーマットだったので、mp3に変換します。


ffmpeg -i hoge.m4a -ab 256k hoge.mp3

mp3ファイルを静音部分で分割

soxを使って静音部分で分割します。
静音とみなす条件は次のように指定します。

silence [-l] above-periods [duration threshold[d|%] [below-periods duration threshold[d|%]]

above-periods: 音声の先頭にある静音部分を削除するか。0は削除しない。1以上は静音ではない部分まで削除する。

duration: 静音部分とみなす持続時間。秒数で指定する場合はtを付けて指定する(2秒=2t)か分秒形式で指定する(0.1秒=00:00:1)

threshold: 静音とみなすしきい値。単位はデシベル(d)かサンプル値の最大値に対するパーセンテージ(%)

below-periods: 音声の静音部分を削除する回数。この回数を超えるとそれ以降の静音部分は削除されず、スキップされます。

Soxのマニュアルから調べたので、説明が「削除する」になっていますが、分割するコマンドの場合は「分割する」という意味になります。

hoge.mp3のを静音部分で分割するコマンド


sox -V3 hoge.mp3 silence 1 1t 0.1% 1 1t 0.1% : newfile : restart

音声の最初に静音部分があればカットする。
そのあとに静音部分があれば分割する。
静音箇所は0.1%の音量が1秒以上続くことを条件とする。

コマンド中の:rewfileは一意な番号を含む新しい出力ファイルの書き出しを命令している。
:restart はコマンドを繰り返すことを意味している。