Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Foundation Modelsの歌声によせて 〜 オンデバイス推論から聞こえてくる自動作曲...

Avatar for log5 log5
September 11, 2026
83

Foundation Modelsの歌声によせて 〜 オンデバイス推論から聞こえてくる自動作曲の可能性

Avatar for log5

log5

September 11, 2026

Transcript

  1. どれがFoundation Modelsの曲? これから3つの音楽が流れるので、Foundation Models が ”作曲”した音楽を当てよう! 1. Found tion Models由来の曲

    (正解) 2. 乱択アルゴリズム由来の曲 (不正解) 3. 私(log5)が人力で作った曲(絶対アカン) 注: 機械的な作曲においては音楽理論に基づく後処理が入っているよ! a a 画像制作: Ch tGPT
  2. A

  3. B

  4. C

  5. そもそも「作曲」とは? • 音響の集合をいい感じに作り、組織化すること • 音響: 音量 + ピッチ + 長さ

    + 音色 + 空間的位置 + 反響 • いまひとつピンと来ない… • 例: 大衆音楽(ポップス)の場合、何を決めれば音楽になるか?
  6. 大衆音楽を構成するもの ざっくりまとめ 1. メロディ —— ドレミの並び 2. コード —— 音の重なり

    3. リズム —— いつ鳴らすか 4. 構成 ——Aメロ / Bメロ / サビなど (一般に大衆音楽の場合) • それ以外(歌詞・歌声・音色など)
  7. 「自動作曲」とは? ここでの定義 • 創造的な行為の延長として、特定の曲想や条件から音楽を生成する仕組みを指す • 以下については、今回は「創造的な行為」の対象から外し、自動作曲には含めない • 事前に決められた音楽を自動的に演奏すること • 乱数のみに依拠して演奏すること

    • 例: モーツァルトの「音楽のサイコロ遊び」(Musik lisches Würfelspiel, K516f) • 自然現象のみに依拠して演奏すること • 例: エオリアン・ハープ(風の力で音を鳴らす楽器) a 注: 上記で自動作曲に含めなかったものに創造性がないという意味ではありません
  8. iPhoneの土俵は「記号的生成」 • 信号生成: St bility AI と Arm 等での実例はあるが、GPUサーバ級の計算量が欲しくなる •

    記号生成: 概ねテキストと数値の列 → 3Bモデルの守備範囲 a • 楽譜はAIが書き、音はiOSが鳴らす
  9. Foundation Models フレームワーク 本日の主役 • Apple Intelligenceの言語モデルをアプリから直接利用 • OS標準 ——

    モデル同梱不要 • API課金なし • 完全オンデバイス = オフラインで動く
  10. Foundation Models フレームワーク 約3Bパラメータのモデル • 約30億パラメータ / 2bit量子化 • 得意なこと:

    要約・分類・短い構造化生成 • 不得意なこと: 長文の一貫性・複雑な推論・算数
  11. Foundation Models の使い方 import FoundationModels の後に、 let model = SystemLanguageModel.default

    guard model.availability "# .available else { … } let session = LanguageModelSession(instructions: …) let response = try await session.respond(to: …)
  12. Guided Generation 生成したいデータを@Generableで定義 import FoundationModels @Generable struct GeneratedNote { @Guide(description:

    "MIDIノート番号", .range(55""#84)) var midiNote: Int @Guide(description: "開始位置:16分音符単位", .range(0""#15)) var startSixteenth: Int @Guide(description: "長さ:16分音符単位", .range(1""#16)) var durationSixteenths: Int @Guide(description: "音の強さ", .range(40""#110)) var velocity: Int }
  13. Guided Generation generating:に型を渡し、結果をそのまま取得 let session = LanguageModelSession() let response =

    try await session.respond( to: "メロディの最初の音を1つ作ってください", generating: GeneratedNote.self ) let note: GeneratedNote = response.content
  14. 型と値域の保証、内容の検証 • 生成時に制約できること • @Generable:プロパティの構造と型 • @Guide の .range:各プロパティの値域 •

    複数にまたがる場合は別途検証が必要! !" 生成された値の例 note.startSixteenth note.durationSixteenths !" 15:0!!$15の範囲内 !" 16:1!!$16の範囲内 !" 複数の値にまたがる条件は、アプリ側で検証 let fitsInBar = note.startSixteenth + note.durationSixteenths !% 16 !" false
  15. ちなみに: iOS 27でのアップデート WWDC26での話とか • モデル刷新 / 画像入力 / サードパーティモデル対応

    / PCC / トークン使用量API • 今日のデモと実装は iOS 26 の安定APIのみ • 詳しくは最後の展望で
  16. 生成方式と改善の段階 Strategyと生成方式 • Str tegy A: 自由に作らせる (自由テキストから音符を読む) • Str

    tegy B: 構造を強制する (スキーマに沿って曲を生成) a a a • Str tegy C: 分割統治(分割して生成・検証する)
  17. Strategy A: 自由に作らせる プロンプトはだいたいこんな感じ let session = LanguageModelSession(instructions: """ Output

    MIDI events as plain text in the exact requested format. No explanations or Markdown. Do not generate lyrics. Use integer sixteenth-note steps for all timing. """) var prompt = """ \(request.style.instructions). Mood: \(moodText(request.mood)) Create a monophonic melody of \(request.bars) bars. Key: \(request.keyRoot?.rawValue "# "choose") Minor: \(request.requestedMinor.map(String.init) "# "choose") Format: KEY:C MINOR:\(request.requestedMinor.map(String.init) "# "false") TEMPO:120 CHORDS:I,V,vi,IV NOTES: bar,start,duration,midiNote,velocity 0,0,4,60,90 """
  18. リトライ は「言い直し」より「対話」 同じプロンプトで再依頼せずに • 同一プロンプトで再依頼だと 平均11.5回/8小節・約52秒 • 違反を伝えて修正依頼すれば 平均9.9回・約43秒(-17%) •

    今回の測定では、修正依頼の導入後に平均生成時間が約17%短縮した • 「スケール外です」等をそのまま渡すだけ • 劇的ではないが、改善はしている
  19. Strategy C: 分割統治 + 音楽理論 1. 全体構成をまず考えさせる(Aメロ・サビ、みたいないもの) 2. コード進行はセクション単位 3.

    メロディは小節単位(曲固有文脈はpromptへ) 4. 違反があれば『修正依頼』 リトライ → 後処理 • 副産物: 短命セッションで4,096トークン問題を回避
  20. 🎬 聴いてみましょう: Strategy C1 Phase 1: 分割統治 + 後処理 •

    ノートの偏りと単調性は軽減されているように見える • 旋律の豊かさでいえばまだ課題が
  21. 生成方式と改善の段階 Strategyと生成方式 • Str tegy A: 自由に書かせる(自由テキストから音符を読む) • Str tegy

    B: 構造を強制する(スキーマに沿って曲を生成) a a a • Str tegy C: 分割統治(分割して生成・検証する)
  22. 生成方式と改善の段階 Strategyと生成方式 • Str tegy A: 自由に書かせる(自由テキストから音符を読む) • Str tegy

    B: 構造を強制する(スキーマに沿って曲を生成) • Str tegy C: 分割統治(分割して生成・検証する) a a a a • Str tegy D: 乱択アルゴリズムとルール(比較用, AIなし)
  23. 事例: MoodCraft 作者: かっくんさん MoodCr ft - Focus Music a

    a a https://moodcr ft-d0c8e.web. pp/ , https://fromkk.me/
  24. Phase 2:モチーフを選んで展開 • Ph se 1で扱ったこと • 小節の生成結果を検証し、補正する • Ph

    se 2で挑戦すること a a • 短いモチーフを、反復と変化で曲へ展開する
  25. Phase 2:モチーフを選んで展開 a a a 選択とルールによる展開 フェーズ 担当 曲の構成とコード進行 Found

    tion Models 1小節のモチーフ候補を生成 Found tion Models 展開方法を選択 Found tion Models 反復・移調・反行・リズム変形・終止を実行 後処理 展開した音符を検証・補正 後処理
  26. 🎬 聴いてみましょう: Strategy C2 Phase 2: 分割統治 + 後処理 +

    モチーフを選んで展開 • 前後関係を意識できている • 反復もできている • まだ淡白さは残っている • 特にリズムが単調すぎる
  27. Phase 3:フレーズごとの役割を先に決める 2小節のモチーフを型で受け取る(ついでにリズムもテコ入れ) • Rhythms:各小節のリズム型 • 単調なリズム対策 • degrees:音階上の位置 •

    Cメジャーの例: • [0, 1, 2, 4] = ド・レ・ミ・ソ @Generable struct GeneratedPhraseMotif { @Guide(.count(2)) var rhythms: [GeneratedPhraseRhythm] var degrees: [Int] }
  28. Phase 3:フレーズごとの役割を先に決める 展開後の音符列で候補を選ぶ • 展開:同じフレーズ計画で、両候補を展開する • 音高の決定・補正:和声や前後のつながりを考慮する • 選択:最終音符列の品質を評価し、補正量を減点する !"

    処理順を示す疑似コード let expanded = expand(motif, plan) let realized = realize(expanded, chords, context) let quality = analyze(realized) let repairCost = measureRepair(expanded, realized) let selectionScore = quality.score - repairCost
  29. 🎬 聴いてみましょう: Strategy C3 Phase 3: 分割統治 + 後処理 +

    モチーフを選んで展開 + フレーズを計画 + 各候補を展開した完成形から選ぶ
  30. 🎬 聴いてみましょう: Strategy C3 Phase 3: 分割統治 + 後処理 +

    モチーフを選んで展開 + フレーズを計画 + 各候補を展開した完成形から選ぶ • 前後関係を意識できている • 反復もできている • 変化、展開がいい感じにできている…?
  31. 限界の整理 Foundation Models (3Bの汎用言語モデル) がどこまで出来るか • 出来たこと • モチーフを反復・展開する短い小品をオフラインで生成可能 •

    課題 • プロンプト改善だけで品質上限を越えるのは難しそう • 長尺の一貫性 / 歌声・音響生成 / 「売れる曲」水準
  32. 展望: この先の夢 オンデバイス自動作曲のこれから • プロンプトだけでは、3B汎用モデルの構造的限界を越えられない • iOS 27 で期待 •

    20Bモデル、Priv te Cloud Compute • LanguageModelSession が使用するモデルを選択・切り替えられる a • 音楽特化オンデバイスモデルを使うときも、同じAPIで生成部だけを差し替えられる
  33. 展望: この先の夢 オンデバイス自動作曲のこれから • プロンプトだけでは、3B汎用モデルの構造的限界を越えられない • iOS 27 で期待 •

    20Bモデル、Priv te Cloud Compute • LanguageModelSession が使用するモデルを選択・切り替えられる • 音楽特化オンデバイスモデルを使うときも、同じAPIで生成部だけを差し替えられる a • iOS 27 は 9月15日、週明けの火曜日です
  34. ご清聴ありがとうございました 発表者: log5 (visit https: log5.jp ) • スライドで使用したサンプルアプリのコードは後ほど Githubで公開します。

    • 参考文献 • Cheung et l. (2019), Uncert inty nd Surprise Jointly Predict Music l Ple sure nd Amygd l , Hippoc mpus, nd Auditory Cortex Activity • Shih et l. (2021/2022), Theme Tr nsformer: Symbolic Music Gener tion with Theme-Conditioned Tr nsformer • M dison & Schiölde (2017), Repe ted Listening Incre ses the Liking for Music Reg rdless of Its Complexity a a a a a a a a a a a / / a a a a a a a a a a a a a a • Touizr r et l. (2021), Repetition nd Aesthetic Judgment in Post-ton l Music for L rge Ensemble nd Orchestr