はつねむさんぽのパンくずたち

エンジニアになる人生で通った道のあしあと

自分の声を解析した

Java環境構築 on Mac

今日から本格的に実験が始まった。
謎のこだわりでVSCodeJava書こうとしたら、
環境構築にすんごい手間取ってしまった。

JDK11はJavaFXが含まれていないみたい。仕方ないからOpenJFX入れた。
コンパイルとビルドする時に、いちいちオプション付けるのめんどくさいな。
設定ファイルとか書けばいいのか?
そもそもバージョン落とした方がいい説。

 

音声処理

自分の声の音量(dB)と音高求めた。
まずこれが波形。「あ・い・う・え・お」と言っている。
8秒以降は雑音だ。(トリミングしろよ。。。)

f:id:hatsunem:20181130214629p:plain
波形(横軸:時間[秒]、縦軸:振幅)
 

フレームに分割して各フレームの音量を求めた。
音量(dB)は、振幅の2乗の平均の平方根の常用対数をとって20かけたものである。
つまり、20\log{10}\sqrt{\frac{1}{N}\sum_{t=0}^{N-1} x_t}
ルートの部分をRMS(root-mean-square)という。

f:id:hatsunem:20181130231047p:plain
音量(横軸:時間[秒]、縦軸:音量[dB])
 

次に自己相関を利用して音高を求めた。
自己相関は、ある信号とその信号を時間方向にシフトした信号との類似度を表す。
自己相関が2番目に大きい時のシフト時間の逆数が基本周波数となる。

f:id:hatsunem:20181130235933p:plain
音高(横軸:時間[秒]、縦軸:基本周波数)

雑音の部分の音高が様々で、グラフがごちゃごちゃしてしまった。
振幅で制限をかけて、ある程度小さいものは除去すると良さそう。