ニューラルネットワークによるBPM推定における学習データ作成の検討

東京電機大学 工学部 情報通信工学科

ネットワークシステム研究室

指導教員 坂本直志教授

学籍番号 15EC036

氏名 柿崎智弘


目次

1. はじめに
2. 事前準備
2.1 ニューラルネットワーク
2.2 畳み込みニューラルネットワーク
2.3 短時間フーリエ変換
2.4 GPGPU
2.5 MIDI
3. 関連研究
4. 実験
4.1 目的
4.2 ネットワーク
4.3 学習データ
4.4 ニューラルネットワークの学習
5. 評価
5.1 検証データ
5.2 分類結果
6. 考察
7. まとめ
8. 参考文献
付録A 学習精度
付録B 正解BPMと予測BPM表
付録C プログラムコード
config.py
save_spec.py
network.py
load_model.py
use.py

1. はじめに

 画像分野での深層学習(Deep Learning)の発展は目覚ましい。ILSVRC(The Imagenet Large Scale Visual Recognization Challenge)という画像認識の競技会が存在する。2012年のILSVRCで深層学習を用いた手法が他の手法の精度を10%以上引き離して勝利した。2017年時点で1,000種類の画像を分類した時の精度は97.7% [1]となっている。

 深層学習を行うためには膨大なデータ量が必要となる。ILSVRCでは学習、検証のための画像データが用意されるが、学習時に用いる画像数は100万を超える。しかし、音楽の分野ではまとまったデータを収集することが難しい。問題の一つとして挙げられるのは著作権問題である。学習のために音楽データを収集しても、そのデータを第三者に公開する行為は著作権侵害と見做される。そのため、研究者は各々でデータを収集する必要が生じる。同一規格のデータを大量に収集することは難しいため、実験の再現性が低下してしまうと考えられる。

 音楽認識分野の特徴として、まず音楽のジャンル認識が挙げられる。音楽はその使用楽器や演奏構成、リズムの取り方などの要素に応じて細分化される。しかしジャンルの定義は非常に曖昧であり、文化や地域、時代背景などの外的要因の影響が多分に含まれる。そのため、楽曲だけの情報からでは精度が上がらないと考えられる。一方で、音楽の要素の中でもテンポは単純な要素である。テンポは音楽の速度である。古典音楽ではAllegro(快速に)やAdagio(ゆるやかに)といった表記がなされ、その明確な速度は定義されていない。近年の音楽ではBPM(Beat Per Minute)という単位が用いられる。BPMとは、1分間に入る拍数で定義される。音楽のテンポをDeep Learningで学習する際、実楽曲から学習するのは効率的であると言えるのか。テンポは単純な要素であるため、テンポの情報をもったデータを自作することにより学習できる可能性について考える。

 本研究では楽曲のテンポ(BPM)を判別する。Deep Learningを行うための学習データとして、独自に作成したデータを用いて学習を行い、実際の楽曲を用いてネットワークの評価を行う。

2. 事前準備

2.1 ニューラルネットワーク

 ニューラルネットワークとは、機械学習モデルの一種であり、動物の神経細胞であるニューロンをモデル化したものにより構成されたネットワークである。図1にニューロンの例を示す。

図1 ニューロン例
図1 ニューロン例

 この時、入力それぞれが内部に持っている重みwの値とバイアスbをニューロンに入力し、yを出力する。出力される値yを求める式を以下に示す。

式1

ここで、fは活性化関数と呼ばれる非線形の関数である。本研究ではRectified Linear Unit(ReLU)と呼ばれる関数を用いる。ReLUでは入力された値が0未満の時に0になり、1以上の時に入力をそのまま出力する。ReLUの式を以下に示す。

式2

 図1に示したニューロンの出力を別のニューロンの入力となるように、多層に組み合わせたものをニューラルネットワークと呼ぶ。 図2にニューラルネットワークの例を示す。

図2 ニューラルネットワーク例
図2 ニューラルネットワーク例

 ニューラルネットワークには入力層、隠れ層、出力層の3層が存在する。この内、隠れ層が多層であるものを深層ニューラルネットワークと呼ぶ。入力層から隠れ層への計算は以下のようにされる。

式3
式4

