BEATWIZ 機能解説物語 – 第 3 話:俺の歌を聞いてくれ –
こんにちは。事業開発室室長の増野です。
BEATWIZ誕生秘話を解説した、BEATWIZ機能解説物語。
第1話は『手拍子の秘密』、第2話は『楽曲の盛り上がり度とフレーズ解析』に関して、
簡単に説明しました。
前回も少し触れましたが、与えられた楽曲を、『作曲者の意図に、寄り添った単位(MBT)』で見つめなおすと、いままで直観的にしかわからなかった、さまざまな情報が定量的に得られることがわかりました。
今回は、その技術をさらに発展させた・・・
『歌入りの曲』から『歌』と『それ以外の部分』を分離する『ボーカル分離』のお話と、分離された『ボーカル成分』から『主旋律の楽譜』を生成する手法
・・・に関して解説します。
まずボーカル分離を行ったあとに音程解析をして楽譜を生成しています。
俺の歌を聞いてくれ
このコロナ禍の中、多少減りはしたものの、今の都会というのは人の声、車や鉄道の音、
さらには様々な雑音がある場所です。
ところで皆さんは、そんな都会の喧騒の中、一度は以下のような経験をしたことがあるのではないでしょうか?
-
- 都会の雑踏の中でも、自分を呼ぶ人の声は確実に聞こえてくる。
- 騒音の中でも、歌声だけは、楽曲から浮き上がって聞こえてくる。
- 車内のケータイ電話の会話が、耳ざわりである。
- 聞き耳を立てる、耳を澄ます・・・という行為がある。
このように、『人の声』は、単に音のひとつとして考えるには、あまりにも特別な存在です。
そこで、『人の声』のように、人間の耳にとって『周囲と識別しやすい音』というものが存在すると仮定し、その概念を定量化することにより、『ボーカル分離(抽出)』を行うことができるのではないかと考えました。
詳細は割愛しますが、『人の声』には、ある種の『調和性』があり、その『調和性』を計測するために、CVS-HA(Complex Vector Space Harmonic Analysis)(複素空間調和振動解析)という方法を用います。
これは、高速フーリエ変換(FFT)の結果出力時に、従来では捨てられていた『位相成分(Phase)』に着目するという手法です。
この手法を用いると、普通の歌声入りのステレオ音声から比較的良好に、『人の声(V)』と『それ以外の部分(X)』を取り出すことができるようになりました。
BEATWIZでは、この『人の声(V)』と『それ以外の部分(X)』を分離するシステム、
すなわち『ボーカル分離フィルター』を、『VX Splitter』とよび、上図のような画面で実行します。
VX Splitterは、歌入りのステレオ楽曲をリアルタイムで、『人の声(V)』と『それ以外の部分(X)』に分離します。
上の図で『Pass』と書いてあるのが歌入りのステレオ楽曲の元波形、『V』が分離された『人の声』の成分、『X』がそれ以外の成分になります。
一般的な歌入りのステレオ楽曲の場合、『人の声』いわゆる『歌声』は、中央に定位することが多いため、歌声を消すために左チャンネルから右チャンネルを引き算する、いわゆる『L-R法』という方法が用いられることがあります。
このやり方だと、『歌声を消すこと』はできますが、『歌声だけ残す』ことはできません。
さらに『歌声が消された』成分は、モノラル信号になってしまいます。
VX Splitterを使うことにより、『人の声(V)』だけの成分を得ることができ、さらにV, Xの両方の成分をステレオ信号で得ることができます。
また、VX Splitterは、リアルタイムで、音楽全体に対する『人の声(V)』の比率も計算できます。
上図は、ある瞬間のVX Splitterの動作状態を示したものですが、この瞬間の音楽全体に対する『人の声(V)』の比率は77.46%、それ以外は22.54%であることがわかります。
音の高さ(音程)を認識する技術(AMDF法)
前章で説明した『ボーカル分離フィルター(VX Splitter)』を使うことで、『歌声』を分離することはできました。
分離した『歌声』の音程を計測するためには、『高速フーリエ変換(FFT)』とは全く異なる原理の『AMDF法(Average Magnitude Difference Function)』という方法を使います。
その前に、人の声の音域、いわゆる『声域』は、どの程度の範囲なのか考えてみましょう。
一般的なおしゃべりの場合、男性は120~200Hz、女性は200~300Hzと言われています。
歌声の場合、一般人の場合の声域は2オクターブと言われており、以下の表のようになります。
(括弧で括った記号は、音階名(国際式)です)
一般人に限定すれば80Hz~1,000Hz(1KHz)まで測定できれば十分ですが、プロの歌手の方は、80Hz以下、1KHz以上出る方がいらっしゃいます。
ファルセット(裏声)を使いこなす方は、より高い周波数まで歌うことができます。
そこで、『歌声』の測定範囲として、65Hz(C2)~4KHz(B7)を設定しました。
ここからは、音程測定に用いる『AMDF法』をちょっと説明します。
これは私が『イ』と発音したときの波形ですが、赤い丸で囲った特徴的な波形が約7.5ミリ秒(0.0075秒)ごとに表れているのが分かると思います。
この7.5ミリ秒を周波数に直すと1秒/0.0075秒=133.33Hzとなります。
これが『基本周波数』と呼ばれるものです。
133.33HzはC3(131.41Hz)と大体同じなので、この声の音程はC3(ド)ということがわかります。
この『基本周波数』を『AMDF法』で求めるやり方が、以下のとおりです。
-
- 同一波形を2つのバッファに蓄積する。
- 片方のバッファの波形を1サンプルずつ後ろにずらしながら、元の波形との差分を計算していく。
- 1周期分波形が動いたところで波形が重なるため差分が最小になる。
- ずらした波形のサンプル量が1周期分の長さとなるので、サンプリング周波数(44.1KHz=44,100Hz)をつかって周期の長さ(時間)を計算する。(この例の場合、赤い矢印の長さが331サンプルなので、331/44,100=0.0075056秒)
- 周期の逆数が基本周波数となる。(1/0.0075056=133.233Hz)
もちろんこれだけでは、うまく音程が計測されない場合が多いので、以下の図のように、音程計測部の前後に強力なフィルターを導入することにしました。(フィルターの詳細は長くなるので割愛します)
これにより、『歌入りの楽曲』から『歌声』を分離し、その『音程』を得ることができました。
これを楽譜描画処理と組み合わせると、『歌入りの楽曲を入力するだけで』、以下のような主旋律の楽譜をリアルタイムで出力することができます。
この歌入りの曲から主旋律部分の楽譜を出力する処理、すなわちBEATWIZに実装された『楽譜転写エンジン』のことを『eMUTE(Emotional MUsic Transcription Engine)』と呼びます。
次回予告
ついに『楽曲の主旋律の楽譜』の出力までできるようになったBEATWIZ。
ところが、研究を進めていくと、どうしても上手くいかない楽曲が数多く存在することがわかってきました。
全3話の予定でしたが、おまけの4話目として、
CEDEC 2020でも講演しました『Constant-Q変換を用いた和音解析』、さらに、このConstant-Q変換を利用した高精度な『フレーズ解析』『主旋律の楽譜出力』に関して、CEDEC講演のレビューも含めて解説します。
お楽しみに。
eMUTE(楽譜転写エンジン)のフィルタリングの件、およびAMDF法による音程認識技術の詳細は、 CEDiL(CEDEC Digital Library)(メールアドレス要登録・無料)の、
https://cedil.cesa.or.jp/cedil_sessions/view/2048 をご覧ください。