手軽に形式変換したい
音声認識を行う際、ビットレートやサンプリング周波数や形式などを考えなくては正確な結果が出ません。というかそもそもアルゴリズムが叩けなかったりします。
なので当然集音に際してはそこを合わせるわけですが、既存音源を無理やり変換してやってみよう(みろ)なんてことも、仕事をしてるとあります。そんな時 Audacity などのソフトでちまちまやるのは大変です。
ということでちょっと探したらsox
というコマンドがあったので覚書。
SoXとは
SoX : Sound eXchange, the Swiss Army knife of audio manipulation
→ 手軽に音声ファイル変換できるコマンド
操作
sox基本コマンド
- wavからrawに変換
$ sox input.wav output.raw
sox形式指定コマンド
-
-b
でbit指定 /-r
でサンプリングレート指定 /-c
でチャンネル数(ステレオ・モノラル)指定
$ sox input.wav -b 16 -r 16000 -c 1 output.raw
ディレクトリ内まとめて変換
-
find
コマンドと併用すると便利
$ find . -name "*.wav" -exec sox -b 16 -r 16000 -c 1 {} {}.raw \;
※ findで検索した結果を利用する
-
-name
でクエリ指定、-exec
以降に実行したいコマンド、実行対象の場所には{}
を書く - まとめて
curl
でAPI叩くなんて時に使えます
$ find raw -name "*.raw" -exec <command> {/* here is the result */}
参考
https://qiita.com/mountcedar/items/a04ebc4f8c27c226bbff
https://qiita.com/scapegoat_11_/items/abedab01d099f536e2a0
https://qiita.com/kaz-mintan/items/aea24072d3901a060c0e
http://www.xucker.jpn.org/pc/sox_raw.html
https://eng-entrance.com/linux-command-find