はじめに
人間の耳では感知しにくい、mp3による圧縮音声と非圧縮音声の違いをニューラルネットワークを使って判定できるか試してみます。 mp3とwavのスペクトログラムを下図のように比較すると、明らかに周波数の高い部分がmp3では消えているので、それを特徴として捉えられれば判定できそうです。
方法
Hennequinらの方法(Codec Independent Lossy Audio Compression Detection, 2017)を参考にしました。 今回の実験に使用したニューラルネットワークを以下に示します。 入力は、フレーム長(窓幅)を512サンプルとした対数パワースペクトルです。Nフレームつなげたものを画像とみなしてCNNで処理します。フレームシフトは256サンプルです。活性化関数は全てLeakyReLUです。
Conv2D Nx256 32-channel MaxPooling (N/2)x128 32-channel Conv2D (N/2)x128 16-channel MaxPooling (N/4)x64 16-channel Conv2D (N/4)x64 16-channel MaxPooling (N/8)x32 16-channel Conv2D (N/8)x32 16-channel MaxPooling (N/16)x16 16-channel Conv2D (N/16)x16 16-channel Flatten (N/16)x16x16 Dense 64 Dropout Dense 64 Dropout Dense 2 Softmax(2-classes)
データ
訓練データは12曲で、先頭から曲の終端まで1000フレーム(5.8秒)ごとに1回、特徴ベクトルを抽出しました。 合計506個です。検証用データは15曲で特徴ベクトルは792個です。
結果
1エポック当り100ステップ、バッチサイズ4で50エポック訓練した結果、以下のようになりました。 N=1のみ3回実験しました。
N | Train-acc | Validation-acc |
---|---|---|
1024 | 1 | 0.968250 |
512 | 0.999250 | 0.955000 |
256 | 0.998250 | 0.902750 |
128 | 0.995250 | 0.933000 |
64 | 0.993500 | 0.864750 |
32 | 0.978750 | 0.925500 |
16 | 0.981500 | 0.976750 |
8 | 0.985500 | 0.972250 |
4 | 0.980000 | 0.899500 |
2 | 0.981500 | 0.889000 |
1 | 0.975000 | 0.931500 |
1 | 0.963500 | 0.956000 |
1 | 0.954750 | 0.936250 |
コード
https://bitbucket.org/bluewidz/mp3detect/src/default/ を参照ください。
0 件のコメント :
コメントを投稿