ステレオ多楽器音中のドラムパートの抽出2011SE144 倉内 慎

2011SE154 増田 大輝

指導教員 後藤邦夫

1

はじめに

近年，楽譜の普及が増えたが，ドラム譜だけを見ても正確には書かれておらず，また，私がドラムを演奏するにあたってコピーしようとしたアーティストのものがないということが多々あった．そのとき，私は動画サイトを見て，実際に演奏している姿を真似してコピーをしてきた．しかし，それは効率が悪く素人である私にとってとても難しいことであった．
先行研究 [4] では多楽器音中からベースギターパートの譜面を作成することを目的としており，抽出したパートを音声化することはしていない．ドラムは他の楽器とは異なり，1 つ 1 つの音がはっきりしている．そのため，音のみを聞けばどこを叩いているのかがわかりやすい楽器であるので，ドラム音のみを音声化することによってドラムを演奏する人にとって大きな手助けとなる．当研究ではフーリエ変換やメディアンフィルタ，ステレオフィー
ルド内の panpot などを使用し，周波数の分析をして，多楽器で演奏された楽曲からドラム音のみを抽出する．ス
テレオ音源ファイルを作成したプログラムに出力し，ドラム音のみがどれだけきれいに聞こえるかどうかで評価する．文中に出てくる percussive な音というのは瞬間的に出る音，harmonic な音というのはある程度継続する音である．主に，倉内慎は panning による音の分離を担当
し，増田大輝がメディアンフィルタによる音の分離を担当した．

図 1 各パートごとの周波数と定位ないため，当研究ではこのサンプル数でフーリエ変換している．STFT する例を図 2 に示す．
10.5-0.5*cos(2*pi*x)
0.5-0.5*cos(2*pi*(x-1/4.0))
0.5-0.5*cos(2*pi*(x-2/4.0))
0.5-0.5*cos(2*pi*(x-3/4.0))
0.8

0.60.40.2002

周波数による音の分離

図 1 は縦軸を周波数，横軸を panpot で表したものである. 図 1 から見ても分かるように周波数領域だけでは楽器ごとに被ってしまっており，特定した音のみを分離することは不可能である．よって本研究では percussive な
音の分離，panning による音の分離を用いてドラムパートを抽出していく（対象とするパートはドラム，ヴォーカル，ギター，ベースギター，キーボードとする）．

2.2

0.4

0.60.81

周波数分離と計算方法
図 2 1/4 ずつずらした STFT の例

ここでは，ドラムパートを抽出するときの問題を定義し，その解決策を示す．

2.10.2STFTSTFT（short-time Fourier transform）は短時間フーリエ変換のことを表し，関数に窓関数をずらしながらかけて, それにフーリエ変換することである. 当研究では，音声を対象としているため 1024 のサンプル数でフーリエ変換する．音声を対称としているため，合成する際に少しのずれがあってはならない．つまり，細かく区切ってフーリエ変換する必要がある．1024 は時間にして約 0.02 秒ほどであり，音声がずれてはいけないという 0.03 秒より少3panning による音の分離 [1]panpot を用いて，ステレオフィールド内の左右の音声出力バランスの差に基づいて分離する．panpot の領域で取り出したい音の周波数に依存する場所を明かにするため，ゲインの大きさを調整し位相を消す．その後，周波数の大きさを推定し，再合成する．
3.1

panpot [3]panpot（panoramic potentiometer）とは音の左右の定位のこと．ステレオスピーカの場合の音の出力先を左右に割り振る際に使用する．範囲は 0 から 127 までで，64がちょうどセンターにあたる．当研究では 0 をセンターとし，左寄りをマイナス，右寄りをプラスとしている．
3.2

分離方法

右から聞こえる音と左から聞こえる音をそれぞれ L(t)，R(t) とし，式 (1)，(2) を使いそれぞれのフーリエ変換FL(k)，FR(k) を計算する．
FL(k) =N
−1
X1• 0 ≤ d ＜ のとき
2L(n)wnkn(1)

R(n)wnkn(2)

n=0

FR(k) =N−1
X

abscp
absR

(6)

abscp
absR

(7)

max − min = absL − absLR(8)max − min = absLR −•1≤ d ＜ 1 のとき
2n=0

1 ≤ k ≤ N ，wnkn = e−j2 π/N . a，b は L(t) と R(t) の比率と考えるので，0 ≤ a ≤ 1，0 ≤ b ≤ 1．このとき右の音が大きい場合

FR (k) = |FL(k) − aFR(k)|• 1 ≤ d のとき(3)

この一連の手順を，左の音が大きい場合についても同様に計算する

