AIが作曲する昭和なメロディーに和む

AI

概要

AIによる作曲に挑戦してみました。
前回前々回のように、AIによる文章生成を試してみたところ、単語を音符に変えることで楽譜が生成できる気がしたからです。

ただし、リズムは考慮しませんでした。
作者がデータを手作業で収集したため、リズムを簡略化して全て4分音符としました。

どうやって機械学習したのか?

学習データとなる楽譜は手動で読み取り、音程を表す文字列からなる配列にしました。

分かりやすく説明すると、こんな感じ。
[ド、レ、ミ、ファ、ミ、レ、ド]

しかし、これではドが高いドなのか低いドなのか分かりません。また、曲を再生するのにTone.jsというライブラリを使用しているのですが、このような記述の仕方には対応されてません。ですので、もっと現実的な表現で行います。

実際のコードではこんな感じ。
[‘e4’, ‘g4’, ‘a4’, ‘g4’, ‘c5’]

アルファベットが音の名前で、数字が高さを表しています。
C5はピアノで言うと、真ん中の方よりちょっと高いドになります。もっと高いドはC6とかC7とかになります。

これら音程を単語と見なし、前回までの文章生成モデルに放り込むと、次々とキーノートが生成され、あれよあれよと名曲が誕生するってわけです。

この学習用データは37の楽曲からつくりました。
使用した楽曲は「とんぼのめがね」、「かたつむり」、「ぞうさん」など昭和な感じの曲です。
単語数(音符数)は10、訓練センテンス数は385となりました。

データが少なすぎるのは気にしない。
これで、印税生活ウハウハです。

生成した曲は聴けるのか?

今回もウェブアプリとして公開してます。
ぜひ聞いてみてください。

感想

少量とはいえ、自分の好みの曲のデータを揃えて加工するのが大変でしたが、生成されたものを 聞いてみると、ちゃんとベースとなった楽曲のように昭和な雰囲気となりました。
ただし、学習データの少なさとリズムの未学習から、案外ランダムに音符を選んでもこんな感じになる気がします。
いずれリズムを含めたAIによる作曲もやってみたいと思います。

参考

lstm_text_generation.py
kerasの公式サンプルです。
主に、こちらのサンプルのアルファベットを音符(ド、レ、ミなど)に置き換えただけです。

Tone.js
LSTMで生成した音符を再生するのに使用しています。
もっと複雑な作曲することも可能なようです。

コメント

タイトルとURLをコピーしました