zjは前の層の入力の和に活性化関数を掛けたものである。このような計算を行う層を全結合層と呼ぶ。また、入力側から出力側に情報を伝搬させることを順伝播と呼ぶ。

 ニューラルネットワークでは、出力層で望む結果が出るように重みやバイアスなどのパラメータを更新し、ネットワークを最適化する必要がある。このパラメータの更新を学習と呼び、深層ニューラルネットワークを学習する方法を深層学習と呼ぶ。ニューラルネットワークを学習させる際に用いられるアルゴリズムは誤差逆伝播法(バックプロパゲーション)が存在する。本研究では入力をソフトマックス関数に通し、交差エントロピー誤差関数を用いて誤差逆伝播法を行う。まず、ソフトマックス関数の式を以下に示す。

式5

ここで、xiは出力層のi番目のノードの出力、Nは出力層のノード数を示す。指数関数eで入力される値を正の値に変換し、入力されるyiをすべてのノードの入力で割ることで確率に変換できる。ソフトマックス関数の勾配を次の式のように計算する。

式6

 次に、交差エントロピー誤差関数について説明する。交差エントロピー誤差関数は、出力が確率分布であるときに使用される。出力された確率分布と、実際の確率分布との距離を表す。以下に交差エントロピー誤差関数の式を示す。

式7

tiは教師データと呼ばれるネットワークに与えられる答えであり、教師データと出力データを近づけるようにネットワークを学習させる必要がある。また、誤差関数によって得られた値Eは単に損失とも呼ばれる。入力データに対してtiのような教師データが与えられる学習は教師あり学習と呼ばれる。この時、与える教師データを具体的な数値とした場合を回帰、データが属するクラスにした場合を分類と呼ぶ。回帰では、入力された過去のデータを基に次の値を予測する目的で使われる。分類では入力されたデータが、与えられたクラス中のどれに属するかを判別する目的で使われる。

 ニューラルネットワークの学習には膨大な学習用データが必要となる。学習用のデータがN個あるときに、ランダムなn(≦N)個のデータを作成して学習を行う手法がある。これをミニバッチ学習と呼ぶ。ミニバッチ学習を行うときの損失を示す。

式8

この時に作成されるn個のデータをミニバッチと呼ぶ。また、全データN個に対して学習を行う回数をエポックと呼ぶ。

 誤差関数を用いた重みwとバイアスbの更新は以下のように行う。

式9
式10

ここで、εは学習率を表し、ネットワークのパラメータの更新速度を制御することができる。lは学習のステップを示す。損失を導き、その損失からネットワークのパラメータを更新する手法を誤差逆伝播法と呼ぶ。

2.2 畳み込みニューラルネットワーク

 畳み込みニューラルネットワークは、隠れ層に畳み込み層やプーリング層などの特徴的な機能を持った層を積み上げることで構成される。

 畳み込み層では、畳み込み計算を行い、結果を次の層へ出力する。畳み込み計算は、入力画像にフィルタを重ね、フィルタと同じ位置の値を乗算し、乗算した結果の総和を求めるものである。この時のフィルタをカーネルと呼ぶ。カーネルサイズをm,nとすると畳み込みは以下の式で表せる。

式11

ここで、wはカーネルを、bはバイアスを表している。カーネルの出力を一部無視することで出力aijのサイズを制御することができる。この制御をストライドと呼ぶ。ストライドが1の時はすべてを出力、ストライドが2の時はインデックスを1つ飛ばしで出力、ストライドが3の時はインデックスを2つ飛ばしで出力する。

2.3 短時間フーリエ変換

 ニューラルネットワークにデータを読み込ませる際、効率よく学習を行うためにデータに処理を加える必要がある。この処理を前処理と呼ぶ。本実験では音楽データを短時間フーリエ変換したものを入力として用いるため、短時間フーリエ変換について簡単に説明する。短時間フーリエ変換(Short-Time Fourier Transform:STFT)は信号処理手法の一つで、時間変化する信号の周波数と位相の変化を解析するために使われる。

 まず、音楽信号をデジタルデータに変換してコンピュータで扱うためにサンプルを取る必要がある。これをサンプリングと呼ぶ。一般的に、音楽CDは1秒当たり44,100点のサンプリングを行う。サンプリングの単位はHzが使われ、44,100/秒の場合はサンプリング周波数44.1kHzと記載される。

 次に離散フーリエ変換(Discrete Fourier Transform:DFT)について説明する。離散フーリエ変換とは、フーリエ解析の一つである。N点で構成された信号をx(n)とする。この時、離散的な周波数上において、N点信号x(n)は様々な周波数の複素指数関数の組み合わせによって構成されていることを以下の式で表せる。