左の音が大きい場合FL (k) = |FR(k) − bFL(k)|max − min = absL −(4)3.3 再合成として，指定した位置に近い音を取り出すので，それぞ3.2 で求めた周波数の大きさを式 (9) で足し合わせていれ式 (3)，(4) が最小になるときの a，b を求める．参考文
く．i = 方位，c = 取り出す位置，H = 予備空間 として，
献 [1] では全通り計算して a，b の値を出していたが，それZ i=c+H/2は効率が悪いので FR (k)，FL (k) を 2 乗して出てきた二次GR (k) =FR (k)(9)
関数の最小，最大になるときの a，b を求めた．この二次i=c−H/2関数の軸を d とおく．FL(k) = xL + iyL ，FR(k) = xR +pp
綺麗に再合成するため，取り出したい方位の前後に幅を2222iyR とおくと，p absL = xL + yL ，absR = xR + yR 持たせる．次に，元の位相の偏角を式 (10) を使い実数と，absLR = (xL − xR )2 + (yL − yR )2 となる．ここで，虚数の 2 つに分解する．
FL(k)FR(k) の実部（内積）を dp，虚部（外積）を cp とおくと，dp = xL xR + yL yR ，cp = xR yL − xL yR となる．
()
dp
ReJ(k) = G(k)cos∠(FR(k))
d = (absR)
2 と表すことができる．右の音が大きい場合，(10)
J(k) =ImJ(k) = G(k)sin∠(FR(k))• d ＜ 0 のとき(min : absL
(a = 0)
その後，式 (11) を使い J(a) を逆フーリエ変換して音声に戻す．
max : absLR (a = 1)
N
1 X
J(n)
=J(k)Wn−kn(11)1N• 0 ≤ d ＜ のとき
k=12
4 percussive な音の分離 [2] min : abscp (a = d)メディアンフィルタを用いてモノラル音声信号の harabsR
monic な音と percussive な音を分離する．この技術は, メ
max : absLR (a = 1)
ディアンフィルタの連続するフレームにおいて harmonic
1な音を高めるために percussive な音を抑制し，また逆の≤ d ＜ 1 のとき•2こともする．得られた二つのメディアンフィルタリング

スペクトログラムは harmonic な音と percussive な音を min : abscp (a = d)
absR
分離するために，元のスペクトログラムに適用するマスmax : absL
(a = 0)クを生成するために使用される．私たちは youtube の音源から素材を抽出し，リミックスする．
• 1 ≤ d のとき
4.1 メディアンフィルタ(min : absLR (a = 1)
与えられたサンプルの中央値をとり，その値を出力す
max : absL
(a = 0)
ること．y(n) = 中央値の出力，x(n) = 入力ベクトル
次に最大値から最小値引いて，その時間での周波数の ，α = サンプルの数，k = (α − 1)/2(α : 奇数)，k = α
大きさを推定する．また，その時間以外での周波数を 0 /2(α : 偶数) として，出力する値は式 (12) から導く．とする．

y(n) = median{x(n − k : n + k)}• d ＜ 0 のとき
max − min = absLR − absL

(5)

(12)

メディアンフィルタは画像処理において広く使用されている.

4.2

前提条件• 音声サンプルは wav• メディアンフィルタの長さ=17• FFT の長さ=4096• 1024（4096/4）ずつずらす• 周波数 44.1kHz
参考文献 [2] では，メディアンフィルタの長さ 15 から 30未満の数字で実験をしており，その結果，劇的には変化しなかったため長さ 17 で実験をしている．周波数 44.1kHzに対し FFT の長さ 4096Hz（約 0.1 秒）の長さであり，窓関数を 1024Hz（0.025 秒）に設定したのは音楽が 0.03 秒ずれると致命的な問題となり，また短すぎると低音の分析ができなくなってしまうからである．

4.3

図 4 拡大図

分離の流れ• 音声サンプルを STFT して，時間軸から周波数軸に変換する．

P̂k,i = Ŝk,i ⊗ M P k,i(16)• 最後に Ĥ と P̂ を逆フーリエ変換（Inverse Fast• 出てきた周波数の共役複素数をスペクトログラムにFourier Transform，IFFT）して，音声に戻す．
表し，図 3 のように harmonic 要素の集まり（Hk,i ）と percussive 要素の集まり（Pk,i ）にメディアンフィ 5 実験結果
ルタをかける（それぞれ M Hk,i ，M Pk,i とする）． 5.1 panning による音の分離

図 5 panning のコマンド• youtube-dl を使って youtube から音楽ファイルを取り入れる．
• このプログラムは拡張子が wav でないとできないた
め，wav でない場合拡張子を変換する．
図 3 2 秒間のスペクトログラム• 図 4 は図 3 のメディアンフィルタをかけた部分を拡大したものである．Hk,i ，Pk,i それぞれの要素を hk,i，pk,i と表している．
• M Hk,i ，M Pk,i の掛け比率は式 (13)，(14) のように表すことができる．
M Hk,i =2Hk,i2
2Hk,i + Pk,i(13)M Pk,i =2Pk,i2 + P2Hk,ik,i(14)• 求めた M Hk,i ，M Pk,i それぞれの要素 M hk,i ，M pk,iを式 (15)，(16) を使い，行列計算をして足し合わせていく．Ŝ は元のフーリエ変換．
Ĥk,i = Ŝk,i ⊗ M H k,i(15)• 「./panSplit ファイル名」とコマンドを入力すると，
図 5 のように分離した音が生成される．この時，最後に入力する値は panpot の位置であり，0 がセンター，1 が右端，-1 が左端と設定してある．
生成される音は入力した panpot の位置で抽出されたものと，それ以外の音の 2 種類である．ステレオ音源におけるドラムの位置は曲や構成によって大きく変化しないためドラム音のみの音源を作成し panpot の位置を調べた．
具体的な値を入力したとき，どの音がどの位置から発しているか表 1 に示す．
以上が実験結果である．ドラムの大体の位置を特定することができたので多楽器の音源を分離する際もその位置周りをとることで良い結果が得られると考える．

5.2

percussive な音の分離• 1：youtube-dl を使って youtube から音楽ファイルを取り入れる．

表 1 入力結果
楽器pan 位置
スネアドラム
0.0
バスドラム
0.1
ハイタム
-0.6
ロータム
0.9
フロアタム
-0.9
シンバル
1.0(-1.0)
ハイハット
-1.0

ログラム→ percussive プログラムの順番で実行する．以下の手順で進める．

• 1：-1 から 1 の範囲の pan 位置を 0.1 ずつ区切り，21個に分割．
• 2：分割したものを 1 個ずつ panning プログラムにかける．
• 3：できた音源をまた 1 個ずつ percussive プログラムにかける．
• 4：2 つのプログラムにかけてできた 21 個の音源を再合成．
しかし，panning で分割した音を percussive のプログラ
ムで処理しようとするとエラーが起きてしまい解決することができなかった．エラーが起きた理由は，ステレオ音源を panning で処理した時にモノラル音源に変わり，percussive プログラムがステレオ音源用になっているた
めチャンネルの数が合わないからである．また再合成プ
ログラムもできていないため，分割した音源をつなげることができなかった．

6

図 6 percussive のコマンドおわりに当研究では多楽器で演奏された楽曲からドラム音のみを抽出し，音声化することを試みた．メディアンフィル
タ，ステレオフィールド内の panpot を使用し，周波数分析してそれぞれのプログラム実行，音声化は成功した．当研究の成果は，• 2：取り込んだ音楽ファイルの拡張子が mp3 となっているため wav ファイルに変換する．

• メディアンフィルタによる percussive な音と harmonic な音の大まかな分離と音源の再生．

• 3：「./panSplit ファイル名」とコマンドを入力すると，図 6 のように実行される．

• pan 位置によって分割した音源の再生．
しかし，2 つのプログラムを合わせることができず，ドラムパート以外の音も入ってしまう結果となってしまった．
今後の課題は，上記の手順を踏まえ実行すると，percussive な音と harmonic な音が別々に生成され，それぞれ再生することがで• モノラル音源に対応したプログラムの作成．
きる．表 2 に示したように構成がバラバラな曲を用いて実験をした．このとき percussive な音を再生するとドラム• pan 位置によって分割した音源を再合成するプログパートの他にヴォーカル，ギター，キーボードの音が入っラムの作成．ている．これらの音が入ってしまった理由は，percussive• ドラムパート以外の音を消すための精度向上．
は打楽器という意味なのでギターを弾く，ヴォーカルが発声する，キーボードを叩くというアタックが percussive 参考文献として認識されてしまっているためであると考えている． [1] Barry, D.:Sound Source Separation:
Az表 2 percussive 分離

imuth Discrimination and Resynthesis, 7th International Conference on Digital Audio Effects (2004).
http://eprints.maynoothuniversity.ie/696/.

アーティスト名
タイトル名
構成
perccusive な音 [2] Fitzgerald, D.:
Harmonic/Percussive Separa東京事変
群青日和
女 Vo*1,Gt*1,Key*1,Ba*1,Dr*1 Vo,Gt,Dr,Keytion using Median Filtering, 13th International
SHANK
Cigar store
男 BaVo*1,Gt*1,Dr
Vo,Gt,Dr
Conference on Digital Audio Effects (2010).
Acid Black Cherry
イエス
男 Vo*1,Gt*2,Ba*1,Dr*1,Key*1 Vo,Gt,Dr,Key
http://arrow.dit.ie/argcon/67/.
Janne Da Arc
ダイヤモンドヴァージン 男 Vo*1,Gt*1,Ba*1,Dr*1,Key*1 Vo,Gt,Dr,Key[3] 小 原 肇 晃:定位の基礎知識(acUNISON SQUARE GARDEN オリオンをなぞる
男 Vo*1,Gt*1,Ba*1,Key*1 Vo,Gt,Dr,KeycessedOct.
2014).
http://www.hikariongaku.com/study/panpot.html.

5.3

合成プログラム

panning プログラム，percussive プログラムの 2 つのプ
ログラムを合わせてドラムパート抽出をする．panning プ[4] 竹内雅浩，鵜飼立樹 : 多楽器音のベースギターパー
ト自動採譜，南山大学情報理工学部システム創成工学科 2013 年度卒業論文 (2014).