0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

曲のセクション(Aメロ・サビ)を推定→コード推定の可能性

0
Posted at

前回の記事では、曲を聴かせるとコード進行を推定してギター TAB にしてくれる Web ツール(耳コピ ギター TAB メーカー)を作って、「曲を歌・ドラム・ベースなどに分けてから読むと、コードがよく当たる」という話を書きました。

今回はその続きで、曲のセクション、つまり「ここはイントロ、ここから Aメロ、ここがサビ」という区切りを自動で推定してみました。さらに、その構成を手がかりにコードを直してみました。

結論から言うと、セクションの分かれ方は、聴いていて「たしかにここからサビだな」と思えるくらい、わりと納得感のあるものになりました。そして、構成をもとに直したコードで鳴らすギターが、一番しっくりきます。

まずは聴いてみてください

サビの聴き比べ(自分のサイト)

フリー音楽素材の魔王魂「シャイニングスター」と「Burning Heart」のサビを、元の曲と、ツールが作った TAB を弾く合成音のギターで一緒に流せます。ギターのコードは、次の 3 種類から選べます。

  1. 速い解析:曲の音をそのまま読んだコード
  2. パートに分けてからの解析:前回の方法。歌とドラムを抜いた音で読み直したコード
  3. 曲の構成で直した結果:今回の方法(推定したセクションを手がかりに直したコード)

再生中に別のボタンを押すと、同じ位置のままギターのコードだけが切り替わるので、「同じところを 1 で聴いて、すぐ 3 で聴く」ができます。

サビの聴き比べ。1〜3 のコードを並べていて、色の付いた小節は一つ前から変わった所

自分で聴き比べてみると、3 が一番しっくりきました。サビのところで「あれ、今のギター変じゃない?」と引っかかる小節が減って、ギターのバッキングを気持ちよく聴いていられます。ぜひ曲と合わせて聴いてみてください。

ページの下のほうでは、曲全体のセクションの推定結果や、パートごとの音(歌だけ、伴奏だけなど)も聴けます。

何をしたのか

1. セクションを推定する

セクションの推定では、3 つのやり方を試しました。

  • 規則だけ:「歌が入る前はイントロ」「一番高い音域で何度も繰り返すのがサビ」のような決まりを、プログラムで書く方法。1 曲目ではうまくいったのですが、その曲に合わせて調整しすぎて、別の曲に当てると「4 小節だけのサビ」が続くような、変な分け方になりました。
  • AI だけ:小節ごとの数字を AI(Claude の小型モデルの Haiku)に渡して、分けてもらう方法。それっぽい形にはなるのですが、回ごとに結果がぶれますし、イントロを消してしまったり、転調した所をサビと呼んだりしました。
  • 規則+AI:規則で確かな事実と下書きを作り、AI がセクション名(Aメロ・サビなど)を決め、最後に規則で事実に反する所を直す方法。これが一番安定しました。

規則も AI も、それぞれ得意なことが違ったので、分担させた形です。

シャイニングスターの曲全体の分析。上から、推定したセクション、その付近の調、歌が入っている所、同じ歌詞の繰り返し、構成で直した小節

2. 手がかりは「分けた歌」

規則で使った手がかりは、どれも、曲を歌・ドラム・ベース・その他の楽器に分けた音(前回の記事の音源分離)から取っています。

  • 歌が入っているか:分けた歌の音量。歌が入る前ならイントロ、歌が途切れていれば間奏、と分かります
  • 歌の高さ:分けた歌の音の高さ。Aメロより、サビの方が高く歌われていることが多いです
  • その付近の調(キー):前後数小節の響きから推定した調。転調の手がかりになります
  • 同じ歌詞の繰り返し:分けた歌に音声認識(Whisper)をかけて、前に出てきた歌詞と同じ行を歌っている所を探します

一番効いたのは、最後の歌詞の繰り返しでした。Aメロとサビは、コード進行が似ていることがよくあるので、コードだけでは区別しにくいです。でも、サビは同じ歌詞を繰り返すのに対して、Aメロは 1 番と 2 番で歌詞が変わります。シャイニングスターで試すと、歌詞の文字が似ていたのはサビどうしだけで、ほかの組み合わせはまったく似ていませんでした。

ちなみに、歌詞は著作物なので、文字そのものは AI に渡していません。手元で「この行は、何行目と同じ」という番号にしてから渡しています。

3. セクションを手がかりに、コードを直す

セクションが分かると、「何度も出てくるサビは、同じ位置で同じコードのはず」という考えが使えます。そこで、サビを全部重ねて、同じ位置の小節どうしを比べました。

  1. 規則で、怪しい小節を探す。たとえば、何回か出てくるサビのうち 1 回だけコードが違う小節や、長調か短調か決めきれていないコード(sus2 と読んだもの)
  2. 規則で、直す候補を出す。ほかの回で読まれたコードや、それを素直な形にしたもの。それぞれ、その小節の音にどれくらい合うかの点数も付ける
  3. AI が、候補の中から選ぶ。新しいコードは作らせません
  4. 最後に規則で、音に合わない直しを取り消す

AI が勝手にコードを作り替えないように、選べる範囲を規則で絞っているのがポイントです。試しに、AI に曲全体のコードを自由に直させてもみたのですが、回ごとに直す場所が大きくぶれてしまい、使いものになりませんでした。

構成で直したコードのギター TAB。赤い印が直した小節(Csus4 → Fsus4/C、A♭sus2 → A♭maj7 など)

どれくらい良くなったか

シャイニングスターは、ChordWiki に投稿されたコード譜(どなたかの耳コピで、正解ではありません)と比べてみました。最初の歌の部分の 32 か所で、ルート音(コードの土台になる音)が合っていたのが 25 → 26 か所、長調・短調まで合っていたのが 18 → 20 か所です。

数字の上では 1〜2 か所の差ですが、聴くと差は数字以上に大きく感じます。直ったのは、サビの繰り返しの中で 1 回だけ違う読みになっていた所などで、そこがちょうど「聴いていて引っかかる」所だったからだと思います。

セクションのほうは、自分で聴いてみて、サビなどの区切りはほとんど合っていると感じました。

まだ足りないところ

  • 正解のコード譜と比べられたのは、シャイニングスターの 1 曲だけです。Burning Heart には比べられる譜面がないので、ぜひ耳で確かめてみてください
  • 規則の数値には、シャイニングスターを見て決めたものがあります。いろいろな曲で試して、合わせすぎていないかを確かめるのが次の課題です

使った規則は、ページの下の「しくみ」に、数値まで全部載せています。


0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?