単語音声の線形予測分析
1 単語音声の線形予測分析
以前,ファイルに保存した単語音声 「単体」,「短波」,「単価」 のうち、少なくとも一つの wav ファイルを lpfrmt というプログラム(コマンド)で分析します。 lpfrmt は ファイル内の全区間から Hamming 窓を使って分析フレームを逐次切り出して, 音声分析を行います。 default のフレーム長は 256 点,フレーム周期は 1/2 フレームですが, 今回はフレーム長を 512 点にするオプションを指定して分析します。 分析結果を格納するファイルの名前もオプションで指定します。 今回は,次の分析結果をファイルに格納することとします。 以下では file という表記を適当な名前に置き換えてください。
- テキスト形式の音声波形: file.txt
- 線形予測係数: file_a.txt
- ホルマント周波数: file_f.txt
- ホルマント帯域幅: file_b.txt
- FFT スペクトル: file_ffs.txt
- LPC スペクトル: file_lps.txt
そのために,下記をコマンドラインに入力し,実行してください。
lpfrmt -s 16000 -n 512 -w file.txt -a file_a.txt -f file_f.txt -b file_b.txt -F file_ffs.txt -S file_lps.txt file.wav
2 分析結果の観察
分析が終了したら,まず,分析結果の入ったファイルが作成されたことを dir コマンド等で確認してください。
2.1 線形予測係数
線形予測係数の入ったファイル file_a.txt の中身を閲覧してみましょう。
分析結果の入ったファイルは全てテキストファイルですから,コマンドラインから more コマンド等で中身を見ることができます。 エディタで開くことも可能ですが,改行コードの関係上,メモ帳では表示が乱れます。 terapad 等で開いてみるとよいでしょう。
2.2 ホルマントとスペクトル
続いて,
wish frmtedit.tcl
を実行して分析結果を観察します。
frmtedit という標題のウィンドウが開いたら, まず,Formant Frequency (ホルマント周波数)と Formant Bandwidth (ホルマント帯域幅)の両欄に, 当該ファイルの名前(file_f.txt, file_b.txt) を入力してから (Browse ボタンを押して,ファイルを選択してもよい) Read ボタンを押してください。
すると,両ファイルの内容が個別のウィンドウ内に表示されます。 frmtedit での作業中はこれらのウィンドウを消さないでください。 操作の邪魔になるようであれば,ウィンドウを最小化してください。
その後,frmtedit ウィンドウ内の Waveform ボタンを押して音声波形ファイル (file.txt) を開きます。
さらに Spectrum ボタンを押して,LPC スペクトルと FFT スペクトルの入ったファイル (file_lps.txt, file_ffs.txt) を順に開いてみましょう。 時間(分析フレーム)と共に変化するスペクトルの様子を観察できます。
frmtedit を終了するには,frmtedit ウィンドウの Exit ボタンを押します。
3 GNUPLOT の使い方(参考)
GNUPLOTというアプリケーションを使うと,テキスト形式の数値データをグラフで表示できます。
GNUPLOT を起動するにはコマンド
gnuplot
を実行します。 なお,Windows では
wgnuplot
を実行したほうがよいかもしれません。 または,コマンドを使わずに,スタートボタン等からマウスで起動することもできます。
さて, GNUPLOT では,グラフ表示の形式を指定してから plot という GNUPLOT のコマンドを打つことでグラフを描画します。 例えば,母音の波形が file.txt に入っているとき,これを折れ線グラフで描画するには,GNUPLOT を起動してから,
set style data lines plot "file.txt"
とします。
x 軸 (波形データでは時間軸) の範囲をを 0 から 100 msec にして,波形を拡大表示するには,
plot [0:100] "file.txt"
とします。または,
set xrange [0:100] replot
でも構いません。 一度,set コマンドを使って設定を行うと,設定を変更しない限り, その設定値は以降の plot コマンド等でのグラフ表示に反映されます。 replot は,一番最近に行った plot コマンドを再実行するコマンドです。
gnuplot の終了は
quit
です。