実際に声の波形を作って聞いてみる

前回の記事はこちら。


前回の2記事で音声の周波数毎の波の強さを求めるための計算を書いていましたが、今回は実際に音を作って聞いてみることで、どのような音の組み合わせになったらアイウエオと聞こえるのか、検証してみようと思います。

前回の記事で音の周波数を分析した時に、近似的に同じ周波数の波をサインカーブの組み合わせで近似できるようなプログラムを作っていました。できた波形をそのまま音声データにすると、何かおかしな音ができるところまでは前回の記事で書いていたと思います。

そこで今回は、分析して作ったグラフから、特徴的な周波数だけを取り出してみることにします。

「い」の音から、尖りの強い周波数だけを取り出すと、このようなグラフになります。

上のグラフから下のグラフへ。前回のプログラムでは$${a’=a cos b}$$と$${b’=a sin b}$$の形で出力しているので、各周波数のコサイン波の元の振幅を$${a’^2+b’^2}$$、時間軸方向の平行移動の距離(位相)を$${arctan(b’/a’)}$$でそれぞれ計算しています。 

下のグラフの通りに出力した音です。まだまだ荒いですが、少し「い」っぽく聞こえるようになっています。(イヤホン注意)

手順は次の通り。

①振幅の表から、振幅が左右の周波数よりも特に高い周波数をチェックして、その周波数の余弦波を同じくらいの大きさで取り出して、組み合わせてみる。

②125hz辺りより下や、1000hz辺りより上は、入れると耳触りが多少良くなったり悪くなったりするので、聞きながら入れたり入れなかったりする。1000hz辺りより上は、いくらか周波数にブレがあった方が、ざわざわとした音が聞きやすいかもしれないので、小さく幅のある周波数の振幅を入れて、調整してみる。

③聞き取れた音を聞き込みながら、各振幅の強さを少しずつ調整してみる。

僕の声を元に、アイウエオと言ってるように聞こえる周波数と振幅の組み合わせを、書き出してみたグラフ。
上から、「ア」「イ」「ウ」「エ」「オ」。

イヤホン、音量注意です⚠︎

あ→振幅(a) 8 周波数(f) 111、a 5.6 f 148、a 6.4 f 177、a 9.6 f 376、a 0.4 f 2117〜3997

い→a 50 f 132、 a 70 f 167、a 80 f 211、a 400 f 20、a 20 f 265、a 10 f 280、a 300 f 297、a 100 f 334

う→a 10 f 105、a 20 f 148、a 80 f 187、a 60 f 222、a 25 f 265、a 20 f 424、a 10 f 499

え→a 90 f 167、a 90 f 198、a 140 f 334、a 185 f 376

お→a 170 f 198、a 180 f 397 

とりあえず入れてみた振幅と周波数です。(なんとなくそれっぽく聞こえるかもしれない…くらい。全然似てない。。)とりあえず、母音によって、それっぽく聞こえる周波数と振幅の組み合わせがあるように思います。 

おまけ、全部の周波数の和ではなく、それぞれの周波数について、その周波数だけでフィッティングを行い、それぞれの振幅の大きさを比較してみる。

440hzの純音に対して100種類以上のさまざまな周波数の総和の誤差関数を取ってフィッティングを行ったグラフ(上)、同じ音に対して単一音のみを誤差関数にしてフィッティングをかけたグラフ(下)。上と下で明らかに振幅の数値が異なっていることがわかる。

誤差関数によってフィッティングする手法は、プログラムの組み方によって特定の周波数だけをパラメータに設定してフィッティングすることができます(特定の周波数のみに注目して学習するイメージ)。上のスクショは、最初に設定した周波数の全てを誤差関数のパラメータにした場合(上)と、一つの周波数のみに注目してフィッティングを行ったものから出力させる振幅を、全部の周波数で比較したもの(下)との比較です。
440hzより高い音ではフィッティングの数値が大きく変わることがわかります。

「あ」の裏声のフィッティングのグラフ。さまざまな周波数の総和の誤差関数を取ってフィッティングしたグラフ(上)、一つの周波数のみの誤差関数を取ってフィッティングしたグラフ(下)

それで、「あ」(裏声)のフィッティングのグラフも取ってみたのですが、これが案外シンプルに特徴が現れやすいグラフができていて気になるので、もう少し、こちらのグラフもチェックしてみようかと考えています。

この記事が気に入ったらサポートをしてみませんか?