2020年11月16日月曜日

AI作曲をコードと数式を使わず説明してみる、その2

特徴量の抽出

代表的なものには以下のようなものがあり、それぞれ一長一短ありますが、

  • 短時間フーリエ変換 (STFT)
  • メル周波数ケプストラムMFCC
  • ウェーブレット解析

とりあえずここでは一番基本の短時間フーリエ変換(以下STFT)を使用することにします。

といっても普段からおなじみの、音質を調整するイコライザのようなものだと思ってくれれば良いです。


この状態のデータのグラフは、横軸に時間、縦軸に音量をとっていますね。
このデータにSTFTをかけると。。。。

以下のようなグラフになります。
横軸時間、縦軸に周波数、さらに色の濃淡で、音の音量も表現することができます。


(イコライザ なんかはこのデータを元に各音域を調整するのですね)

このようにすると生のwaveデータの状態よりも音の構造がよりわかるようになります。

そして、この状態のデータをAIに「学習」させることにします。

時系列データを学習する


AIで学習するデータはざっくり大きく乱暴に分けると2種類あります。

  • 時系列のデータ
    • 時間によってデータ変わるもの、毎日の気温、文章(前から後ろへ書いていきますね)、映像、などなど。
  • 時系列ではないデータ
    • 文字認識、絵、などなど。

それぞれによって使用するアプローチが変わってきます。
音楽は当然時系列のデータです。

たとえば、ピアノに座って「ミ」の音を出しただけではただの音です

前に「ド」をつけて、「ド・ミ」と引くとその音はそれぞれ意味を持ってきます。

意味を持たないただの音だった「ミ」はドと並べることで「音程が上がったよ」「三度上がった調和する音程だよ」という意味をもつ音となり、それはメロディとなり、調性をも生み出します。ド・ミとつながったのだから多分ソがきてドミソの和音かな?、とその先の展開も想像できるわけです。

AIでも同じ考え方をします。
前のデータを学習すれば、その先の音はわかるのではないかな?という仮定に立ちます。

その考え方に立ったものがAI学習方法の一つ「再帰型ニューラルネットワーク」です。




これはそれより「過去に起きた情報」を保持し、次のステップに利用することができるというアルゴリズムです。

時間の共に変化する分野、特に、「言語解析」や「音声認識」の世界では主流となっています。

音楽も同じように「時間と共に変化する」性質をもつので、この考え方を利用することとします。

というわけで次は、実際の楽曲生成です。


0 件のコメント:

コメントを投稿