Linuxでwavファイルいじったメモ

音声ファイルをLinuxでいろいろやったメモ.

wavファイル連結

Perlでwavファイル連結とかやってたけれど,soxというそれに特化した優秀なツールがあるよー,とコメントいただいた.

sox infile1.wav infile2.wav outfile.wav

専用ソフトなだけあってはやいはやい.

wavのチャンネル数変換

上の連結はwaveのチャンネル数とか一致してないとだめなので,1チャンネルしかもってないwavファイルは2チャンネルに変換してから.soxまったくもって便利.

sox -c 1 in_chan1.wav -c 2 out_chan2.wav

勝手に平均化してくれるので自然に聞こえる.

あと,wavファイルのチャンネル数はCPANモジュールAudio::Wavで調べられる.次のような感じ.

my $wav = new Audio::Wav;
my $read = $wav->read($infile);
my $chan =  $read->details()->{channels};

Mplayerでうまく音がならない(環境依存?)

うちのLinux上で走らせてたMplayer 4.0.2*1はチャンネルが1つしかないデータをうまく再生できなかった.あやしげな警告をもとにググって見ると,Official Alsa Wiki for Developers: WAVE Formatを発見した.なんかちゃんと読んでないけどハードウェア依存の問題?ファイルにダンプしてるだけだから関係ないと思うんだけどなぁ.

$ mplayer -srate 48000 infile

ともあれ,こうしたら幸せになりました.単にサンプリングレートを明示したのがよかったのかもしんない.

けっこうハマったんだけど,Mac OS Xで同じことやるとすっと動いたりして,もうなにそれという感じ.

*1:同じバージョンでも入ってるドライバとかコンパイルとかでかなり動き違ってそうだけど