フーリエ級数プログラミングと音声認識の資料

音声情報処理 第9回
1.フーリエ級数展開
2.冬休みの宿題
8.2 フーリエ級数展開
フーリエ級数展開

f (t )  b0   (bn cos n0t  an sin n0t )
n 1

 b0  
n 1
bn
an  bn sin( n0t  tan
)
an
2
2
2
ただし,0  2f 0 
T
展開したい元の周期信号の周期
1
8.2 フーリエ級数展開
フーリエ級数展開の係数
直流分:
1 T
b0   f (t ) dt
T 0
cos 波の振幅:
2 T
2 T2
bn   f (t ) cos n0t dt  
f (t ) cos n0t dt
T 0
T T 2
sin 波の振幅:
2 T
2 T2
an   f (t ) sin n0t dt  
f (t ) sin n0t dt
T 0
T T 2
鋸波のフーリエ級数展開:1次まで
1.5
nokogiri(x)
g1(x)
1
0.5
0
-0.5
-1
-1.5
-6
-4
-2
0
2
4
6
鋸波のフーリエ級数展開:2次まで
1.5
nokogiri(x)
g2(x)
1
0.5
0
-0.5
-1
-1.5
-6
-4
-2
0
2
4
6
鋸波のフーリエ級数展開:3次まで
1.5
nokogiri(x)
g3(x)
1
0.5
0
-0.5
-1
-1.5
-6
-4
-2
0
2
4
6
鋸波のフーリエ級数展開:4次まで
1.5
nokogiri(x)
g4(x)
1
0.5
0
-0.5
-1
-1.5
-6
-4
-2
0
2
4
6
鋸波のフーリエ級数展開:5次まで
1.5
nokogiri(x)
g5(x)
1
0.5
0
-0.5
-1
-1.5
-6
-4
-2
0
2
4
6
鋸波のフーリエ級数展開:6次まで
1.5
nokogiri(x)
g6(x)
1
0.5
0
-0.5
-1
-1.5
-6
-4
-2
0
2
4
6
8.1 周期波形とその周波数成分
スペクトル図(正規化振幅スペクトル)
1.0
An/A1
0.8
0.6
0.4
0.2
0.0
0
5
10
15
n
図1 のこぎり波のスペクトル図
20
8.1 周期波形とその周波数成分
スペクトル図 TIPS
1.0
n=0には直流成分を書く
An/A1
0.8
0.6
0.4
縦軸はA1で正規化しない
のが一般的
0.2
横軸はnでなく周波数とする
のが一般的
0.0
縦軸は対数パワーを用いる
0
5
10
のが一般的
15
n
log Powern  10
log( an  bn )
図1 のこぎり波のスペクトル図
2
2
20
アナログ信号の定積分
T
a   f (t )dt
0
この部分の面積が a になる.
f(t)
0
T
ディジタル信号の定積分(1/3)
f (t )  f (i  t )
ただし i は整数,t はサンプリング周期
f(t)
0
T
ディジタル信号の定積分(2/3)
 f (i  t )
f (t )
T
a   f (t ) dt  a 
0
i t T
 ( f (i  t )  t )
i 0
f(t)
0
T
ディジタル信号の定積分(3/3)
 f (i  t )
f (t )
T
a   f (t ) dt  a 
it T
0
 ( f (n  t )  t )
n 0
ここで,
f [i ]  f (i  t ),
M を i  t  T を満足する最大のi とすれば,
a  0;
for (i  0; i  M ; i  )
a   f [i ] * dt ;
で a を計算できる.
課題:フーリエ級数プログラミング
 提出物:印刷して提出
 レポート(波形図や考察)
 プログラム
 締め切り:12月22日(火)の授業の時に提出
1.Wavesurferで録音
 「おー」を1秒程度録音する。
 サンプリング周波数: 16kHz
 量子化ビット数: 16bit
 チャネル: モノラル(=1ch)
 [Transform]⇒[Normalize…]⇒100%



振幅の最大値が32767になるよう拡大される。
保存形式: MS-Wav
ファイル名: 08O.wav
2. 1ピッチ分のデータを切り出す
 似た形をした波形が繰り返しているので、
一つ分を選択し、Save Selection… する
ファイル名: “08O1.wav”
3.SOXでテキストファイルに変換
 sox 08O1.wav
