単語音声の線形予測分析

目次

1 単語音声の線形予測分析

以前,ファイルに保存した単語音声 「単体」,「短波」,「単価」 のうち、少なくとも一つの wav ファイルを lpfrmt というプログラム(コマンド)で分析します。 lpfrmt は ファイル内の全区間から Hamming 窓を使って分析フレームを逐次切り出して, 音声分析を行います。 default のフレーム長は 256 点,フレーム周期は 1/2 フレームですが, 今回はフレーム長を 512 点にするオプションを指定して分析します。 分析結果を格納するファイルの名前もオプションで指定します。 今回は,次の分析結果をファイルに格納することとします。 以下では file という表記を適当な名前に置き換えてください。

  1. テキスト形式の音声波形: file.txt
  2. 線形予測係数: file_a.txt
  3. ホルマント周波数: file_f.txt
  4. ホルマント帯域幅: file_b.txt
  5. FFT スペクトル: file_ffs.txt
  6. 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

です。

日付: 2017/6/22 更新:2017/6/29

著者: Hideaki Konno

Validate