天気に基づいて音楽を作曲するRaspberry Piを作ってみた

in tech

1時間に1回、私の机の上にあるRaspberry Piが天気をチェックし、それに関する歌を再生します。鳩時計に少し似ていますが、時間の代わりに天気を知らせてくれます。

全体はPi自体でローカルに実行されます。クラウド AI サービス、サブスクリプション、ストリーミング オーディオはありません。インターネット接続が必要なのは天気予報自体だけですが、代わりに ESP32 を使用して構築された DIY 気象観測所を使用することもできます。

音楽を再生する Pi を作成する

天気を気分に変える仕組み

私はまず、Pi の天気へのアクセスを設定しました。 Open-Meteo を選択したのは、キーやアカウントが必要なく、非常に使いやすいためです。次に、プレーン テキスト ドキュメントで天気と気分をマッピングします。たとえば、晴れは喜び、雨は憂鬱、雪は繊細、嵐は緊張します。

それぞれの気分には一連のルールがあります。 Tense はテンポが速く、さまざまな楽器を「演奏」し、明確な音域を持っています。これらのルールは、それぞれの種類の天気の一般的な雰囲気を定義します。

地元のAIがメロディーを作曲

実際、音楽を作成するには小さな言語モデル (人工知能) が必要で、私はそれを Ollama 経由で Pi 上でローカルに実行しています。つまり、API アクセスに関連するコストは発生しません。基本的に、モデルは現在の気分 (天候によって決定されます) を受け取り、メロディーを JSON ファイルに出力します。

AIも 確認します 出力が持つべき品質を備えていること、晴れた日の歌が いつも 楽しいし、幻覚が偶然に晴れた日の暗い歌を生み出すこともありません。

重要なのは、モデルはかなり高い温度 (0.9) で実行されるため、同一のプロンプトからの出力が同一にならないことが保証されます。したがって、2 日続けて晴れた日でも同じ曲が生成されるわけではありませんが、似たような楽器が使用され、特定のテンポ範囲内に収まり、一般に「陽気」に聞こえます。

AI はメモを書きます。音は発生しません

Pi でサウンドを生成するのは要求が高すぎる

AI が音楽を作成するには 2 つの異なる方法があります。 1 つ目はオーディオを直接合成することです。 2 つ目は、プログラムによって再生される音符 (基本的にコンピューターの楽譜のようなもの) を含む MIDI ファイルを書き込みます。

利用可能な計算リソースがある場合は、最初のアプローチにより、よりリアルで魅力的な音楽が生成されます。ただし、私はこれを Raspberry Pi 4 で実行しています。Raspberry Pi 4 にはそれほど多くの追加の処理能力がありません。

そこで、それでもきちんとした音楽を生成できる MIDI アプローチを選択しました。従来のソフトウェア シンセサイザーである FluidSynth は、サンプリングされた楽器を使用して MIDI ノートをサウンドに変換します。実用性を考えると、再生からコンポジションを分割することが重要です。ノート データは小さく、生成が簡単で、曲の再生前に再確認するのも簡単です。 AI が機能しない JSON または範囲外のメモを生成した場合、コードはそれらを拒否または修正できます。

MIDI ファイルも完全に移植可能です。必要に応じて、それらを PC に保存したり、電子ピアノに移動したりできます。

曲を再生する

毎時間の始まりに、FluidSynth は生成された曲を再生します。約 60 秒後、音声がフェードアウトし、次の曲が必要になるまで Pi はアイドル状態になります。

ハードウェアが限界を決める

最大の制限は Pi 自体です。私は 8GB の RAM を搭載した Pi 4 を使用しています。リアルタイムで実行する必要がない場合は、小さなモデルを処理できますが、Pi は大きなモデルには対応できません。

ただし、1 時間に 1 曲しか必要ないため、Pi のハードウェア制限はそれほど大きな問題ではありません。

さらに、小さなLLMはモーツァルトやジョン・ウィリアムズではありません。出力される曲は「素晴らしい」ものですが、素晴らしいものを期待している場合は、より賢い AI が必要になります。


雨について歌うPi

天気予報 API、制約のあるローカル言語モデル、シンセサイザーを組み合わせることで、毎日または時間ごとの気分のようなデバイスを作成できます。このプロジェクトは、小規模なローカル モデルが真に役立つ可能性があるという点を裏付けるものでもあります。 もし 彼らを特定の仕事に制約します。

もっとスマートなものが必要な場合は、クラウド上で実行するものを構築し、そのファイルを Raspberry Pi に転送して再生することもできます。 ChatGPT または Claude サブスクリプションを持っている場合、MIDI 音楽の生成に使用量クォータに影響を与えるほど十分なトークンはおそらく使用されません。でも、地元で音楽を作るものが欲しかったんです。

デスクトップクラスの GPU で実行するセットアップを作成することもできます。追加のメモリと計算能力は大いに役立ちます。

このテーマについてさらに詳しく知りたい方は以下をご覧ください

完全ガイドはこちら

関連記事

前の投稿
この Blink 2K+ ドアベルと 5 台のカメラのバンドルは 10 月のプライムデーで 71% オフです
次の投稿
ハンドル付きフィリップス Wifi キーパッド ドア ロックが 10 月のプライムデーで 26% オフ

関連記事