08O1.dat
1行目を削除
ち
ょ
っ
と
デ
ー
タ
が
多
す
ぎ
る
の
で
エ
デ
ィ
タ
で
削
る
4.GUNUPLOTで描画
0.25
'D:\EC\o1.dat'
0.2
0.15
0.1
0.05
0
-0.05
-0.1
-0.15
-0.2
-0.25
0
0.001
0.002
0.003
0.004
0.005
0.006
ち
ょ
っ
と
デ
ー
タ
が
多
す
ぎ
る
の
で
エ
デ
ィ
タ
で
削
る
4.GUNUPLOTで描画
0.25
'D:\EC\o1.dat'
0.2
0.15
0.1
0.05
0
-0.05
-0.1
-0.15
-0.2
-0.25
0
0.001
0.002
0.003
0.004
0.005
0.006
5.ピッチ周期・ピッチ周波数
周期 : 5.625ms
周波数: 177.8Hz
プログラムには角周波数
が必要です!!
0.0
0.1
0.2
0.3
6.同じ周期の正弦波をつくる
 Cでプログラムを書きましょう!!
 GNUPLOT用のフォーマットは、
“08O1.dat” と同じようにすればよい。
7.GUNPLOTで描画
0.25
'D:\EC\o1.dat'
0.25*sin(2*pi*177.8*x)
0.2
0.15
0.1
0.05
0
-0.05
-0.1
-0.15
-0.2
-0.25
0
0.001
0.002
0.003
0.004
0.005
0.006
8.同じ周期の正弦波をつくる
 Cでプログラムを作成
 振幅は32000程度
 SOXを用いてMS-Wavファイルに変換
 Wavesurferで再生し、音の高さに着目し、
元の音声と聞き比べる
10.フーリエ級数プログラミング
① 自分で録音した「おー」のディジタル信号
から1周期分を切り出しフーリエ級数展開し,
対数パワースペクトル図を作成せよ.
横軸:周波数
縦軸:対数パワー
レポートには,必要に応じてプログラムの核となる部分を
添付してください.(以下同様)
11.フーリエ合成
② n=2, 3, ・・・ と,nを順に大きくしていった
場合のグラフを描画し,元の波形に近づ
く(もしくはずれていく)様子を,①の結果
とあわせ考察せよ(レポートには,最低限
n=2, ほとんど一緒になった n,n=N/2,
n=N, n=2Nのグラフを添付すること)
③ nが?より大きくなると,元の波形とずれ
が大きくなる.この点についてナイキスト
周波数を踏まえ考察せよ.
12.フーリエ合成(発展)
④ t を1周期分だけでなく、2秒の音声合成
し,wavesurferで聞いてみよう
⑤ プログラムを少しだけ修正して ド・レ・ミ・
ファの音程(各2秒)で音声合成し,
wavesurferピッチを確認してみよう
⑥ ⑤の方法を利用して,より自然な音声を
合成してみよう.
注)⑤⑥についてはレポート中でプログラム
の修正部分を示してください.
冬休みの宿題(1/2)
1. JULIUS(ディクテーションキット)をダウンロード
して,ディクテーションを実行してみよう
http://julius.sourceforge.jp/
レポート課題:
① 立ち上げ時に,出てくるメッセージの意味を調査
しなさい。
② 新聞やWebニュースから適当な10文を選んで
入力(発声)して,単語を単位とした場合の,置
換誤り率,挿入誤り率,脱落誤り率を求めよ。
C:\Users\kuroiwa\Desktop\dictation-kit-v3.0-win>.\bin\julius.exe -C fast.jconf
include config: fast.jconf
Warning: thread not supported, input may be corrupted on slow machines
Reading in HMM definition...(binary)...finished
defined HMMs: 7946
logical names: 21424 in HMMList
done
Making pseudo bi/mono-phone for IW-triphone...10 added as logical...done
Reading in dictionary...
60250 words...done
Reading in word n-gram...1-gram.....2-gram......3-gram..indexing...done
Mapping dictonary words to n-gram entries...done
Building HMM lexicon tree.........464019+19123=483142 nodes
1-gram factoring values has been pre-computed
done
Generating addlog table...1953 kb...done
------------- System Info begin ------------Julius rev.3.4.2-win32 (fast)
Files:
hmmfilename=model/phone_m/hmmdefs_ptm_gid.binhmm
hmmmapfilename=model/phone_m/logicalTri
progout interval = 300 msec
冬休みの宿題(2/2)
2. JULIAN(文法認識キット)をダウンロードして,
正規文法による認識システムを作成しなさい

単語数100単語以上、3単語以上の文も受理できる
こと
レポート課題:
①単語辞書ファイル、文法ファイルを印刷したもの
②文法が受理できる、適当な10文を入力して認識率を
求めると共に、結果に関する考察をせよ。
③文法が受理できない、適当な5文を入力した場合の
入力音声及び認識結果を示すと共に、結果に関する
考察をせよ。