式12

ここで、kは離散周波数のインデックスを表す。

 x(t)を離散時間信号とする。x(t)を短時間の時間区分に分割し、0<t<N-1だけで0でない値をもち、この外では0となるような関数w(t)をx(t)に乗じる。w(t)は窓関数と呼ばれる。STFTでは

式13

のように、窓関数をmSだけシフトして乗じることにより、離散信号x(t)のmS≦t≦(mS+N-1)部分を切り出し、切り出した区間の先頭に時間原点を移動した有限調信号を定義する。この切り出された時間区間をフレームと呼ぶ。mは時間フレームのインデックス、Sはフレームシフト量、Nはフレーム長を表す。分割された時間信号に離散フーリエ変換を適用することにより、短時間フーリエ変換が定義される。以下にSTFTの式を示す。

式14

ここで、x(n)は時刻nの入力信号、w(n)は窓関数を表す。

 分割された時間信号の変換結果が解析した時間の全周波数成分のグラフとなるため、周波数を縦軸として時系列順に並べる。これをスペクトログラムと呼び、本研究でのニューラルネットワークの入力とする。

2.4 GPGPU

 深層学習は膨大な量の計算処理を必要とする。一般的なコンピュータに内蔵されている演算装置、CPU(Central Processing Unit)は汎用的な計算を行っているため、学習に時間がかかることがある。この計算を高速化する方法として、GPU(Graphics Processing Unit)と呼ばれる演算装置を利用する方法がある。GPUとは、リアルタイムの画像処理に特化した演算装置やプロセッサのことを示す。3次元のグラフィックを描画するためには、大量の計算を高速で行うことが要求される。その計算速度を画像処理外の目的に応用する技術をGPGPU(General-Purpose Computing on Graphics Processing Units)と呼ぶ。本研究ではニューラルネットワークの学習にGPUを利用する。

2.5 MIDI

 Musical Instrument Digital Interface(MIDI)は楽曲の演奏の情報を電子データとして伝達するための規格である。MIDIのデータは音声そのものでなく、音色やテンポを定めた演奏情報のみが保存される。

3. 関連研究

 ニューラルネットワークを用いてテンポを推定する試みとして、Schreiberらの研究 [2]が挙げられる。Schreiberらの研究では、単一のディープニューラルネットワークのみで抜粋個所のテンポを推定するCNNベースのアプローチを行った。入力にはメルスペクトログラムと呼ばれる特徴量を用いる。これは、周波数軸を線形ではなく、メル尺度と呼ばれるもので表現したスペクトログラムである。これにより、周波数軸を人間の知覚に近づけることができる。また、音楽のテンポは瞬間的な量ではないため、解析のために十分な長さが必要である。Schreiberらは11.9秒のメルスケールスペクトログラムを選択した。出力は256個のノードを用意し、30-285BMまでのテンポを整数で推定する。ネットワークを図3に示す。

図3 Schreiberらの提案したネットワーク [2]
図3 Schreiberらの提案したネットワーク [2]

まず、周期性を解析するための層として、最初に3つの畳み込み層で入力を処理する。このフィルタは1×5の短いフィルタであり、信号のオンセットを一致させることを目的としている。畳み込み層、平均プーリング層、異なるフィルタ長を持つ並列畳み込み層から構成される、4つのマルチフィルタモジュールが続く。平均プーリング層とは、入力を四角形の領域に分割し、各領域の平均値を計算する層である。マルチフィルタモジュールを図4に示す。

図4 マルチフィルタモジュール [2]
図4 マルチフィルタモジュール [2]

このモジュールは、長い時間依存性を検出することを目標としている。 最後の全結合層は、畳み込み層によって提供される特徴を分類するための層である。

 この研究では訓練データの増強を行うために、画像認識システムに用いられるスケールアンドクロップアプローチを適用する。スケールアンドクロップアプローチとは、入力する画像を拡大、縮小した後に、リサイズした画像からランダムに切り出した画像を入力として使用する手法である。Schreiberらは、スプライン補完を使用し、ランダムに選択された係数でメルスペクトログラムの時間軸のみをスケーリングし、それに応じて正解ラベルを調整した。学習に使用した楽曲数は8,596トラックであるが、スケールアンドクロップアプローチによって増強されたデータ数は明示されていない。

