実際に声の波形を作って聞いてみる
前回の記事はこちら。
前回の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より高い音ではフィッティングの数値が大きく変わることがわかります。
それで、「あ」(裏声)のフィッティングのグラフも取ってみたのですが、これが案外シンプルに特徴が現れやすいグラフができていて気になるので、もう少し、こちらのグラフもチェックしてみようかと考えています。