B05 録音の設定

室長:録音しなければ測定出来ないので、録音の設定をするぞ。デバイスの確認はarecordで-lと-Lオプションだ。


arecord -l
arecord -L

あと音声フォーマットが対応しているかは実際に試してみればよい。エラーを起こさずに録音できればOKじゃ。今回は測定用マイクではなくて普通のノートパソコンのマイク端子に接続できる安物を使ってみるぞ。

助手:じゃあやってみます。ノートパソコンのマイク端子に安物マイクを接続してコマンドラインから


arecord  -d 4 -f cd -D hw:0,1  testrecord.wav

これでCDフォーマットで4秒間の録音ができました。再生してみて……なにも録音されてませんよ!

室長:コマンドラインから alsamixer を立ち上げて録音レベルを調整してくれ。alsamixerの設定は環境によって変わるぞ。captureとマイクゲインの設定がある場合もある。いろいろ試してくれ。

助手:目一杯ゲインをあげてやり直して…….こんどは過大入力で音が歪んでますよ!

室長:録音レベル設定用にoctaveの関数ファイルとシェルスクリプトを作っておこう。指定したwavファイルを読み込んで最大値をdB表示する関数を作ってくれ。

助手:えーとwavreadとmaxを使えばよさそうです。

maxdb.m


#m = maxdb(wav_filename)
#wavファイルの最大値(dB)
#
function m = maxdb(wav_filename)
  a=wavread(wav_filename);
  m=a2db(max(abs(a)));
endfunction

室長:じゃあこれを実行可能なスクリプトファイルにしてくれ。

助手:えーと引数がargvに入るから…

maxdb


#!/usr/bin/octave --quiet
#wavファイル名を引数にとりその最大値をdB表示
#最初の引数以外は無視
#octaveのバージョンによってはnth_elementではなくnthを使う
filename=char(nth_element(argv,1));
maxdb(filename)

 


chmod +x maxdb

これで


./maxdb test.wav

とすれば指定したWAVファイルの最大値が表示できます。

室長:よし、つぎは次はbrutefirを通して再生したログスイープを録音して最大値を表示するスクリプトを書いてくれ。

助手:こんなんでどうですか。

recsweep


#!/bin/bash
sleep 1
sox sweep44k2sec.wav -t .s16 - | brutefir  bruteconfig.txt &
arecord  -d 4 -f cd -D hw:0,0  test.wav
./maxdb test.wav

あとは実行属性をつけてコマンドラインから./recsweepとすれば録音されるはずです。

室長:最初の一回はbrutefirの計算で時間がかかるのでうまく録音できないことがあるので注意じゃ。2回め以降は大丈夫だろう。後は録音されたtest.wavを解析すればよいのだ。

2012年12月25日

次ページへ

目次へ