4. 実験

4.1 目的

 本研究の目的は、自作した音楽データを用いて畳み込みニューラルネットワークの学習を行い、音楽のテンポ(BPM)を検出することである。ニューラルネットワークの学習が完了した後、ニューラルネットワークに実際の楽曲を入力し、その精度を確認することで評価を行う。

4.2 ネットワーク

 実験で使用するネットワークは畳み込み3層、全結合3層である。出力層は先行研究に倣い、30BPMから285BPMまでを分類するために256層にした。畳み込み層のカーネルサイズは3×3、ストライドは3、活性化関数はReLUである。全結合層のノード数は2048, 1024, 256であり、活性化関数はReLUである。出力層にソフトマックス関数を通した後に、交差エントロピー誤差関数を用い、その時の損失から誤差逆伝播法で学習を行う。入力はSTFT解析で得られるスペクトログラム配列を画像データとして入力する。図5に作成したネットワークを示す。

図5 使用する畳み込みニューラルネットワーク
図5 使用する畳み込みニューラルネットワーク

4.3 学習データ

 学習のためのデータを作成する。作成したデータは、30秒間メトロノームのように指定したテンポで音を発生させる音楽データである。またネットワークに分類を行わせるため、30BPMから285BPMまでのデータをそれぞれ作成する。まず、MIDIで楽曲情報を記述する。記述にはpythonのライブラリであるpretty_midi [3]を使用する。以下にpretty_midiでの記述例を示す。

    note = pretty_midi.Note(velocity=100, pitch=note_number, start=start_time, end=start_time+end_time)
    

velocityは音量、pitchは音の高さ、startは音の発生時刻、endは音の終了時刻を表す引数である。また、この時の発生時刻の単位は秒である。このnoteを積み重ねることで演奏情報が記録される。120BPMの楽曲を作成する場合の例を示す。最初のstartを0、endを0.5と記述する。その後、end_timeが30秒に達するまでstart = [ひとつ前のstart] + [end]としてnoteの更新を繰り返す。これにより、30秒まで0.5秒間隔で音を発生させる演奏情報をMIDIで記述できる。

 pitchの引数を変更することにより、音の高さを変更できる。C2からB7までのピアノでいう白鍵の音に対してデータを作成する。これにより、35個のデータを作成する。

 楽器情報をMIDIの規格に即した128個種類に変更できるため、MIDIに規定されている頭8種類の楽器、 Acoustic Grand Piano, Bright Acoustic Piano, Electric Grand Piano ,Honky-tonk Piano ,Electric Piano 1 ,Electric Piano 2 ,Harpsichord ,Claviについてデータを作成する。

 音の高さを変更したデータに対し、楽器の変更を施す。作成された音の高さを変更した35個のデータ一つ一つに8種類の楽器情報を適用する。これにより、280個のデータを作成する。また、テンポを30BPMから285BPMまで変更したデータを作成するため、合計71,680個のデータを作成する。

 作成した楽曲情報を音楽データとして生成する必要がある。音楽データの生成には、FluidSynth [4]というオープンソースの音楽生成ソフトウェアをpythonで使用可能なpyFluidSynth [5]というライブラリ使用する。作成した71,680個のデータに対してpyFluidSynthを使用し、楽曲情報を音楽データに変換する。この時、サンプリング周波数はFluidSynthの規定により44.1kHzにする必要がある。

 変換したデータをwavという拡張子の音楽ファイルに変換する。wavファイルの生成にはSoundFile [6]というpythonのライブラリを使用する。

 作成されたwavファイルのサンプリング周波数44.1kHzではサンプリング数が多く、ネットワークの学習が遅くなるため、16kHzにサンプリングし直す。STFTの解析は、フレーム長1024、フレームのシフト量512とし、1024フレームの正規化されたSTFT配列を作成する。ここでの1024フレームは32.8秒となる。wavファイルのリサンプリングとSTFT解析はpythonのライブラリであるLibROSA [7]を使用する。

 以上の手順で71,680個のデータのSTFT配列を作成する。ニューラルネットワークへの入力はSTFT配列を画像データとして入力する。ニューラルネットワークの学習には、学習用データ、確認用データ、検証用データの3種類のデータが必要である。学習用データはニューラルネットワークのパラメータの更新に用いる。確認用データはニューラルネットワークの学習中の精度を確認するために用いられる。確認用のデータではネットワークのパラメータ更新は行われない。検証用データは学習のために用意したものとは独立した、未知のデータを入力した際のネットワークの評価を行うために用いられる。本実験では作成した71,680個のデータを8:2に分割し、57,344個を学習データ、14,336個を確認用データとして使用する。検証用のデータには、実際の楽曲を入力とする。

