$30 off During Our Annual Pro Sale. View details »

楽曲のつながりを考慮した音楽再生手法の研究

Haruki Mori
February 21, 2020

 楽曲のつながりを考慮した音楽再生手法の研究

Apple Musicで雰囲気ごとに編成されたプレイリストを再生すると、似た曲が集まっていても前の曲と次の曲のつながりがないことや、一旦再生が終了することによる違和感を感じることがあり、これをきれいにつないでくれるDJみたいな機能が実装されたらいいな...と常々思っていました。曲の①キー②BPM によって人間の感覚に沿った楽曲の類似性を算出できるのではないか?という仮説を検証し、また実際にプログラムに曲をミックスさせた研究を卒業論文にまとめました。
卒論審査会の発表資料です。

Haruki Mori

February 21, 2020
Tweet

More Decks by Haruki Mori

Other Decks in Research

Transcript

  1. 楽曲の繋がりを考慮した⾳楽再⽣⼿法の研究 A Music Mixer considering the Connectivity of Songs 森

    晴樹 岐⾩⼯業⾼等専⾨学校 電気情報⼯学科 ⽥島研究室
  2. このスライドで話すこと 背景 : 楽曲再⽣時の違和感 ⽬的 : 違和感を解消する再⽣⼿法の開発 課題 : 楽曲間の距離、つなぎ⽬

    ⼿法 : キーとBPMによる類似度算出、つなぎ⽬の処理 実験 : 提案⼿法とシャッフル再⽣の⽐較 考察 : 違和感が解消できた
  3. ⾳楽を聞く機会の増加 サブスクリプション型⾳楽ストリーミングサービスの普及、端末の ⼤容量化 プレイリストの⾃動編成 雰囲気の似た曲が⾃動で推薦される リスト内の楽曲はランダムに並んでいる 楽曲再⽣時の⾳のつながりは考慮していない

  4. プレイリストを⾃動編成していても 楽曲間のつながりに⼀体感がない 現状

  5. DJ(Disc Jockey)

  6. クラブDJは⽚⽅の再⽣機器で曲を再⽣している間に、も う⽚⽅で次の曲の再⽣準備し、⾳を違和感なくクロスさ せるミックス操作で曲の流れをとめることなく次の曲へ と繋いでいく。 https://ja.wikipedia.org/wiki/ディスクジョッキー

  7. 違和感なく曲をつなぐ再⽣⼿法の開発 ⽬的

  8. どのようにして違和感を解消するか?あ

  9. 1. 違和感のない曲順を定める 2. 違和感のないつなぎ⽬にする 曲順 つなぎ⽬ に着⽬する }

  10. 1. 違和感のない曲順を定める

  11. 曲の性質がどれだけ近いか? ↓ 曲と曲の類似度を求める

  12. ⾳楽の三⼤要素 メロディ : ⾳程の時間変化 ハーモニー : ⾳の重なりの時間変化 リズム : ⾳符や休符による⼀定のパターン

  13. メロディ ハーモニー リズム } どのような⾳程を持つか どのような時間感覚を持つか

  14. メロディ ハーモニー リズム } どのような⾳程を持つか どのような時間感覚を持つか キーが指標になる BPMが指標になる

  15. キー 12⾳階のうち、楽曲が「基準としている⾳」と 「使⽤している⾳」を⽰すもの e.g.) Cmaj : [C D E F

    G A B] ハ⻑調 : [ド レ ミ ファ ソ ラ シ]
  16. ⼀定の速さで刻まれる基本的な時間の単位。 リズムが演奏されるスピードを1分あたりの拍数で表す。 BPM(Beats per minute)

  17. !"" = #$% + &'( #$% = − ∗ 0.04

    ).+ &'( = 1 − 1 7 ).+ 提案する楽曲間の距離
  18. #$% = 1 − * 7 &.( e.g.) Cmaj ・

    Amaj = [C D E F G A B]・[A B C# D E F# G#] = 4
  19. 曲と曲の類似度を求める ↓ 曲と曲の距離!"" を定義できた ↓ 距離!"" がもっとも⼩さいものを 次の曲として選択していく

  20. あ 違和感のない曲順の決定をする

  21. 2. 違和感のないつなぎ⽬にする

  22. 曲A 曲B

  23. 曲と曲を重ねる

  24. ごちゃごちゃ }

  25. 拍位置を合わせる

  26. 曲A 曲B 急に始まる 急に終わる

  27. 曲A 曲B Fade in Fade out

  28. None
  29. 曲と曲を重ねる 拍位置のマッチを⾏う 接続部分にクロスフェードを適⽤ つなぎ⽬

  30. ① ぐちゃぐちゃ ② ⼿法を適⽤ 聴き⽐べ (ZEDD / Stay → Kygo

    / Stay)
  31. あ 違和感のない曲順の決定をする あ 違和感のないつなぎ⽬にする

  32. 開発環境 OS macOS Mojave 10.14.6 Development language Python 3.7 Editor

    Atom 1.43.0 Library Use tempfile Store wav file. LibROSA Calc chroma vector, Beat tracking, and HPSS. pydub Make mix, Apply effects.
  33. • Apple Musicから取得した雰囲気の似ている8曲を利⽤ • 曲順の決定⽅法を変えて本⼿法で再⽣ A) ランダム(Track1) B) BPMによる類似度のみを適⽤(Track2) C)

    キーによる類似度のみを適⽤(Track3) • つなぎ⽬の処理は3つとも同じ 評価実験
  34. 楽曲間距離の合計 dBPM dkey dall Track1(Random) 3.29 2.68 5.98 Track2(BPM) 1.23

    1.63 2.85 Track3(Key) 3.48 2.42 5.90
  35. 実験結果 3つの中で最も違和感のないトラックは? (n=22)

  36. 得票数の順位と楽曲間距離の近さが⼀致 dBPM dkey dall Track1(Random) 3.29 2.68 5.98 Track2(BPM) 1.23

    1.63 2.85 Track3(Key) 3.48 2.42 5.90
  37. 楽曲間距離の算出⽅法は ⼈間の感覚に沿っていた 考察

  38. まとめ • ⾃動編成されたプレイリストに対して再⽣時の違和感の解消を⽬ 指す再⽣⼿法を開発し、評価を⾏なった BPMとキーによる類似度算出、拍位置のマッチングとクロス フェードが有効であると確認できた 再⽣プレーヤーとして実装できなかった

  39. 追加資料

  40. 五度圏(Circle of fifth)

  41. 1. 楽曲から調波⾳を分離しフレームに分割する 2. 各フレームのChromaベクトルを求める 3. 1をを時間⽅向に⾜し合わせる 4. 2とテンプレートベクトルとのコサイン類似度 !"# が最⼤になるキーを選択する

    キーの推定 !"# = $%&'() - *"(+,)*" $%&'() *"(+,"*"
  42. キーの推定 Take dot product with template vector

  43. キーの推定 Take dot product with template vector

  44. キーの推定 Take dot product with template vector

  45. キーの推定 Take dot product with template vector

  46. キーの推定 Take dot product with template vector

  47. キーの推定 Take dot product with template vector

  48. テンプレートベクトル scale note on the scale C D♭ D E♭

    E F G♭ G A♭ A B♭ B C 1 0 1 0 1 1 0 1 0 1 0 1 D♭(C#) 1 1 0 1 0 1 1 0 1 0 1 0 D 0 1 1 0 1 0 1 1 0 1 0 1 Eb 1 0 1 1 0 1 0 1 1 0 1 0 E 0 1 0 1 1 0 1 0 1 1 0 1 F 1 0 1 0 1 1 0 1 0 1 1 0 F#/G♭ 0 1 0 1 0 1 1 0 1 0 1 1 G 1 0 1 0 1 0 1 1 0 1 0 1 A♭ 1 1 0 1 0 1 0 1 1 0 1 0 A 0 1 1 0 1 0 1 0 1 1 0 1 B♭ 1 0 1 1 0 1 0 1 0 1 1 0 B(C♭) 0 1 0 1 1 0 1 0 1 0 1 1
  49. 1. 楽曲をフレームに分割する 2. フレームごとに振幅の実効値を求める 3. ⾳の開始強度を測定する 4. 1で求めた開始位置の⾃⼰相関からBPMを推定する BPMの推定

  50. 1. ⾳の開始位置を測定する 2. 1で求めた開始位置の⾃⼰相関からBPMを推定する 3. 2で求めたBPMのテンポとほぼ⼀致する開始強度の ピークを選択する 拍位置の推定

  51. dBPM dkey Track1(Random) 3.29 2.68 Track2(BPM) 1.23 1.63 Track3(Key) 3.48

    2.42 Track2 > Track1 Track3 > Track1