Ubuntu で用いる録音ネットワークサンプルは,表 14.2 に示すように 4 種類ある.左列に,ネットワークファイルを,右列に処理内容 を示している. これらのサンプルを実行するには,ターミナルで ./ファイル名 [録音時間] とすればよい.図 14.2 にその実行例を示す.
ネットワークファイル名 |
処理内容 |
demoALSA_2ch.n |
ALSA準拠デバイスを用いた 2ch 録音 |
demoWS_8ch.n |
無線 RASP を用いた 8ch 録音 |
demoTDBD_8ch.n |
TD-BD-16AD-USB を用いた 8ch 録音 |
demoRASP24_8ch.n |
RASP24 を用いた 8ch 録音 |
> ./demoALSA_2ch.n 100 UINodeRepository::Scan() Scanning def /usr/lib/flowdesigner/toolbox done loading def files loading XML document from memory done! Building network :MAIN <Bool 1 >
ただし,各サンプルネットワークファイルで使用するモジュールは全て共通 であり、違いは,AudioStreamFromMic モジュールに指定するパラメータだけ であることに注意されたい.各サンプルで設定されている DEVICE パラメータ (ALSAの場合は plughw:1,0, RASPの場合は 127,0,0,1など) は,環境によって 変化する.そのため,この DEVICE パラメータは各自で設定を変更する必要 がある.
ネットワークファイルは二つのサブネットワーク (MAIN, MAIN_LOOP) から構成されており, MAIN (subnet) に 1 個, MAIN_LOOP (iterator) に 6 個のモジュールがある. MAIN (subnet) と MAIN_LOOP (iterator) を 図 14.3, 14.4 に示す. AudioStreamFromMic モジュールで取り込んだマルチチャンネルの音声から ChannelSelector モジュールを使って特定のチャンネルだけを選び, SaveWavePCM でファイルに書き出す単純なネットワーク構成である. ネットワークに SaveWavePCM モジュールが 2 個あるが,これは マルチチャンネルの音声を録音する際に 二つの方法があるからである (モノラル音声の場合はどちらも同じ). AudioStreamFromMic モジュールからの出力を直接 SaveWavePCM モジュールに 接続した場合は,1 つのファイルに全てのチャンネルの音声が含まれる. 一方で MatrixToMap を介して接続した場合は,各チャンネル毎にファイルが 作成される. Iterate は設定した値の回数だけ実行を繰り返すために使うモジュールである. 繰り返し回数が MAX_ITER より小さい間のみ true を出力する.そのため, このノードの出力を繰り返しの終了判定に用いることで取り込むフレーム数を指定し, 録音時間を調節することができる.
MAIN (subnet) にある MAIN_LOOP モジュールのプロパティは, 5 個ある.表 14.3 に一覧を示す. SAMPLING_RATE と GET_FRAMES が重要である. この表の通りに各パラメータ値が設定されている. GET_FRAMES の設定値が,int :ARG1 となっているが,この意味は, サンプルネットワークファイルの第一引数を整数型にキャストして代入する意味である. 録音時間長は,取得フレーム数で指定し,実際の録音時間長を秒で表すと,
$\displaystyle $ | $\displaystyle $ | $\displaystyle ( LENGTH + (GET\_ FRAMES - 1) * ADVANCE ) / SAMPLING\_ RATE $ | (1) |
である.
パラメータ名 |
型 |
設定値 |
単位 |
説明 |
ADVANCE |
int |
160 |
[pt] |
シフト長 |
LENGTH |
int |
512 |
[pt] |
FFT 長 |
SAMPLING_RATE |
int |
16000 |
[Hz] |
サンプリング周波数 |
GET_FRAMES |
subnet_param |
int :ARG1 |
録音フレーム数 |
|
DOWHILE |
bool |
空欄にする |
RecordLin ディレクトリにある demoALSA_2ch.n を実行する. 録音が正常に終了すると,一つのファイルに 2ch の音声を録音した rec_all_0.wav というファイルと,各チャンネル毎に一つのファイルに した rec_each_0.wav, rec_each_1.wav というファイルを生成する.
うまく録音できないときは,次のチェックをする.
HARK 以外の録音ソフトで音の再生や録音は可能か確認する.再生や録音 ができない場合は,OS やドライバの設定,オーディオインターフェース が正しく接続/設定されていない可能性がある.そちらを確認する.これ には,例えば audacity やデバイスに付属するサンプルを用いる.
マイクロホンは接続されいるか.プラグが抜けていたり,緩んでいないか 確認し,しっかり接続する.
PC のマイク端子がプラグインパワーに対応しているか確認する. プラグインパワーに対応していない時は,マイクロホンに電源を供給する 必要がある.マイ クロホンに電池を入れるタイプでは電池を入れ,スイッチを入れる.電池 ボックスを接続するタイプでは電池ボックスを接続しスイッチを入れる.
2 つ以上のオーディオインターフェースを接続している場合は,2 台目以 降のオーディオインターフェースを外してから,録音する.接続オーディ オインターフェースを1 台にしても録音できない場合には,demo.n のプ ロパティを変更する.AudioStreamFromMic モジュールの DEVICE プロパ ティを plughw:0,0 plughw:0,1 plughw:1,0 などの設定を試す.
AudioStreamFromMic のパラメータを表 14.8 に示す. このモジュールで,録音デバイスを指定する.このデモでは,録音チャネル数を 2 ch にし, DEVICETYPE に ALSA,DEVICE は plughw:0,0 を指定した.
パラメータ名 |
型 |
設定値 |
単位 |
説明 |
LENGTH |
subnet_param |
LENGTH |
[pt] |
FFT 長 |
ADVANCE |
subnet_param |
ADVANCE |
[pt] |
シフト長 |
CHANNEL_COUNT |
int |
2 |
[ch] |
録音チャネル数 |
SAMPLING_RATE |
subnet_param |
16000 |
[Hz] |
サンプリング周波数 |
DEVICETYPE |
string |
ALSA |
デバイスタイプ |
|
DEVICE |
string |
plughw:0,0 |
デバイス名 |
RecordLin ディレクトリにある demoWS_8ch.n を実行する. ただし,demoWS_8ch.n には,無線RASP の IP アドレスとして 127.0.0.1 を 指定しているが,これを適切な IP アドレスに変更する必要がある. また,もし無線 RASP の FPAA のコンフィグレーションが終っていなければ, ここで実行する.ws_fpaa_config 実行方法は無線 RASP のドキュメントを 参考にする. 録音が正常に終了すると,ALSA 準拠デバイスの時と同様に 8ch の音声ファイル rec_all_0.wav と,各チャンネル毎にファイルにした rec_each_0.wav, rec_each_1.wav,...,rec_each_7.wav というファイルが生成される.
うまく録音できないときは,次のチェックをする.
マイクロホンは接続されいるか.プラグが抜けていたり,緩んでいないか確認し, しっかり接続する.
RASP の IP アドレスにネットワーク接続されているか? ping を使ってネット ワーク接続を確認する.
AudioStreamFromMic に RASP の正しい IP アドレスを設定しているか?
RASP の FPAA の初期化が完了しているか?
HARK 以外の録音ソフトで音の再生や録音は可能か確認する.再生や録音 ができない場合は,OS やドライバの設定,オーディオインターフェース が正しく接続/設定されていない可能性がある.そちらを確認する.
AudioStreamFromMic のパラメータを表 14.5 に示す. DEVICETYPE に 無線 RASP を表す WS を,DEVICE には IP アドレスを指定する. サンプルを実行するには,実際の無線 RASP のアドレスに変更する必要がある.
無線 RASPと接続する場合には,AudioStreamFromMic モジュールの CHANNEL_COUNT を 16 にして使用する必要がある. そのため, 8 ch 録音するためには,16 ch 中から 8 ch 分を選択しなければ ならない.この例では ChannelSelector で,0〜7 ch を選択している.
パラメータ名 |
型 |
設定値 |
単位 |
説明 |
LENGTH |
subnet_param |
LENGTH |
[pt] |
FFT 長 |
ADVANCE |
subnet_param |
ADVANCE |
[pt] |
シフト長 |
CHANNEL_COUNT |
int |
16 |
[ch] |
録音チャネル数 |
SAMPLING_RATE |
subnet_param |
16000 |
[Hz] |
サンプリング周波数 |
DEVICETYPE |
string |
WS |
デバイスタイプ |
|
DEVICE |
string |
127.0.0.1 |
デバイス名 |
RecordLin ディレクトリにある demoTDBD_16ch.n を実行する. 録音が正常に終了すると,ALSA 準拠デバイスの時と同様に 8ch の音声ファイル rec_all_0.wav と,各チャンネル毎にファイルにした rec_each_0.wav, rec_each_1.wav,...,rec_each_7.wav というファイルが生成される.
うまく録音できないときは,次のチェックをする.
マイクロホンは接続されいるか.プラグが抜けていたり,緩んでいないか 確認し,しっかり接続する.
デバイスに付属しているサンプルプログラムを実行してみる. うまく録音できない場合には,カーネルモジュールのインストールが ちゃんとできているか,デバイスにアクセスできているかなどを確認する.
AudioStreamFromMic のパラメータを表 14.6 に示す. TD-BD-16AD-USB を用いる場合は,DEVICETYPE を TDBD16ADUSB に,DEVICE を SINICH にする.
パラメータ名 |
型 |
設定値 |
単位 |
説明 |
LENGTH |
subnet_param |
LENGTH |
[pt] |
FFT 長 |
ADVANCE |
subnet_param |
ADVANCE |
[pt] |
シフト長 |
CHANNEL_COUNT |
int |
16 |
[ch] |
録音チャネル数 |
SAMPLING_RATE |
subnet_param |
16000 |
[Hz] |
サンプリング周波数 |
DEVICETYPE |
string |
TDBD16ADUSB |
デバイスタイプ |
|
DEVICE |
string |
SINICH |
デバイス名 |
このデバイスは 16 ch 録音が可能である.このサンプルでは, ChannelSelector で,0〜7 ch を選択して録音している.
RecordLin ディレクトリにある demoRASP24_8ch.n を実行する. 録音が正常に終了すると,ALSA 準拠デバイスの時と同様に 8ch の音声ファイル rec_all_0.wav と,各チャンネル毎にファイルにした rec_each_0.wav, rec_each_1.wav,...,rec_each_7.wav というファイルが生成される.
うまく録音できないときは,次のチェックをする.
マイクロホンは接続されいるか.プラグが抜けていたり,緩んでい ないか確認し,しっかり接続する.
RASP の IP アドレスにネットワーク接続されているか? ping を使ってネットワーク接続を確認する.
AudioStreamFromMic に RASP の正しい IP アドレスを設定しているか?
AudioStreamFromMic のパラメータを表 14.7 に示す. RASP24 を用いる場合は,量子化ビット数を 16, 32 bit から選ぶことができる. DEVICETYPE の RASP24-16 は 16 bit で,RASP24-32 は 32 bit である (RASP24 はデバイス名).DEVICE には IP アドレスを指定する. RASP24 を選んだ場合,図 14.5 のように 追加のオプションとして GAIN という項目が増える.
パラメータ名 |
型 |
設定値 |
単位 |
説明 |
LENGTH |
subnet_param |
LENGTH |
[pt] |
FFT 長 |
ADVANCE |
subnet_param |
ADVANCE |
[pt] |
シフト長 |
CHANNEL_COUNT |
int |
16 |
[ch] |
録音チャネル数 |
SAMPLING_RATE |
subnet_param |
16000 |
[Hz] |
サンプリング周波数 |
DEVICETYPE |
string |
RASP24-16 |
デバイスタイプ |
|
GAIN |
string |
0dB |
ゲイン |
|
DEVICE |
string |
127.0.0.1 |
デバイス名 |
GAIN は,入力がクリッピングしない範囲で選ぶ.