BEATWIZ 機能解説物語 – 第 4 回 最新 BEATWIZ 機能紹介特別篇:Constant-Q 変換を用いた和音解析の現状 –
こんにちは。事業開発室室長の増野です。
BEATWIZ誕生秘話を解説した、BEATWIZ機能解説物語。
第1話は『手拍子の秘密』、第2話は『楽曲の盛り上がり度とフレーズ解析』、
そして第3話は『ボーカル分離と 主旋律の楽譜生成』に関して、簡単に説明しました。
全3回の予定だったBEATWIZ機能解説物語ですが、今回はおまけの特別編として、
表題のとおり、最新のBEATWIZに搭載された『和音解析の現状』に関して、簡単に説明していきたいと思います。
この『和音解析』ですが、従来の解析方法を進化させたものではなく、解析手法を根本から見直し、
全く新しい『Constant-Q変換』という解析手法で楽曲を解析するものです。
BEATWIZが生まれて15年、今回実装した全く新しい『Constant-Q変換』とそれに伴う『和音解析』は、
BEATWIZの歴史の中でも、非常に大きな進化です。
従来のBEATWIZとは全く別次元の解析能力を持ったBEATWIZが誕生したと言えるかもしれません。
今回はこの『Constant-Q 変換』という、超強力な新しい魔法の秘密を説明します。
ちょっとだけお付き合いください。
主旋律の楽譜生成(eMUTE)、作ってみたものの・・・
前回(第3回目)で説明したとおり、CEDEC2019で、歌入りの楽曲を入力すると、
歌の部分を分離して、主旋律の楽譜を取り出すeMUTEに関して講演しました。(https://cedil.cesa.or.jp/cedil_sessions/view/2048)
ところが、すでにCEDEC2019の講演の時点で、このeMUTEという解析システムには、
複数の大きな問題があることが分かってきたのです。
その問題点とは、以下の 5 点です。
- 聴感上は明瞭に主旋律が聞こえるが楽譜が出てこない
- ギター1 本に弾き語りのような、極めて単純な構成でも、お互いが干渉して楽譜がメチャクチャになる
- 聴きやすさのためにコーラスやディレイをかけた音声の場合、全く太刀打ちできない
- もちろん 2 人以上で歌っている曲は、全く歯が立たない
- 正答率が、ほぼ 0%まで極端に低下する曲の分野がある。
eMUTE の主旋律分析手順は以下のような流れとなっています。
問題点1,2は、上図の緑色で示した『歌声分離フィルター(CVS-HA)』の分離性能の悪さが原因でした。
問題点3,4は、上図のピンク色で示した『音程認識(AMDF)』が単音しか認識できないことが原因でした。
問題点5は、上図の赤色で示した『Post Filter(事後フィルタリング)』での2つの
『① 歌声の音程は瞬間的で大きな変動はない』、
および『② 4分音符で1オクターブを超える音程変動は無視』という仮定が成立しない曲の分野で発生します。
その分野は『ヨーデル』であり、実際『ヨ―デル』の曲で、
ヨーデル独特の歌唱法を使った高速音程切り替えの部分を解析すると、正答率はほぼ0%となります。
さらにeMUTEで実装したパラメーターは20個もあり、そのどれもが(制作をした私には使いやすくても)、
ユーザーの方から見ると複雑怪奇なパラメーターの集合体であり、さらに調整に半日を要するという代物でした。
正答率も平均で60%程度と低く、しかも調整に半日かかるのなら
『耳コピを地道にやったほうが早い』という本末転倒な事象も発生しました。
さらに上記の問題点1-5を解決するような解決策のうち、高速かつ精度の高い方法は当時そう簡単には思いつかず、
八方ふさがりになってしまったのです。
離散フーリエ変換(DFT)の基礎に立ち返る
『困ったときは基本に帰れ』・・・よく言われる格言ですが、
今回、最初から音程解析には使えない、と決めつけていた離散フーリエ変換(DFT)の基礎に立ち返ってみました。
まず、サンプリング周波数44,100HzのCDの波形を、窓幅1,024でフーリエ変換した場合、
以下のように、512個の実数部と、512個の虚数部が出力されます。
512個の周波数領域(周波数ビン)それぞれの、利得(Power)と、位相(Phase)は以下の式で求まります。
この利得の部分だけを、グラフ化したのが、高級オーディオ機器やカーナビなどで見かける『スペクトラムアナライザー』です。
したがってこのスペクトラムアナライザーには、上記右側の位相成分が含まれません。
512個の周波数領域(周波数ビン)それぞれの中央周波数は、以下の表のとおりになります。
ここで重要なのは、このフーリエ変換の周波数分解能は、
サンプリング周波数を窓幅で割ったものであるということです。
(この例の場合は、44,100Hz(サンプリング周波数)/1,024(窓幅)=43.066Hz(周波数分解能))
そこで、以下のように逆に考えてみます・・・。
- サンプリング周波数を窓幅で割ったものが周波数分解能
- スペクトラムアナライザーは周波数分解能の整数倍の倍音の強さが表示される
ならば・・・
求めるべき音階(MIDI のキー番号)に対応する周波数から窓幅を逆算して、
音階ごとに異なる窓幅で利得を計算すると、MIDI のキー番号毎(半音毎)の出力が得られるのではないか。
これこそが、Constant-Q 変換(Constant-Q Transform (CQT))と呼ばれるものです。
Constant-Q 変換の大きな特長
Constant-Q の実装方法、技術的詳細、それと高速化に関しては長くなるので、ここでは省略します。
後述するCEDiLのリンクから、私のCEDEC2020発表原稿がダウンロードできますので、それを参考にしてください。
ここでは、Constant-Q変換を利用した楽曲解析における大きな特徴を1つ説明します。
以下のConstant-Q変換を利用した楽曲解析結果の例は『ドミソ』、
すなわち『Cの3和音(トライアド)』を同時に鳴らした場合の結果です。
まずConstant-Q変換の特徴として、横軸がMIDIのノート番号になっています。
(対数周波数となっています)
さらに、ド(60)、ミ(64)、ソ(67)のところに綺麗に3本のピークが立っていることが分かると思います。
これは、従来のAMDF法では不可能な和音の解析がConstant-Q変換解析では可能ということを示します。
これは、和音解析・フレーズ解析を始めとする各種楽曲解析に対して、物凄く強力な武器となります。
BEATWIZは、Constant-Q変換という、ラスボス並みの強力な威力の魔法を手に入れた、といっても過言ではありません。
Constant-Q 変換を使った和音解析の現状
現在最新のBEATWIZの、Constant-Q 変換を使った楽曲解析(和音解析)には、以下の機能が実装されています。
現在の解析速度は、標準的スペックのWindows PC機で原曲1分あたり0.5秒程度となっています。
一般的な曲なら、おおむね2-3秒以内に解析が終わるでしょう。
今後、さらなる和音精度向上はもちろん、主旋律分離、アーティキュレーション符号の追加など、
さまざまな機能拡張と改良を施していきます。
さいごに
全4回にわたるBEATWIZの機能解説物語はいかがでしたでしょうか?
15年前に『自分の好きな音楽で、音ゲーと楽しみたい』という私の想いから生まれたBEATWIZは、
今ではこのような多種多様な楽曲解析ができるようになりました。
音ゲー制作のみならず、多種多様な音楽に同期した演出にもお使いいただけるツールになったと思います。
また、この進化のほとんどが『盛り上がり度と主人公の踊りを同期させたい』とか
『打楽器の発音位置を知りたい』といった、皆さまの声を反映して実装していったものです。
まさに『皆さまと共に成長してきたBEATWIZ』。
これまでのご支援に感謝いたしますとともに、これからも、暖かく見守っていただければと思います。
BEATWIZのお問い合わせはこちら
参考文献
- CEDEC2019で講演した、eMUTE(楽譜転写エンジン)のフィルタリングの件、およびAMDF法による音程 認識技術の詳細は、 CEDiL(CEDEC Digital Library)(メールアドレス要登録・無料)の、 https://cedil.cesa.or.jp/cedil_sessions/view/2048をご覧ください。
- CEDEC2020で講演した、Constant-Q変換を用いた楽曲解析と和音解析の詳細は、上記と同じくCEDiLの https://cedil.cesa.or.jp/cedil_sessions/view/2331をご覧ください。
- CEDEC 2020 の講演の詳細は、gameindustry.biz(japan edition)さまに、記事として取り上げられました。https://jp.gamesindustry.biz/article/2009/20090201/
- AVWatchさまで、BEATWIZの和音解析機能の詳細に関して記事にしていただいております。次の URL をご参考ください。https://av.watch.impress.co.jp/docs/series/dal/1300658.html