音声認識特論 ( 第 7 回目 )
2017 年 11 月 17 日 西宏之
( ア )
拡大
有声音 声帯の振動数
( ア ) らし さ ケプストラ
ム
この間
くり返し周波数 男: 70~150Hz 女: 150~400Hz
ローパスフィ ルタで高周波成
分をカット
成分 2乗
40個程度の棒グラフ状のデータ
( 40 次元のフィルターバン ク)
音の工学の 基礎の基礎
電圧
一つ一つの大きさを で表す
t
f (t)xi
処理の流れ
① 学習:5つ ( あ,い,う,え,お ) の標 準パターンを作成 ( 各々の )
② 認識1:未知の音 と各標準パ ターンとの距離を計算する
③ 認識2:距離の最も小さかった標準パ ターンのカテゴリーを認識結果として出 力する.
x
iy
i① 学習
• 周波数特性 ( フィルターバンク出力 )
• 「ア」「イ」「ウ」「エ」「オ」の各々 の wav ファイルを読込み,各周波数帯ご との成分を出力する
• 出力した周波数特性はファイル番号を付 したファイル名で格納する.
• 使うプログラムは「 FFT-filter-bank.cpp 」
• 一つのフォルダーに,プログラム,音声 ファイル,バッチファイルを置く
FFT-filter-bank.cpp の』使い方
• 沢山のオプションあり
• FFT-filter-bank filename samples_in_window samples_shift bank_number
• 1 2 3 4
• 実際のプログラム起動はバッチファイルを用いるとよい.
• バッチファイルとは?→拡張子は 「 .bat 」
• 例えば...
• for %%A IN (*wav) DO FFT-filter-bank %%a 512 256 40
• ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓↓ ↓↓
↓ ↓↓↓
• 「拡張子 wav を含むすべてのファイルをひとつずつ読み込み, DO 以下のプログラムを起動する」という意味のスクリプトである.
( ア )
拡大
有声音 声帯の振動数
( ア ) らし さ ケプストラ
ム
この間
くり返し周波数 男: 70~150Hz 女: 150~400Hz
ローパスフィ ルタで高周波成
分をカット
成分 2乗
40個程度の棒グラフ状のデータ
( 40 次元のフィルターバン ク)
音の工学の 基礎の基礎
電圧
一つ一つの大きさを で表す
t
f (t)xi
音声認識特論レポート 1 につ
いて
• 次のような、母音認識プログラムを作成 せよ
• 「ア」、「イ」、「ウ」、「エ」、
「オ」の5つの母音をあらかじめ録音 し、ケプストラムを求めた結果が下の5 つのテキストファイルに納めてある
– 1.txt : 「ア」 – 2.txt : 「イ」 – 3.txt : 「ウ」 – 4.txt : 「エ」 – 5.txt : 「オ」
• ファイルの形式はいずれもテキスト形式で、 40 個の実数データ (float) が入っている。データと データの間は半角スペースで区切られている。
• 認識したい未知の音声のケプストラムデータ は、 rec.txt に上記と同じ形式で書き込まれ ている。
• 1.txt ~ 5.txt と rec.txt の計6つのファイ ルを読み込み、 rec.txt が「ア」~「オ」のいず れの母音であるかを認識するプログラムを作成 せよ。
• レポート用紙の表面にソースリストを、裏面に 実行結果を印刷して提出せよ。
• なお、番号氏名は、ソースリスト中にコメント 文で記入せよ。
〆切: 12 月 1 日 ( 金 ) の 17 時ま
で
• 標準パターンが5つでなく、 100 個くら いあっても構わないようにせよ。
• つまり「数字 .txt 」というファイル名をプ ログラムで合成し,その名前でファイル を開いて読込むようにすればよい.
• 数値を文字列に変換するには関数「 itoa
() 」が使える.使い方はネットか教科書で 調べること.
② 距離値の計算
• 2つのファイルからフィルターバンク データを読みだしてその距離値を計算す るプログラムを考えよう
プログラムの骨格
• FFT フィルターバンクのプログラムをひ な形としてよい.
• 次の内容をそのまま転用できる.
– ヘッダーファイルの include – 関数のプロトタイプ宣言
– wav ヘッダ構造体の宣言 – 主な,ローカル変数の宣言
– いらない物を消していけばよい – 消す方が多いかも