4.4 ニューラルネットワークの学習

 エポック数50、バッチ数128で学習を行う。学習にかかった時間はGeForce GTX TITANというGPUを使用して約6時間である。学習した結果を図6に示す。図6の詳細な精度は付録Aに付記する。

 学習用データに対する精度と確認用データに対する精度はともに、30epoch程度までほぼ0%であるが、33エポックから41エポック間で90%程度まで上昇させていることがわかる。それ以降は上昇幅が緩やかになり、学習用データに対する精度は約100%、確認用データに対する精度は約97%となった。

図6 ネットワークの学習曲線
図6 ネットワークの学習曲線

5. 評価

5.1 検証データ

 検証にはGiantSteps+ EDM Key Dataset [8](以降GS+と記載)を使用する。GS+では600曲のEDM(Electronic Dance Music)と呼ばれるジャンルの音楽が含まれている。テンポの情報はBPM値を修正する人々のフォーラム [9]によって手動で与えられたものである。テンポの情報が含まれている楽曲は600曲の内527曲である。図7にGS+データセットのBPM分布を示す。118BPMから141BPM間に446曲の楽曲があることがわかる。また30BPMから61BPM、190BPMから285BPM間の楽曲は0である。

図7 GS+データセットのBPM分布
図7 GS+データセットのBPM分布

5.2 分類結果

 ネットワークにGS+データセットの音楽を入力して出力された予測値と正解値を比較する。精度の評価にはAccuracy0, Accuraacy1, Accuracy2を使用する。Accuracy0は正解とされる値と予測された値が一致した割合である。Accuracy1は正解とされる値に対して4%の誤差を許容した場合を基準値とし、予測値が基準値に収まっている割合である。Accuracy2はAccuracy1に加え、正解とされる値の1/2倍, 1/3倍, 2倍, 3倍の値を許容した場合を基準値とし、予測値が基準値に収まっている割合である。Accuracy0は7.21%、 Accuracy1は10.4%、 Accuuracy2は14.4%であった。出力した予測BPMの分布を図8に示す。206BPMから213BPMの間を予測した数が149件と最も多いことがわかる。また、78BPMから85BPMの間を予測した数も53件と多い。図7より、入力した楽曲は30BPMから85BPM、142BPMから285BPMまでのデータ数はほぼ0である。それに対して、ネットワークの出力は142以上のBPMと予測していることが多い。ネットワークの全予測値は付録Bに付記する。

図8 予測BPMの分布
図8 予測BPMの分布

 誤差を考慮したネットワーク出力の分布を図9に示す。誤差は以下の式より導いた。

式15

 最も多いのは誤差0%の42件である。次いで誤差100%が多く、19件である。件数が10件を超えているものはそれぞれ誤差64%、62.5%、50%、33.6%である。それ以外の誤差では0%から170%程度まで10件以下の出力が疎らに得られた。

図9 誤差を考慮したネットワークの出力分布
図9 誤差を考慮したネットワークの出力分布

6. 考察

 学習したネットワークは自作データに対しては100%に近い精度となり、実楽曲に対しては約7%~14%程度の精度となった。このように精度に差が出た原因として、自作したデータが単純であったことが考えられる。自作したデータにノイズを加算する、自作データの頭に無音の時間を挿入して音の発生始めのタイミングをずらす等、自作データをより複雑にすることが必要であると考えられる。

 予測件数の分布を見る。図9では誤差100%の件数が誤差0%に次いで多い。誤差100%とは正解BPMの2倍の値を予測したことを示す。原因として、正解値の2倍のBPMが正解値と等倍のBPMと似た特徴を持っているためにネットワークが誤認識した可能性がある。例えば、120BPMが正解値だとすると、拍は0.5秒に一回の間隔である。120BPMの2倍の値である、240BPMの拍は0.25秒に一回の間隔である。120BPMと240BPMでは0.5秒ごとに拍の周期が被るため、ネットワークが速い方のテンポであると誤認識をした上で分類した可能性がある。そのため、特に目立った2倍のBPMを出力した楽曲については再度ネットワークに入力し、予測した他のクラスの確率について調査をする必要があると考えられる。

