Linux ALSA環境で音声出力を強引に録音する設定

Linuxでプログラムの音声を保存する場合、OSSならばvsoundというプログラムがある。しかし、ALSAには対応していない。
ALSAでスピーカー出力を音声ファイルに保存するには、 ~/.asoundrc で以下の設定を書く。pcm-fileプラグインについてはALSA project - the C library reference: PCM (digital audio) plugins参照。

pcm.!default {
    type file
    slave {
      pcm "hw:0,0"
    }
    file /log/alsa.raw
}

この設定を加えたら、ALSA環境で音を鳴らした時点で /log/alsa.raw に保存される。デフォルトではCD並の音質で保存される。これはraw audioファイルなので特殊なオプションを使って再生する必要がある。
mplayerの場合は「mplayer -demuxer rawaudio /log/alsa.raw」で再生できる。

ただし、音声を使ったプログラムが終了するまで(音声がなりおわっても無音のまま!!)記録し続けるので、ディスク容量が少ない人は注意が必要だ。CD並の音質なので6秒で1MB消費する。1分で10MB、100分で1GB、一日で14.4GBの計算になる。とはいえ、この大容量時代、富豪するのも悪くはない。

音声を使ったプログラムが終了した時点で音声ファイルへの記録が止まる。そして、次のプログラムが音声を出力した場合、 /log/alsa.raw が上書きされる。ただし、前回の録音が残ってしまうので注意。

音声を保存する場合は適宜別のファイル名に退避させよう。