Pythonの音声解析でフォルマントを抽出してみた

  • このエントリーをはてなブックマークに追加

STFTを覚えたら色々な音の特徴を見てみたくなります。ここでは「人の声」をスペクトログラムにかけた時にフォルマントが抽出できるかどうかを確かめます。

こんにちは。wat(@watlablog)です。
音の解析は見た目も面白いですね!今回は僕の声をスペクトログラム表示させ、フォルマントを観察します

人の声を特徴付けるのはフォルマントがあるから

人の声ってどういう仕組みで鳴っているの?

人から発生する音声、発声は人の声帯から発せられ、喉や口腔等の様々な管路を通ってきます。

この管路のことを声道と呼び声道の中では声帯からの振動によって発生した音が反射を繰り返し、共鳴します。

最終的に口から出る時に人間らしいになるそうです。

僕はこの分野に詳しくはないので、詳細は富士通研究所さんの「人の声の出る仕組み」にわかりやすい絵が掲載されていましたので、そちらを参照下さい。

僕が理解した内容では、声帯で発生した振動が「基本振動」となって、空間の大きさや振動の仕方に個人差が大きい声道を通っていく過程で声が形成されるために、声紋と呼ばれる個人を識別可能なまでに複雑な音声になっていくものと思います。

空間に音が入射すると、気柱共鳴が発生しますもんね。高校物理で習った気がします。

そういった人の音声学の分野では、しばしばフォルマントと呼ばれる要素が研究されているそうです。

フォルマントとは?

フォルマントとは、僕が説明するには少しおこがましいですが、人が声を発声した時の基本振動成分を第1フォルマント、次の振動成分を第2フォルマント…と呼ぶようで、それぞれのピークに付けられた名前のようです。

音声学初心者の僕が理解した図は以下です(間違ってたらごめんなさい!)。

各フォルマントはそのピークが時間によって遷移する(つまりふらふらする)とのことなので、フォルマントの解析にはスペクトログラムがよく用いられるとのこと。

このピークの間隔や強さ、時間変動の仕方が人によって千差万別であるため、声紋鑑定ができるらしいです。

なんか難しそうだな!でも面白そうだぞ!

人(僕)の声のスペクトログラムでフォルマントを見てみる

音声解析方法

音声解析方法は以前「Pythonで音のSTFT計算を自作!スペクトログラム表示する方法」で作ってみたPythonコードを使います。詳細な手順と全コードはこの記事をご覧下さい。

音の取り込み等は「Pythonでピアノ音楽のスペクトログラムを作ってみた」と同じでiPhone7で録音しています。何だかんだiPhoneは音質良いです。

「あいうえお」のフォルマント抽出!

これが「あいうえお」と僕が発生したスペクトログラムです!

音声は恥ずかしいので秘密です!

「あ」は第15フォルマントまで見えますね。「い」は第6くらいまででしょうか?第4フォルマントあたりから元気が無いですね。

「ぱぴぷぺぽ」のフォルマント抽出!

続いて「ぱぴぷぺぽ」です!

破裂音というだけあって、最初のインパルスがすごいですね!

でも「あいうえお」と比べると、何となく横線が揺らめいている所とか、強弱の傾向がそっくりです。これが母音の正体なのでしょうか!?

「ABCD」のフォルマント抽出!

最後は「ABCD」です!

発音時、「エー、ビー、シー」では無く、どちらかというとちょっと気取って、「エィ、ビィ、スィ…」と言っていました。なのでちょっと右下下がりです。特にCの部分の手前に歯の間から漏れる擦過音が出てるのがわかります。

Bは破裂音に近いインパルスです。

面白いな!

まとめ

このページでは発声やフォルマントについて軽く触れ、実際の発音をスペクトログラム表示し、それぞれの特徴を見てみました。

はい、今回もやってみた回です。音声学を一回もやったことない僕からしたら結構面白かったですね。もしかしたらスペクトログラムを画像的に扱ってマシンラーニングとか使って音声認識とかやられているんですかね?

そうなるとちょっと画像処理とかにも手を出したくなってきました。

今回もスペクトログラムで遊んでみました。カラーマップで人の声が可視化されると、特徴が人によって違う様が観察できて面白そうですね!フ〇ーザ様の声とかも見たいと思ってしまいました。

Twitterでも関連情報をつぶやいているので、wat(@watlablog)のフォローお待ちしています!

SNSでもご購読できます。

コメントを残す

*