7. まとめ

 本研究では、自作した音楽データによりニューラルネットワークの学習を行うことで、一般的な楽曲のBPMを識別した。ネットワークの精度は自作したデータに対して約97%、実楽曲に対して約7%~14%程度となった。今後の課題として、自作データと実楽曲の精度差を小さくできるように、より複雑な自作データを作成することを検討したい。

8. 参考文献

  1. “Large Scale Visual Recognition Challenge (ILSVRC) 2017,” Stanford Vision Lab, Stanford University, Princeton University, 2017. [オンライン]. Available: http://image-net.org/challenges/talks_2017/ILSVRC2017_overview.pdf.
  2. M. M. Hendrik Schreiber, “A Single-Step Approach to Musical Tempo Estimation Using a Convolutional Neural Network,” Proceedings of the 19th International Society for Music Information Retrieval Conference (ISMIR), 2018.
  3. D. P. W. E. Colin Raffel, “ Intuitive Analysis, Creation and Manipulation of MIDI Data with pretty_midi. In 15th International Conference on Music Information Retrieval Late Breaking and Demo Papers,” 2014.
  4. “FluidSynth | Software synthesizer based on the SoundFont 2 specifications,” 23 2 2019. [オンライン]. Available: http://www.fluidsynth.org/.
  5. N. Whitehead, “GitHub - nwhitehead/pyfluidsynth: Python bindings for FluidSynth,” 18 12 2018. [オンライン]. Available: https://github.com/nwhitehead/pyfluidsynth.
  6. B. Bechtold, “PySoundFile - PySoundFile 0.9.0 documentation,” 2 11 2017. [オンライン]. Available: https://pypi.org/project/SoundFile/.
  7. B. C. R. D. L. D. P. E. M. M. E. B. a. O. N. McFee, “librosa: Audio and music signal analysis in python,” 著: In Proceedings of the 14th python in science conference, 2015.
  8. A. Faraldo, “ GiantSteps+ EDM Key Dataset (Version +) [Data set],” 21 12 2017. [オンライン]. Available: http://doi.org/10.5281/zenodo.1095691.
  9. P. F. A. H. P. V. R. B. S. H. F. L. G. M. Knees, “Two Datasets for Tempo Estimation and Key Detection in Electronic Dance Music Annotated from User Corrections,” 著: Proceedings of the 16th International Society for Music Information Retrieval Conference, 2015.
  10. S. Saito, “Chainer v4 ビギナー向けチュートリアル,” 20 9 2018. [オンライン]. Available: https://qiita.com/mitmul/items/1e35fba085eb07a92560.
  11. Preferred Networks, inc. and Preferred Infrastructure, inc., “https://chainer.org/,” [オンライン]. Available: https://docs.chainer.org/en/stable/index.html.

付録A 学習精度

 4章でネットワークの学習を行った際の学習用データに対する精度と確認用データに対する精度の詳細を表1に示す。

表1 学習時の精度

epoch学習用データに対する精度確認用データに対する精度
10.0038539340.00390625
20.0047258650.00390625
30.0048130580.004045759
40.0050048830.004115514
50.0052839010.003766741
60.0054582870.004185268
70.0058419360.004185268
80.0055629190.004185268
90.0056326730.004743304
100.005545480.004673549
110.0061383930.004115514
120.0060337610.003976005
130.0061383930.004394531
140.0060686390.003836496
150.005789620.004115514
160.0067487440.00453404
170.0066964290.003766741
180.0061035160.004045759
190.0068882530.004952567
200.0065743580.006905692
210.0089983260.007393973
220.008196150.00718471
230.0103934160.00906808
240.0107596270.010184152
250.0099225720.010672433
260.0108991350.008858817
270.0121721540.00390625
280.0123116630.013671875
290.0160958430.011439732
300.0203159880.01876395
310.0286167690.025599888
320.0406319760.051827569
330.0635114390.078613281
340.1112060550.145996094
350.2090890110.276227683
360.3509347140.401506692
370.4665178660.536132813
380.6137346630.681849897
390.7789829970.772879481
400.8762555720.879324794
410.9183174970.903250575
420.9429931640.913434684
430.9577288030.943917394
440.9672328230.941127241
450.9752894640.945731044
460.98099190.954101563
470.9856654410.9598912
480.9890660050.961425781
490.9912458060.960867763
500.9929199220.966727138

