AIで歌声を解析! 幾田りらのような透き通る歌声を持つシンガーを探せ!! (1)
初めに
「夜に駆ける」以来のYOASOBIのファンとしてIKURAこと幾多りらの透き通るような透明感のある歌声に魅了されています。また力強いAdoの歌声も大好きです。
Geminiにそれぞれの歌声について聞いてみると、幾田りらは「透き通るような高音が魅力。心を癒し、元気づけてくれる。歌詞の世界観を繊細に表現する力も持ち合わせている」、Adoは「力強く伸びやかな歌声が特徴。心を揺さぶり、感動を与えてくれる。歌詞のメッセージ性を力強く伝える力も持ち合わせている」と評していました。幾多りらの透明感とAdoの力強さには多くの人が共感しているようです。
そこで、幾田りらさんのような透明感のあるシンガーを見つけるために、YOASOBIを含む幾田りらの曲とAdoの曲からボーカルの音響を抽出して、2値分類の機械学習モデルを作成しました。
この学習モデルを使って、YouTubeチャートの ”世界で人気の曲トップ100” (2024年5月3日)から新たな透明感のあるシンガーの発掘を試してみました。
機械学習モデルの作成方法
YOASOBIと幾多りらの曲とAdoの曲をそれぞれ20〜30曲程度をmp3ファイルで保存
ボーカル音響を分離
20次元のMFCCスペクトルの時間平均を算出し、判別に有用な10個の次元を特徴量として選択して2値分類モデルを作成
Linear Discriminant Analysis(ida)によるモデルで総ての指標が1.0となり、幾多りらとAdoを100%判別することができました。
2値分類モデルですので、他のシンガーに対しては、IKURAタイプ(透明感のある)とAdoタイプ(力強い)、IKURAタイプの判別prediction scoreに閾値を設定して他のタイプと3タイプに判別することができます。
YouTubeチャートの ”世界で人気の曲トップ100” からIKURAタイプの透明感のあるシンガーを学習モデルで探してみた
ボーカル音響を分析できた87曲から、IKURAタイプのprediction score の閾値を0.95に設定して学習モデルで判別させて、以下の3名のシンガーの曲を選択することができました。いずれも透き通るような美しい歌声です。順位は2024年5月3日のチャートのものです。prediction score は予測確率を示ししています。
16位:Ariana Grande - we can't be friends (wait for your love)
prediction score :0.982
グラミー賞を2度受賞しています。
このMVは1ヶ月前に公開されて、視聴数は8千万回を超えています。
50位:Sabrina Carpenter - Espresso
prediction score: 0.975
今年2024年4月の米国最大級のCoachella フェスに出演していました。このMVは3週間前に公開されて、視聴数は1千8百万回を超えています。
96位:Alan Walker - Faded
prediction score: 0.964
タイトルのAlan Walkerはコンポーザーでボーカルは Iselin Solheim です。ノルウェーのシンガーで、ここで初めて見つけられました。このMVは8年前に公開されて視聴数は36億回を超えています。凄いですね。
Iselin SolheimのYouTubeチャンネルはこちらです
あとがき
今までに500曲以上を分析していますが、IKURAタイプに分類されたのはわずかに5%ぐらいで、貴重な声質のようです。面白いのは男性ボーカルでもIKURAタイプが見つかってきています。この学習モデルで見つかってくるシンガーの歌声はいずれも結構気に入っています。
YouTubeや他の音楽系サブスクでのおすすめはイマイチで融通がきかないので、このような学習モデルを幾つか揃えるとパーソナルに新たなミュージシャンや楽曲の発掘が期待できそうです。
参考: 2値機械学習モデルの作成と判別のプログラミングに使用した開発環境とPythonのライブラリ
使用したPythonのコードはぼちぼちQiitaに公開していこうかなと思っています。Pythonの知識があれば、ここに記したライブラリを検索すればコーディングは難しくはありません。
開発環境: Google Colab Pro
ランタイムのタイプはCPUのハイメモリで使用。約50GBのメモリ容量を確保できます。
楽曲ファイルからのボーカル音響の分離: spleeter
ライブラリspleeterを使用。ボーカルと他の楽器音響を分離する2stemで。ボーカルの分離はかなり良好です。
1曲の分離で1GBほどメモリ容量を占有して、連続して分離してゆくとリークしているようでメモリを消費してしまい、40曲ほどでクラッシュします。メモリの開放を検討していますが、良い方法が見つからず、セッションを再起動して使っています。
ボーカル音響の特徴量の抽出: Librosa
Librosaは音響解析ではとても有用なライブラリです。2値分類のための特徴量の抽出にはMFCCを20次元で算出して、最初の次元は直交成分のパワースペクトルなので削除して残りの次元で2値分類に有用な特徴量を10次元ほど選択して使っています。各次元の値の大きさがかなり違うので正規化してから機械学習に供しました。
2値分類機械学習モデルの作成: Pycaret
Pycaretは機械学習モデルを網羅的に検討するには非常に便利なライブラリです。15種類の2値分類機械学習モデルを2行のコードで検討してくれます。
YouTube再生リストの情報取得: YouTube Data API v3
事前にGoogle Cloud Platform (GCP) でAPIキーを取得しておきます。
再生リストの各動画のurl、id, チャンネル、タイトル、視聴数、いいね数などを取得できます。
コードは下記Qiitaに公開しています。
この記事が気に入ったらサポートをしてみませんか?