CNNで作る
ダメ絶対音感
2018-05-11
深層学習ゼミ・自由テーマ発表@PP4F
いし し げんき
自己紹介
● 石橋 弦樹(いし し げんき)
@b0941015
● 2015年 4月 新卒としてCAに入社
● 2017年10月 MDH DSPチームにJOIN
● 2018年 5月 チーム再編成
● 最近ポモドーロ・テクニック実践中
ダメ絶対音感と ...
● 絶対音感
○ ある音を単独に聞いた時に、そ 音 高さを記憶に基づいて絶対的に認識する能力である。
(@wikipedia)
● ダメ絶対音感
○ アニメやCM・洋画 吹き替えなど 声から瞬時に誰 声かを判断することができるという、生きてい
く上で特に必要 ない能力 ことをいう。 (@アニオタ
Wiki(仮))
ダメ絶対音感テスト~入門~
http://www.nicovideo.jp/watch/sm17371984
簡単ですよ ??
機械学習でダメ絶対音感
● 以前独学でダメ絶対音感を作ろうとした
○ ボイスサンプルを訓練・テストデータとして使用
○ テキスト非依存
○ 特徴量としてMFCCを利用
○ SVMを使って6~7割 精度
● 今回やること
○ CNNでダメ絶対音感
https://www.slideshare.net/genkiishibashi3/ss-76934494
ダメ絶対音感 ため 機械学習プロセス
1. 学習させるもととなるデータを集める
2. 識別に必要な特徴量を抽出する
3. 特徴量を学習させて識別モデルを作成する
4. テストデータを評価する
1. データ集め
● 日本声優統計学会 コーパスを利用
○ プロ 女性声優3人
○ 音素バランス文を3パターンで読み上げたコーパス
○ https://github.com/voice-statistics
ダメ絶対音感 ため 機械学習プロセス
1. 学習させるもととなるデータを集める
2. 識別に必要な特徴量を抽出する
3. 特徴量を学習させて識別モデルを作成する
4. テストデータを評価する
特徴量 抽出~音声 デジタル化~
● 標本化...1秒間にいくつ データを収集するか
● 量子化...音 強さを何段階で表現するか
● CD音源 場合
○ サンプリング周波数: 44,100Hz
○ 量子化ビット数: 2^16 = 65536
特徴量 抽出~フーリエ変換~
● 音声データ 複数 周波数 重 合わせで表現できる
● フーリエ変換したも を周波数スペクトルと呼ぶ
● 周波数スペクトルを2乗してパワースペクトルを得る
特徴量 抽出~メル尺度周波数~
● 人間 耳 可聴域 上限に近い音 実際 音よりも低めに聞こえる(らしい)
● 人間 知覚する音 高さを測る尺度に調整した周波数をメル尺度周波数と呼ぶ
● メル尺度で 1000Hzを基準として以下 数式で定義されている
特徴量 抽出~メル周波数スペクトログラム~
● メル尺度周波数で等間隔に周波数スペクトルを取り出すためにM個 フィルタを適用
● 人間 近く 音圧レベルに合わせるため対数を取る
特徴量 抽出~メル周波数スペクトログラムマップ~
● 音声データを音声フレームに分割
● 各フレームに窓関数を適応
● フレームでメル周波数スペクトログラムを抽出
● 連続するメル周波数スペクトログラムを並べる
● 一定時間 スペクトルを一つ 画像マップとする
特徴量 抽出~メル周波数スペクトログラムマップ~
● サンプリング周波数:44100
● メルフィルタ 数:128
● フレーム間隔:約5.8ms
● フーリエ変換窓幅:2048ms
● 画像マップサイズ:40 x 128
● 訓練データ:21038枚
● バリデーションデータ:5196枚
ダメ絶対音感 ため 機械学習プロセス
1. 学習させるもととなるデータを集める
2. 識別に必要な特徴量を抽出する
3. 特徴量を学習させて識別モデルを作成する
4. テストデータを評価する
識別モデル~CNNアーキテクチャ~
層種・名称 パッチ ストライド
出力マップサイ
ズ 関数
data - - 40 x 128 x 1
conv1 10 x 32 1 31 x 97 x 32 ReL
pool1 2 x 2 2 15 x 45 x 32
conv2 10 x 32 1 6 x 14 x 2048 ReL
pool2 2 x 2 2 3 x 7 x 2048
dense 1 x 1 x 1024 ReL
dropout
output
識別モデル~誤差~
● バッチサイズ:100
● エポック数:1
● ステップ数:35,000
● 精度:94.7%
ダメ絶対音感 ため 機械学習プロセス
1. 学習させるもととなるデータを集める
2. 識別に必要な特徴量を抽出する
3. 特徴量を学習させて識別モデルを作成する
4. テストデータを評価する
テストデータと予測
● テスト用 音声データから画像マップを抽出
● 画像マップから各話者毎 確率を算出
● 各話者毎 確率 平均値 中で、最も高い確率となるも を予測値とする
各話者 確率
argmax 予測した話者
予測結果
● 各話者15音声 x 3パターン
● 精度100%
● ちなみに古典的なGMM-UBM 場合
○ 精度98.5%
まとめ
● 音声データ 特徴量を画像データに変換
● 画像データを入力としてCNNでモデル構築
● 3クラス分類で精度100%達成
今後やりたいこと
● 分類クラスをもっと増やす
● 音声にノイズを乗せることで、学習データ 嵩増し、ロバスト性 向上
● 畳み込みネット 改良
○ 分類クラス 増加に伴い、判別可能な特徴量を増やす
○ より少ないデータで学習を可能に
● RNNで話者認識
● エンターテイメント応用
○ 誰が本物と一番似てるかグランプリ (ex. 「倍返しだ!」)
○ あなた 声 ど 声優さんに似てるか
○ etc...
参考文献
● 深層学習を使って楽曲 アーティスト分類をやってみた
○ http://blog.brainpad.co.jp/entry/2018/04/17/143000
● GMM-UBMライブラリ
○ https://github.com/liuxp0827/govpr
● Text-Independent Speaker Verification Using 3D Convolutional Neural Networks
○ Torfi A, Dawson J, Nasrabadi N, ArXiv ID 1705.09422, 2017

CNNで作る ダメ絶対音感