付録B 正解BPMと予測BPM表

 表2にGS+データセットに割り振られている音楽ID、正解値、予測値を示す。表2はGS+データセットの600曲の内BPM情報が含まれる527曲に対しての結果を示している。

表2 GS+データセットに対する予測と正解

ID正解BPM予測BPM
3424038116207
97513812484
883724125125
3668409139208
4021075130240
4167325128251
4920936124124
4048367134207
4758620150150
4453556136245
200797712880
307676812088
2081732124207
1650933120180
14060312583
5078640113260
5120298125207
1864037128155
3686302132211
5264038140278
3014118128224
1611446136281
3757006124270
3033991123123
5049808128211
3228698128207
4666417140206
4231980121141
4325645126271
4657878148205
3383171128236
1771577128265
4364668130210
1161234125125
4983645128208
1706844127210
4927724123196
5431709117285
582991125126
4284574127272
385833112485
1056896130210
4125044130219
1984204125249
3232851125271
369622612484
634032129129
3395666123185
4540971130207
4049579127208
4815758123194
4206954128208
3687442121209
5005412125125
1234751123207
3963180120120
1074548175209
4957129120202
2018991122137
329834469173
140630912088
4452122132132
3389317128160
5026646138208
175707112088
1950170118254
1856889126207
5039016128202
3272873128210
4191993128208
4802314128254
4104235128272
341832132275
363385211098
1809174125125
3354212128129
4325646128240
4093657130103
179202612286
244019313571
1549964120208
2673157120208
484600712091
197891712386
667508125167
3137686128208
3257231130278
61415138208
148677012781
504826311097
3317232128189
1927655125250
2059625124205
3415063125125
485765012894
3334441128105
5362946128210
5035524100176
2435861127249
1092676128194
3402886140137
4485436128210
3519499130214
4440292140208
316577012682
4359736128186
418698212782
3426285118212
4898445140197
1356281128207
131630812663
2725289175175
2006103118208
4498388110215
3116329170209
839886127163
2049680120179
4328388135207
3095708102105
1949099140280
3753635113274
1004923125271
4234612132219
3518921121214
1198688127208
3571314121190
110563212663
611797135209
1161249124123
4476610121269
796860126272
4824580117267
1574723126269
3995054109258
3958755128208
272788123251
3233653124207
1763782130129
4371042137208
1991458116196
4153238124208
47262612695
2029598128249
3400782175252
104157412584
3625299140205
1140027126218
992081125125
190450112584
4173942128210
1468437127272
4202763170187
5070608128208
877345128250
4877006140273
4014749120145
4950604128208
3930672117117
4983728120120
208158138276
3402888129208
357481593281
2673252128202
1850984122244
3813682144279
3387619117117
4609349140210
483415611692
486380612881
149415912584
3740062138190
1009960123132
3638836120120
10089150236
3533956124175
4934251125205
682724126127
3695262122210
1234670175155
2725290175210
74982140200
119472012880
352440812088
5048249140241
4450726138207
125759384122
2047796170208
2436729128211
3958396132279
92339712583
3701975120209
120602512682
2448121128205
1007941130216
2666332121121
3958397130143
2053495125125
4505122128272
4981539125204
364116612385
3938837108208
1803909126252
423054128199
4086909128129
3070298132184
3836490122208
511348125125
5081990113233
3480108150211
3402887129273
3186615121212
4207145170210
1389887127249
4091478135279
89199312880
4953926128273
1033148125167
814290127278
4779657128208
266750111791
3826491127193
671546135210
3661550128207
466173516089
4098993128279
4827420124270
399772212286
3250632132205
4328155128256
2760321125271
4786362123208
4900482138213
3773561121252
631883132274
475534812881
305771125125
362992088220
209206136207
507991893278
3789117120179
4995394130219
4934196122278
317814712479
1681077124208
1948785127254
3971416120240
1795653124208
3339291128256
406643512385
398124128207
40025986220
3211733117208
1614715122252
1650934124208
3526370128187
571009128210
4399289117210
3270413128249
4950614108261
3954191121147
781995128174
4997194150211
1037507168206
2680040128210
10106912897
97513712441
3368117104234
1880732123246
5417860126181
179210012763
1034795125271
356845988214
3829561121211
4277742128128
5308082132212
300389412682
1781139123185
3129757140207
4996389128211
4424988128210
4955940124250
903963125125
3642384124124
1939732119208
1209745122244
4935536130210
3450181125208
1353830125271
2069519130214
393914887276
2048940126127
2447748126221
3949799130280
1234749136210
3533310125104
4960012125125
3133794128215
183744012385
376240140243
4981541126230
1822087122137
396986896217
190477138278
853834124156
12346688875
4995597110111
317815512881
3364661137265
1695408125271
3648814120145
997308120120
3789116123123
503647612088
3288636130207
162677912791
3271514118118
387373312584
631240126165
1771576124132
2996293128218
2024026100259
180802212385
4088665125250
3367555138193
366721512881
3313145126210
4996031175133
495905115205
3211603140137
177637812088
274121912895
4615188103206
2051166126114
2054968125125
3349967126164
144280990207
3958398130104
435443130187
4842349128249
4596347128207
404522512584
123466988221
677299129208
4898455138207
1986370126208
4688833110110
1652412124124
1792506124184
1796518123246
376740812484
315151312485
2438899131241
1964905130208
3367553128211
4955428122123
3967462122121
5159593128210
4840289128210
3262951128272
1193612120155
5039015128114
4366506132226
3428673121121
1681074124129
1725800139208
3979989121121
272528488165
3324024120219
4945105138211
4927725140275
3792959120274
5276059125250
3367551128199
4066359128208
4927548132207
4093908124176
3377323123208
5013063128210
3516363128192
168108512485
5073839116230
3667683123208
5450838128210
4997222130199
678406130165
3228649128224
3338963135208
3229038130210
1415239130254
4315749140276
4188100128112
4873286128240
3317417128210
207533112663
339095213078
2014445122122
364240912583
382222612256
945256136202
266652812483
1234748140212
168281512881
4817706136210
340954899269
3986537130211
3363196130193
781373140204
406280712385
3274260128256
1568217128194
5030517116130
2070773120120
3363602128207
2436276128212
1787061140199
1234752138207
873455120194
2673254128128
203109612088
814505128281
4200490128258
359007088206
2031094126181
157501512591
4293025128215
3434746128210
3841927130261
4002242128128
4483817128211
4846004121199
169092112583
203493128282
191347129144
3319290127182
2046342114247
362862812583
3706570120212
3093661128206
90783786218
33979328680
3935095140207
4297635125234
4970082100214
383305012060
3246151127254
311450116241
3725440138192
3302451128160
3275147127249
1785226124228
334429112644
3415421128208
973819141278
104319412484
1017921124207
335653512880
3372108130175
3776015135135
3958861132254
272528688236
835903127272
981591125167
348273386273
3759800128210
436048887214
1298595135214
194412511791
3334471132236
4928111175205
2673251128256
353374012385
199029712089
4107957187232
3443052127234
1052744175198
1822502125208
3625788116232
3992511124100
4254573125126
822664126208
205296612385
3319589130207
1178656126121
5009084122254
123475093207
4361260130209
192247012286
1970992124218
1982269125125
385832411890
3432247128208
846900124282
5103693113210
3228297132194
4452003131163
4060751128204
2434664128272
205597128167
3467773128265
3794008132207
4956417140215
334948670187
202567012583
890568128129
1149778125251
267650610263
3542099140140
3980001166250
4917941128210
3005030140214
3545728140209
4868146140210
3361547128265
3345479134259
3379400128156
847422126281
315007812187
3625787115138
102647812583
3015217128161
4433083140214
1669939128208
3517044126212
1814469125124
4939812121121
317258812583
4014747120281

付録C プログラムコード

 プログラムのコードを付記する。各プログラムの関数について説明する。