次のページ
目次
その3: 2管声道モデルと帯域制限されたノイズ音源による「い」の生成のこころみ
2つの管(チューブ)をつなぎ合わせた模型による音声波形の生成のページで
は、声門の波形と2つの管(チューブ)のつなぎ合わせた
模型の生成では 2KHz以上の高い周波数の帯域が欠けているため、管の長さや断面積が「い」の特徴でも、「う」の音に近い音に聞こえてしまうと書いた。
そこで、欠けていた高い周波数帯域の音源として、口先をつぼめて息を強く吹いたときに乱流がおきて発生するノイズ音をこの模型に加えて「い」の音を生成し
てみよ
う。口先をつぼめて、強く息を吹きだすと、ふ~ とか す~ と言う音がする。雑音(ノイズ)のような音だ。狭い場所を、ある一定以上の速さで空気が流れ
ると、流れに乱れ(乱流)が生じて、それが、雑音(ノイズ)のもとになる。「い」の発声のときは、口先はつぼめぎみになる。
上の絵は、このイメージ図を示している。絵のまんなか下の赤い波形は、2つの管(チューブ)をつなぎあわせた模型の出口側、つまり、口先での体積速度を示
している。口先の体積速度が大きくなって ときどき臨界値を超えると緑色の波形のようなノイズ(雑音)が発生するようになる。(絵では、口先の体積速度の
山
のピーク付近で発生している。)そして、このノイズ(雑音)が音源として、喉の方に逆に注入されるかたちになる。結果として、絵の一番右側の紫のようなノ
イズが乗った波形になって出てくる。
2つの管(チューブ)をつなぎ合わせた模型に、更に、乱流に相当する帯域制限されたノイズ音源をつかって作った音を、参考に、 「い」の音(発音記号の/i/) .wavとしてリンクしておこう。
そして、下図が、2つの管をつなぎ合わせた模型に更に帯域制限されたノイズで生成した 何となく「い」の音に聞こえる波形の例である。青色が声門の波形を、赤色が音声に相当する音圧の波形をしめしている。
ここでは、約2KHz以上の帯域制限されたノイズの音源を使用している。 もともと足りないと分かっている帯域のノイズ源をつかっているので、ちょっと、フェアでないかもしれない。
また ノイズ源からみた周波数と位相の特性(ボード線図)を参考
にのせておこう。2管声道モデルの特性と大体同じである。
また、 生成した音圧のFFTによる周波数分析の結果も参考にのせておこう。
参考までに、ノイズを混合する声道モデルを計算するpythonプログラムをおいておきます。使い方は解凍した中にあるREADME.txtを見てください。
また、フランス発の数値演算ライブラリ
SCILABを使って、この擬似的に人の音声のような波形を生成するSCILABのサンプルプログラムを作ってみたので紹介しよう。
このサンプルプログラムは、以前に作成したサンプルプログラムを拡張したものであるので、
設定可能なパラメーターと補助的に使える関数の説明としては、こちらの2管声道モデルのサンプルプログラムの内容を参考にしていただきたい。
また、追加で拡張された設定可能なパラメーターの内容は
使用する声門モデルが、2管か3管かなど、波形を生成するための模型の種類を選択する。
ノイズの音源も必要な2管の場合、例えば、「い」の場合は、T_QTY=5を設定する。
T_QTY=5; // T_QTY
defines which Tubes Model is used.
// set T_QTY 2 or other than below values when Two Tubes
Model
// set T_QTY 3 when Three Tubes Model of serial type
// set T_QTY 4 when Three Tubes Model of "T" type
// set T_QTY 5 when Two Tubes Model with "rl" noise
ノイズ音源、つまり、帯域制限された乱流によるノイズ ( rl ノイズ )についての設定。
threshold_occur_minusと
threshold_occur_plusは乱流ノイズが発生するためのしきい値。
均された体積速度がこの値を超えると、乱流が発生し、帯域制限されたノイズが発生し、
mix_amplitudeの強さで、第2の管のエッジでの反射成分(-rl)に加算されて、音源として入力されるものと想定する。
均された体積速度が しきい値以内ならば、乱流とはならず、ノイズの発生は無い。
例えば、この図では、体積速度である黄色の波形を均した緑色の波形が図左側の
目盛りで1.1より大きな区間のみ、乱流が発生し帯域制限されたノイズが発生したとし、ノイズを反射成分に加算する。この模型では、ほぼ無損失の管をつ
かっているのでノイズの減
衰は遅く ひっぱられている。
安易に扱うため、これらは 実際の物理現象からかなり飛躍した内容になっている。
threshold_occur_minus = -1.1; // set threshold of Volume Velocity of
minus side when noise occurs
threshold_occur_plus = 1.1; // set threshold of Volume Velocity of plus
side when noise occurs
// two side threshold, minus side and plus side, is kunikuno-saku.
mix_amplitude=0.05; // set mix amplitude at "rl" point
帯域制限されたノイズは
ランダムノイズの波形に、
nstep_fir次の
帯域制限用の中心周波数 frq_center とバンド幅 freq_bandをもった
バンドパスフィルターをとうして求めている。
frq_center= 3000; // set center frequency of noise by unit is [Hz]
freq_band= 2000; // set frequency band of noise by unit is
[Hz]
nstep_fir=129; // set step number of band pass filter
of linear-phase FIR filter
// to transfer random noise to noise with limited frequency
band
乱流ノイズ(rl ノイズ)の発生の度合いを見積もるために、
第2の管の出口の体積速度の波形を均すためのローパスフィルターのカットオフ周波数。
fsm=1000; // set cut off frequency
of Low Pass Filter by unit is [Hz]
その他、追加で補助的につかえる関数は、
other functions
2管モデルで第2管の出口の反射の戻りを入力とした場合のボード線図(周波数と位相)を描く関数。
two_tubes_rl_noise_bode(1) // plot Two Tubes Model with "rl"
noise frequency-phase response
声門の波形と、第2管の出口の体積速度とそれをローパスフィルターで均したもの、音圧の波形を描く。
plot_yg_y2tm_y2tm_lpf_yo() // plot yg (Glottal Volume Velocity)
y2tm(Volume Velocity) y2tm_lpf(smoothed Volume Velocity) and y3out
(Sound Pressure)
第2管の出口の体積速度を均すために使用しているローパスフィルターのボード線図(周波数と位相)を描く関数。
lpf_bode() // plot low pass (smoothing)
filter's frequency-phase response
帯域制限されたノイズのFFTを計算して、ノイズのボード線図(周波数と位相)を描く。(窓はHANNING)
fft_plot_ran2( 1024 ) // FFT y_ran2(noise with limited
frequency band) and plot frequency-phase
No.7f 2007年12月7日
改版No.2 2019年2月21日