まえがき
機械学習用に音声データを集めている時
合計で何分集まったか調べるのがめんどくさかったためコマンドでサクッとできないか調べた。
前提
筆者はMacでのみ導入を確認した。
soxパッケージをインストール
・Macの場合
brew install sox
・Ubuntuの場合
sudo apt update
sudo apt install sox
・Windowsの場合
SoX の公式サイト (http://sox.sourceforge.net/) にアクセスします。
"Windows binaries" のリンクをクリックし、Windows 用のインストーラーをダウンロードします。
ダウンロードしたインストーラーを実行し、画面の指示に従って SoX をインストールします。
インストールが完了したら、コマンドプロンプトまたは PowerShell で sox と入力し、ヘルプメッセージが表示されることを確認します。
ディレクトリ内の特定の拡張子のファイルが合計何秒か調べる
小数点以下2桁
・wavの合計の長さを調べる
小数点以下切り捨て
soxi -D *.wav | paste -sd+ - | bc | awk '{m=int($1/60); s=int($1-m*60); printf "%d分%d秒\n", m, s}'
小数点以下1桁まで( 桁数は'f秒'の前の数値を書き換えることで操作できる。)
soxi -D *.wav | paste -sd+ - | bc | awk '{m=int($1/60); s=$1-m*60; printf "%d分%.0f秒\n", m, s}'
小数点以下2桁まで
soxi -D *.wav | paste -sd+ - | bc | awk '{m=int($1/60); s=$1-m*60; printf "%d分%.2f秒\n", m, s}'
その他の拡張子
他にもmp3、mp4、mov、aiffなど、音声や動画のさまざまなファイルに対応している。
・mp3の合計の長さを調べる
soxi -D *.mp3 | paste -sd+ - | bc | awk '{m=int($1/60); s=$1-m*60; printf "%d分%.2f秒\n", m, s}'
・mp4の合計の長さを調べる
soxi -D *.mp4 | paste -sd+ - | bc | awk '{m=int($1/60); s=$1-m*60; printf "%d分%.2f秒\n", m, s}'
・movの合計の長さを調べる
soxi -D *.mov | paste -sd+ - | bc | awk '{m=int($1/60); s=$1-m*60; printf "%d分%.2f秒\n", m, s}'