adintool — 音声波形データの記録・分割・送信・受信ツール
adintool
{-in inputdev
} {-out outputdev
} [options
...]
adintool は,音声波形データ中の音声区間の検出および記録を連続的に行 うツールです.入力音声に対して零交差数と振幅レベルに基づく音声区間検出を逐次行い,音声区間部分を連続出力します.
adintool は adinrec の高機能版です.音声データの入力元として,マイク
入力・ 音声波形ファイル・標準入力・ネットワーク入力(adinnet サーバー
モード)が選択できます.Julius の -input
オプションも使用可能で,プラグイン入力も選択できます.
出力先として,音声波形ファイル・標準出力・ネットワーク出力(adinnet クライアントモード)が選択できます.特にネットワーク出力(adinnet クライアントモード)では, julius へネットワーク経由で音声を送信して音声認識させることができます.
入力音声は音声区間ごとに自動分割され,逐次出力されます.音声区間の切り出しには adinrec と同じ,一定時間内の零交差数とパワー(振幅レベル) のしきい値を用います.音声区間開始と同時に音声出力が開始されます.出力としてファイル出力を選んだ場合は,連番ファイル名で検出された区間ごとに保存します.
サンプリング周波数は任意に設定可能です.録音形式は 16bit, 1 channel で,書き出されるファイル形式は Microsoft WAV 形式です. 既に同じ名前のファイルが存在する場合は上書きされます.
Julius の全てのオプションが指定可能である.指定されたもののうち, 音声入力に関係するオプションのみ扱われる.以下に,adintool のオプション,および有効な Julius オプションを解説する.
-freq
Hz
音声のサンプリング周波数 (Hz) を指定する.(default: 16,000)
-in
inputdev
音声を読み込む入力デバイスを指定する."mic" でマイク入力,
"file" でファイル入力, "stdin" で標準入力から音声を読み込む.
ファイル入力の場合,ファイル名は起動後に出てくるプロンプトに対
して指定する.また,"adinnet" で adintool は adinnet サーバー
となり,adinnet クライアントから音声データを tcp/ip 経由で
受け取る.ポート番号は 5530 である("-inport
"
で変更可能).
入力デバイスは,そのほか Julius の "-input" オプションでも指定可能 である.その場合,プラグインからの入力も可能である.
-out
outputdev
音声を出力するデバイスを指定する."file" でファイル出力,
stdout で標準出力へ出力する.ファイルの場合,出力ファイル名は
オプション "-filename
" で与える.出力ファイル
形式は 16bit WAV 形式である.
また,"adinnet" で adintool は adinnet クライアント
となり,adinnet サーバへ取り込んだ音声データを tcp/ip 経由で
送信できる.送信先ホストは "-server
" で指定する.
ポート番号は 5530 である("-port
"
で変更可能).
-inport
num
入力が adinnet の場合 (-in adinnet),接続を受けるポート番号 を指定する.指定しない場合のデフォルトは 5530 である.
-server
[host]
[,host...]
出力が adinnet の場合 (-out adinnet),送信先のサーバ名を指定する. 複数ある場合は,カンマで区切って指定する.
-port
[num]
[,num...]
出力が adinnet の場合 (-out adinnet),送信先の各サーバのポート番号
を指定する.指定しない場合のデフォルトは 5530 である.
-server
で複数のサーバを指定している場合,
全てについて明示的にポート番号を指定する必要がある.
-filename
file
ファイル出力 (-out file
) 時,出力ファイル名を
与える.デフォルトでは,検出された音声区間検出ごとに,
"file.0000.wav
" ,
"file.0001.wav
" ... のように区間ごとに連番で
記録される.番号の初期値は 0 である(-startid
で
変更可能).なお,オプション -oneshot
指定時は
最初の区間だけが "file
" の名前で保存される.
-startid
number
ファイル出力時,記録を開始する連番番号の初期値を指定する.( デフォルト:0)
-oneshot
最初の音声区間が終了したら終了する.
-nosegment
入力音声の音声区間検出(無音による区切りと無音区間のスキップ)を 行わない.
-raw
RAWファイル形式で出力する.
-autopause
出力が adinnet の場合(-out adinnet),音声区間が終了するたび に入力停止・動作停止状態に移行する.出力先の adinnet サーバか ら動作再開信号がくると音声入力を再開する.
-loosesync
出力が adinnet (-out adinnet)で複数の出力先サーバへ出力している 場合,動作停止状態から動作再開信号によって動作を再開する際,adintool は すべてのサーバから動作再開信号を受けるまで動作を再開しない. このオプションを指定すると,少なくとも1つのサーバから再開信号 がくれば動作を再開するようになる.
-rewind
msec
入力がマイクのとき,停止状態から動作を再開するとき,停止中から 持続して音声入力中だった場合,指定されたミリ秒分だけさかのぼって 録音を開始する.
-input
{mic|rawfile|adinnet|stdin|netaudio|esd|alsa|oss}
音声入力ソースを選択する."-in" の代わりにこちらを使うことも できる(最後に指定したほうが優先される).esd やプラグイン入力が 指定可能である.
-lv
thres
振幅レベルのしきい値.値は 0 から 32767 の範囲で指定する. (default: 2000)
-zc
thres
零交差数のしきい値.値は1秒あたりの交差数で指定する. (default: 60)
-headmargin
msec
音声区間開始部のマージン.単位はミリ秒. (default: 300)
-tailmargin
msec
音声区間終了部のマージン.単位はミリ秒. (default: 400)
-zmean
入力音声ストリームに対して直流成分除去を行う.全ての音声処理の の前段として処理される.
-smpFreq
Hz
音声のサンプリング周波数 (Hz) を指定する.(default: 16,000)
-48
48kHzで入力を行い,16kHzにダウンサンプリングする. これは 16kHz のモデルを使用しているときのみ有効である. ダウンダンプリングの内部機能は sptk から 移植された. (Rev. 4.0)
-NA
devicename
DatLink サーバのデバイス名 (-input netaudio
).
-adport
port_number
-input adinnet
使用時,接続を受け付ける
adinnet のボート番号を指定する.(default: 5530)
-nostrip
音声取り込み時,デバイスやファイルによっては,音声波形中に振幅 が "0" となるフレームが存在することがある.Julius は通常,音声 入力に含まれるそのようなフレームを除去する.この零サンプル除去が うまく動かない場合,このオプションを指定することで自動消去を 無効化することができる.
-C
jconffile
jconf設定ファイルを読み込む.ファイルの内容がこの場所に展開される.
-plugindir
dirlist
プラグインを読み込むディレクトリを指定する.複数の場合は コロンで区切って並べて指定する.
ALSADEV
(マイク入力で alsa デバイス使用時) 録音デバイス名を指定する.
指定がない場合は "default
".
AUDIODEV
(マイク入力で oss デバイス使用時) 録音デバイス名を指定する.
指定がない場合は "/dev/dsp
".
PORTAUDIO_DEV
(portaudio V19 使用時) 録音デバイス名を指定する. 具体的な指定方法は adinrec の初期化時にログに出力されるので参照のこと.
LATENCY_MSEC
Linux (alsa/oss) および Windows で,マイク入力時の遅延時間をミ リ秒単位で指定する.短い値を設定することで入力遅延を小さくでき るが,CPU の負荷が大きくなり,また環境によってはプロセスやOSの 挙動が不安定になることがある.最適な値はOS やデバイスに大きく 依存する.デフォルト値は動作環境に依存する.
マイクからの音声入力を,発話ごとに "data.0000.wav" から順に記録する:
%
adintool -in mic -out file -filename data
巨大な収録音声ファイル "foobar.raw" を,音声区間ごとに "foobar.1500.wav" "foobar.1501.wav" ... に分割する:
%
adintool -in file -out file -filename foobar -startid 1500%
enter filename->foobar.raw
ネットワーク経由で音声ファイルを転送する(区間検出なし):
(sender)%
adintool -in file -out adinnet -serverreceiver_hostname
-nosegment (receiver)%
adintool -in adinnet -out file -nosegment
マイクからの入力音声を Julius へ送信して認識:
(sender)%
adintool -in mic -out adinnet -serverreceiver_hostname
(receiver)%
julius -C ... -input adinnet