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

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

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

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

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

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

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

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

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

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

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

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

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

フォルマントとは?

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

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

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

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

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

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

Advertisements

音声解析方法

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

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

「あいうえお」のスペクトログラム

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

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

フォルマントは全体的に緩やかに強くなっている部分を指します(「あ」で言えば1kHzくらい)。梯子のように見えるのは基本周波数の倍数成分です。

「ぱぴぷぺぽ」のスペクトログラム

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

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

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

「ABCD」のスペクトログラム

最後は「ABCD」です!

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

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

面白いな!

まとめ

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

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

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

今回もスペクトログラムで遊んでみました。カラーマップで人の声が可視化されると、特徴が人によって違う様が観察できて面白そうですね!
Twitterでも関連情報をつぶやいているので、wat(@watlablog)のフォローお待ちしています!

SNSでもご購読できます。

コメントを残す

*