MENU

コマンド不要のDiscord音楽Bot「天音結歌(Amane Yuika)」のAI選曲を作りました

天音結歌

前回は、天音結歌の「画面」のお話でした。今回はシリーズ最終回として、「AI選曲」のお話です。天音結歌には、言葉でお願いするだけで曲を選んでくれる /mix と、音楽が途切れないように寄り添ってくれるインフィニティ再生があります。どちらも主役はAIなのですが、作ってみると「AIに選ばせる」だけでは終わらない工夫がいろいろ必要でした。今回はそのあたりを掘り下げていきます。

目次

「こんな曲かけて」に応える /mix

天音結歌のAI選曲の入り口が、/mix というコマンドです。使い方はシンプルで、自然な文章でお願いを書くだけ。「2010年代のアニソンで、明るい曲を多めに。カバー曲はなしで」みたいな、ふだんの言葉で大丈夫です。お願いは最大で500文字まで書けます。

AIはその文章から、アーティスト、年代、ジャンル、それに「これは入れないで」という除外条件を読み取ります。そして候補の曲をYouTubeの検索結果と照らし合わせて、実際に存在する原曲だけをキューに追加していきます。

選曲の途中経過は、DiscordのEmbedで段階的に更新しながら表示されます。進み具合が見えるので、待っている間も何をしているのかが分かって、安心して眺めていられます。選曲にはどうしても少し時間がかかるので、待つ時間も含めて体験だと思って、この見せ方にはこだわりました。

曲数は1曲から30曲まで指定できて、省略したときはAIがお願いの文章から判断して決めます。「作業用に長めに」みたいな空気も含めて、いい感じの数にしてくれるわけです。

実在検証という「関所」

AI選曲を作っていて早めに気づいたのが、「AIは、もっともらしいのに存在しない曲を、自信たっぷりに提案してくることがある」という問題でした。タイトルもアーティスト名もそれっぽいのに、検索してもどこにもない。あるいは、曲自体はあってもカバー版だったり、別のアーティストのバージョンだったりする。そういう曲がキューに入ってしまうと、「頼んだのと違う」というがっかりにつながります。

そこで、AIが提案した候補は、そのまま追加せずに一度「関所」を通すことにしました。YouTubeの検索結果と照合して、見つからない曲、カバー曲、別アーティストのバージョンは、ここで除外します。通過した、本物の原曲だけがキューに入ります。

AIの提案力を頼りにしつつ、最後は事実で確かめる。第2回の歌詞の照合でもそうでしたが、この「最後は事実で確かめる」ひと手間があるかないかで、安心感はだいぶ変わります。この関所があるからこそ、安心してAIに選曲を任せられるんだと思っています。

インフィニティ再生

もうひとつのAI選曲が「インフィニティ再生」です。ボイスチャンネルでみんなで聴いていると、キューの残りが少なくなってきたときに「次、何かけよう」という間ができがちです。インフィニティ再生を入れておくと、キューが尽きそうになる前に、YouTube Musicから今の流れに合いそうな関連曲を集めて、AIがその中から合うものを選んで足し続けてくれます。音楽が途切れないので、会話や作業の邪魔にもなりません。

作業やゲームのお供に、ずっと音楽を流しておきたいときにも心強い存在です。

止まるときの条件も決めてあります。ボイスチャンネルに誰もいなくなったとき、上限まで達したとき、誰かが /stop したときは、きちんと止まります。逆に、AIが使えない状況では、関連曲だけでも拾って再生を続けるようにしてあります。AIはあくまで「選ぶ」役で、音楽を止めないことが最優先、という設計です。

作り直しの話

実はAI選曲は、二代目なんです。初代のAIミックスは、2026年8月に同期歌詞やオートプレイなどと一緒に、まとめて追加したものでした。まず動くものを作って、みんなに使ってもらう。そのこと自体はよかったのですが、使っていくうちに、選曲の土台から見直したほうがいい課題も見えてきました。

そこで2026年10月25日、AI選曲を一度まっさらにして、丸一日かけて作り直しました。設計資料を新しく書き直すところから始めて、選曲の仕組みはClaudeを中心に据え直し、実在検証の流れをきちんと組み込んで、/mix も作り替えました。そして従来のオートプレイは、インフィニティ再生へと置き換わりました。

作り直すのは勇気がいりますが、「直したいところが分かっている」状態で作る二代目は、初代よりずっと素直に作れます。結果として、今のAI選曲はこの作り直しを境に、だいぶ安心して任せられるものになったと思っています。

費用の管理という地味な大事さ

少し地味な話ですが、大事な話もします。AI選曲は、使うたびにAIの利用料がかかります。気持ちよく使ってもらいたい反面、知らないうちに費用が膨らんでいくのは避けたいところです。

なので天音結歌では、AIを呼び出すたびに、使ったトークン数から費用を計算して記録するようにしています。記録は30日分残してあるので、「今月どれくらい使ったかな」がいつでも見返せます。

さらに、月ごとの上限も決めてあります。上限を超えたら、その月の /mix はお休み。上限の80%に達した時点で管理側に通知が出るので、「気づいたら超えていた」も防げます。費用を見える形にして、上限を決めておく。派手な機能ではありませんが、長く安心して運用していくための、大事な土台だと思っています。

評価スクリプトで比べる

作り直したあと、「前より良くなった」をどうやって確かめるかも考えました。なんとなくの感覚で「良くなった気がする」だけだと、次の改善の判断がしづらいんです。

そこで、評価用のスクリプトを用意しました。あらかじめ用意した20件のお願い文のセットを、旧方式と新方式の両方にかけさせて、結果をCSVで比べられるようにしています。比べるのは、アーティストがお願い通りになっているかの一致率、カバー曲が混ざってしまった割合、かかった費用、そして所要時間です。

数字で比べられると、「新方式はカバー混入が減った代わりに、少し時間がかかる」みたいな、良し悪しの両方が見えてきます。改善の効果をちゃんと測る。良くなったかどうかを感覚だけに頼らない姿勢は、ほかの機能の改善でも心がけていて、これからも大事にしていきたいところです。

シリーズの締めに

3回にわたって、天音結歌の話をしてきました。第1回は全体像と開発の歩み、第2回はWebUIとDiscord Activityという「画面」の話、そして今回はAI選曲の話でした。

振り返ると、この3つは、天音結歌が最初に目指した「コマンド不要で、押せば流れる」という理想に近づくための、3つの柱だったように思います。誰でも触れる画面、言葉でお願いできる選曲、そしてその裏側を支える検証や費用管理や評価の仕組み。目に見える便利さと、目に見えない安心感の両方があってこそ、日常的に使ってもらえる道具になるんだなと、作りながら学びました。

天音結歌の改善は、これからも続きます。次の予定は、第1回でも触れた、WebUIのログインを自作のSSO基盤「chokoID」へつなぐこと。自分のサービス同士をつないで、もっと使いやすくしていけたらと思っています。

シリーズを読んでくださって、ありがとうございました。天音結歌は amane.c1n.app で公開しています。よかったら覗いてみてくださいね。

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

choko1229のアバター choko1229 Web Creator

田舎の企業でWebサイト制作のお仕事をしています。WordPressを主に使って制作しているので、WordPress関係の記事を書きます。
あと、個人的にマインクラフトサーバーを運営しているのでそっちの記事も書いていきます。

コメント

コメントする

CAPTCHA


目次