やぎの日記

オタクの掃き溜め

Re:オタク記事 夏コミ19 

初めに

  こんばんは。最近のwsプレイヤーはnoteに記事を乗っけるのがブームになっていて言語化の大切さが身に染みてきました。いい文化ですね。僕も何かしら書こうと思ったのですが、なんせ今期0地区ですから紙のことで書くことがありません。ということで、半年前に所属サークルの夏コミ本に寄稿した文章をここにも投下しようと思います。
 今回のテーマは、駒形友梨さんのvocal only音源を使って何か遊べないか、というテーマで書かせていただきました。また、この文章は血迷って駒形友梨誕生日イベの日に誕生日プレゼントと共に本人に直接渡しております。案の定、周りのオタクからキモイと連発されて結構ショックを受けておりました。

こんな感じでプレゼントの紙袋の中にぶち込みました。

f:id:yagi-uec17:20191206011543p:plain

ということで以下にそのレポートを記します。

1.目的

 音声解析されるために産まれたvocal only音源を用い、駒形友梨さんの歌声を音声解析し、美しいと感じる理由を考察する。

2.原理

2-1.離散フーリエ変換(DFT)の定義

 N個の離散時間信号サンプル値x_nの離散フーリエ変換およびその逆変換は以下のように定義される。 $$ X_n = \sum_{n=0}^{N-1} x_n e^{-j\frac{2πnk}{N}} $$

$$ X_n =\frac{1}{N}\sum_{n=0}^{N-1} X_n e^{-j\frac{2πnk}{N}} $$ この式を用い、様々な正弦波のDFT の結果を確認する。

2-2.窓関数

 DTFで周波数の分析をする時、信号周期の整数倍で切り抜く必要がある。しかし、周期が分かっていないと不連続になってしまい正しい分析ができない。そこで波形の切り出し区間の両端を徐々に0に近づく窓関数を用いることで正しい分析を行うことができる。音声分析においてよく使われる窓関数にハミング(Hamming)窓が存在する。以下に式を示す。ただし、\(\boldsymbol{a=0.46164}\)である。 $$ w(n) = (1-a) - a\cos(\frac{2πn}{N}) $$ この式を用い、窓関数をかけた状態でのDTFの結果を確認する。

2-3.対数パワースペクトル

 一般的にスペクトルは対数すなわちdBスケールで表示される。\(\boldsymbol{X_k}\)の実部\(\boldsymbol{A_k}\)を、虚部を\(\boldsymbol{B_k}\)とすると対数パワースペクトル \(\boldsymbol{S_k}\)は以下のように示される。 ただし、底を10とする。

$$ \begin{align} S_k&=20\log\sqrt{A_k^{2}+B_k^{2}}\\ &=10\log(A_k^{2}+B_k^{2}) [dB] \end{align} $$ この式を用い、音声データのスペクトル解析を行う。[参1] 意味が分からない式は置いといて、つまるところ、横軸が時間であったのに対し横軸を周波数にして色々観察することをこの実験で行う、ということだ。

2-4.倍音

 美しく聞こえる音の特徴として倍音というものがある。基本周波数のスペクトルが大きければ大きいほど、その間の非整数倍の周波数が少ないほど美しく心地よく聴こえると定義される[参2]。800Hzくらいが音の核となる部分であり、8kHzくらいが綺麗な高音を作っている部分で10kHzくらいが少しキンキンすると感じるような高音を作っている部分である。

2-5.ハイパスフィルタとローパスフィルタ

 表示したパワースペクトルのある一定の周波数以下の値や以上の値を低くし、表示させなくさせるものである。環境音を消す時や、特定の周波数を取り出す際に用いる。

3.実験方法

 Audacityというフリー音声解析ソフト[参3]を用いる。プログラミングはしたくないので諦めてフリーソフトに頼ります。今回は、アクアリウム[参4]ラスサビの「わたしね」の「わ」と「た」の上がる部分を周波数表示する。その後ハミング窓を用いてスペクトルを表示する。

4.結果

 “わ”のスペクトルを図1に、“た”のスペクトルを図2に示した。この時、ハイパスフィルタを使い、環境音である200Hz以下の周波数を消し飛ばした。また、本来は横軸を対数表示にするのが望ましいが、倍音が見分けにくいため普通に表示した。

f:id:yagi-uec17:20191205235645p:plain

図1.“わ”のスペクトル

f:id:yagi-uec17:20191205235650p:plain

図2.“た”のスペクトル

 ただし、ハミング窓を用いたものとしサイズを\(\boldsymbol{N=16384}\)としている。

5.考察

 この曲で僕が一番好きな部分である「た」について考える。実際に「わ」と「た」の両方を見ると、どちらも基本周波数700~750Hzの整数倍にあたる倍音が顕著に現れていることが見て取れる。また、間の非整数倍の周波数も少なく、理論上でも美しい歌声であることが分かった。さらに、どちらの音も4~5kHzくらいと8kHzくらいでスペクトルがより大きい値を取っている。4~5kHzの部分は歌声の核となる部分であり、8kHzの部分で綺麗な高音部分を形成しているため、美しい高音であることが証明された。さらに、核となる部分と高音の核となる部分以外の倍音も綺麗に表示されており、楽器のような美しさもあると考えられる。実際に「た」音についてローパスフィルタを使い、6kHz以上の周波数を殺して再生したところ、駒形友梨さんの良さを全て消し飛ばした音が再生されてしまった。本当にごめんなさい。
 次に二つの違う部分について考える。「わ」の音の方では、10kHzを超えたあたりの倍音があまり目立ってない。しかし、「た」の方では、12kHz付近で倍音がより顕著に現れており、さらに「わ」と比べても間の非整数倍の周波数のスペクトルが小さいことが読み取れる。以上のことから「た」の音が一番好きということが理論上で成立することが分かった。

6.感想

 めちゃくちゃ綺麗に倍音が表示されていて、理論上でも美しい歌声であることがわかって嬉しかったです。今回はアクアリウムを使ったが、別の音源などを使って低い部分と高い部分の違いなどを見て遊びたいなと思いました。

7.参考文献

[参1]電子情報学実験A1音声・画像処理実験, 電気通信大学, 2019
[参2] http://kitakuvocal.com/baion.html,北区ボーカル研究会
[参3]https://ja.osdn.net/projects/audacity/
[参4]Indigo, 駒形友梨, 2019

終わりに

 今回、数式を導入するのに頭抱えました。Markdown方式とかいうやつでMathjaxとかいうの導入して書きました。C言語の実行とかと違ってエラーを吐いてくれないので何がミスってるのかわかりにくくて苦労しました。HTMLちゃんと勉強しないとね。今後も読みやすいブログを目指して頑張りたいと思います。 それではまた。 最後まで読んでくださりありがとうございました~!!!