スターデジオ録画ではまった
xubuntu13.10クリーンインストールしたあとの録音環境構築。
arecordコンパイル
例によって、arecordの2Gbの壁突破のためにソースからコンパイルしなおし。
録音しようとすると「SPARCオーディオはS16_LEをサポートしてへんで」と怒ってくる。-d dat指定のことのようだ。サンプリングレートやチャンネルをコマンドラインで指定してみると録音はできた。
で再生してみたらなんかやたら大音量で割れている。いろいろ設定をいじってみるがだめ。ハードウェア指定を変えてみたら「フォーマットがちゃうぞ。S16_LEを指定してみたらどや」とまた怒られる。
もしやと思ってソースファイルを再修正してコンパイル。こんどはあっさり録音でした。begin_waveなんちゃらの行を単にコメントアウトしただけではだめで、前回同様適当な数字を指定してやらなければならないようだ。
ノーマライズできない
録音したファイルはノーマライズして無音部分をカットして、lameでmp3化しているが、できあがったファイルがノーマライズされてない。ノーマライズ&無音カットはwavnoをコンパイルして使っていたが、これが効いていない。出すメッセージをみると十分大きな音量だと見なしているもよう。wine経由でwavno.exeを使っても同様。その前に使っていたwavflt2でもやはりノーマライズできない。
なんか他に方法はないかと検索すると、audio-normalizerというソフトがあって、どうやらubuntuの公式リポジトリに入っているもよう。推定通りsudo apt-get install audio-normalizerでインストールできた。
実行したら期待通り。無音部分カットはwavnoがちゃんと動いているので、バッチ処理(phpを使用)はwavno、audio-normalizer、lameの順で処理。
追加調査
無音カットはリポジトリに入っているようなソフトでできないかなと思ったら、どうやらsoxでできるもよう。マニュアルに書いてあるabove_periods、below_periodsというオプションがようわからんと思ったが、とりあえずこれで想定していたことはできた。
sox in.wav out.wav reverse silence 1 0.1 1% reverse
ひっくり返して前の無音部分をカットして、さらに元に戻すということをやっている。
マニュアルページとか読んでいてやっとでわかった。above_periods、below_periodsはオプションではなくパラメータだった。で、これでも頭とお尻の無音カットができた。
sox in.wav out.wav silence 1 0.1 1% 1 0.1 1%
soxはお仲間ソフトのrecでリアルタイムの録音もできるもよう。当面はarecord改造で用は足りているけど。
soxのノーマライズは「最大音量から指定のdBもしくは%の音量に揃える」という一般的な意味でのノーマライズとは違うような気がする。