Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

女の子になれなかった人のために

6 490 vues

Publié le

音声の分析合成と機械学習を使ってボイスチェンジャーを作るスライドです

Publié dans : Technologie
  • Soyez le premier à commenter

女の子になれなかった人のために

  1. 1. 女の子になれなかった人のために ID:spi8823
  2. 2. 自己紹介 ID: • spi8823 所属: • 工学研究科 原子核工学専攻 核材料工学研究室 M1 研究内容: • 加速器を使ってなんやかんや KMCでの活動: • ゲーム制作・DTM 趣味: • スピッツ・カラオケ・神社 内定これくしょんしてます
  3. 3. 余談/研究室での活動 水素原子の金属表面での挙動に関する研究 • 表面挙動なので表面水素密度が必要 • 加速器を使ったNRA法で表面水素密度を測定 実験は宇治キャンパスで • 泊まり込みなのでめっちゃ自炊する
  4. 4. 女の子 「早く 女の子になりたい!」
  5. 5. 女の子になるには 醜い体…… • 女装? • 骨格はどうしようもない…… 醜い心 • どうしようもない…… 醜い声 • どうしようもない…… • ほんまか?
  6. 6. 動機 女の子の声になりたい!! スピッツの声で歌いたい!! コナン君が持ってるような変声機さえあれば…… • 調べてみると自分でも作れそうな雰囲気 • 偉い人がもう作ってくれてるのは御愛嬌
  7. 7. そこで分析合成 音声の発生機構をモデル化し,そのパラメータを符号化 • 一般に言う音声合成とは全く違うので注意! じゃないよ!! 符号化したパラメータから音声を合成する • =分析合成
  8. 8. 目標 目標1 • 分析合成を用いて入力した音声を再合成する 目標2 • 入力した音声を文章はそのままで別の音声に変換する 目標3 • 入力した音声を文章はそのままで別の人物の音声に変換する
  9. 9. 注意 このスライドは「人工知能に関する断創録」様のブログを 全面的にパクッて参考にしています • 先人に感謝!!
  10. 10. 前半:分析合成 人間の声について 声道パラメータについて 実装について デモ
  11. 11. 人間の声の構造 声帯で元となる音声が発生する 声道を通って音声が歪められる 口腔内を通って母音および子音が付加される ブザー音を声帯で発生する音声に見立て それを声道や口腔の構造を再現したフィルタを通すことで 人間の声を計算機上で再現することができる!
  12. 12. 人間の声の再現 音声のピッチを求める 音声の声道パラメータ(メルケプストラム)を求める ピッチをもとにブザー音を発生させる(=声帯で音が発生) ブザー音を声道パラメータに基づくフィルタに通す • (=喉や口を通って声が外に出る) 人間の声!!!! (http://www.kumikomi.net/archive s/2010/08/ep30gose.phpより拝借)
  13. 13. 声道パラメータの求め方 音声信号をフーリエ変換し、周波数成分にする • 本当はこれをそのまま使いたい(ほんまか?) • 典型的には1秒間に44100点とかだがデータ量が多すぎて無理 周波数成分のうち細かな変動は無視し、大まかな特徴を 捉える(=スペクトル包絡を求める) • 周波数成分が1024個とかあるのを30データぐらいにする
  14. 14. 用語解説 フーリエ変換 • ある関数をフーリエ級数という様々な周波数と位相を持った 正弦波の足し合わせで表現し、それらのパラメータを 求めること • 音声データをフーリエ変換すると その音声にどんな周波数の音が含まれているかを 調べることができる • フーリエ変換した結果を 周波数スペクトラムとかいう (http://www.yukisako.xyz/entry/fourier-transformより拝借)
  15. 15. 用語解説 スペクトログラム • 周波数スペクトラムはある時間フレームの中の周波数を 表しているに過ぎない(つまり一瞬しか見れない) • 各フレームのスペクトラムを並べて スペクトラムの時間変化を見られるようにしたのが このスペクトログラム time
  16. 16. スペクトル包絡の求め方 周波数スペクトルの対数をとる 対数スペクトルをさらにフーリエ変換する フーリエ変換したもの(=ケプストラム)のうち、高周波 成分のものを取り除く 処理したケプストラムをフーリエ逆変換する • =スペクトル包絡線 フーリエ変換 フーリエ変換 対数化 高周波成分を 取り除く フーリエ変換 音の信号 周波数 スペクトル 対数周波数 スペクトル ケプストラム (ローパスした) ケプストラム スペクトル 包絡
  17. 17. 用語解説 ケプストラム(cepstrum) • 信号をフーリエ変換し得られた周波数成分を対数にしたものを さらにフーリエ変換したもの • つまり、スペクトルのスペクトルという感じ • これを用いることで周波数成分の概形を (少ない情報で)把握することができる • 音声に適用すると、人間の声から声帯の振動に起因する成分 のみを抽出できる • “spectrum”のアナグラム
  18. 18. 用語解説 メル-ケプストラム • 周波数スペクトルを聴覚に合わせた周波数軸(メル尺度)で 表したものをケプストラムにしたもの • 低い周波数ほど間隔が狭く、高いほど広くなる (http://tam5917.hatenablog.com/entry/2016/03/15/113555より拝借)
  19. 19. 用語解説 MLSAフィルター • Mel-Log Spectrum Approximatation • メルケプストラムから音声を合成するデジタルフィルタ • 類似の働きをするものは他にもいろいろある LMA All-pole All-pole lattice MGLSA(一般化したやつっぽい) • 今回の実装はこっち
  20. 20. 実装 Pythonを使用 • 初めて使った…… SPTKという分析合成用のツールを用いる • なので細かい実装はしません
  21. 21. SPTK Signal Processing TookKit 音声処理をするためのツール • ピッチを検出したり • メルケプストラムを抽出したり • ケプストラムとピッチから音声を合成したりできる 今回はこれのPythonラッパー(pysptk)を用いた
  22. 22. デモ グラフを見せたり音を鳴らしたりします その1:そのまま再合成 その2:ピッチを高くしたり低くしたり その3:ピッチを無くして無声音に
  23. 23. これで半分ぐらい? 質問があればどうぞ
  24. 24. 限界 メルケプストラムをいじっているだけでは 女の子の声にはなれない…… ある人物Aの音声と別の人物Bの音声を解析し Aの声からBの声へと変換できるようにする • 流行りの を使えばできそう 女の子になれなくて落ち込むFさん
  25. 25. 後半:機械学習 機械学習について 前処理について 実装について デモ
  26. 26. 機械学習とは 「データから反復的に学習し、そこに潜むパターンを 見つけ出すこと」らしい 大きく分けて3種類あるらしい • 教師あり学習 一連の入力とそれらに対応する正しい出力を受け取り、 事象を予測できるようになること • 教師無し学習 データを探索してその内部に何らかの構造を見つけ出す • 強化学習 どの行動が最大の報酬を生み出すかを、試行錯誤を通して突き止める
  27. 27. 教師あり学習 GMM(混合ガウスモデル) • というモデルを今回は用いた • 多次元のガウス分布がいっぱい重なったもの • 学習させると値が推定できる • 学習 複数の(x, y)から図のような ガウス分布を見つける • 値の推定  x を与えると その x での y の期待値が求まる • 実際はこれの50次元ぐらい版 • 詳しいことは知らん!!
  28. 28. 学習のさせ方 ある人物Aの音声のケプストラム(=x)と それと全く同じ文章を読んだ ある人物Bの音声のケプストラム(=y)を 先ほどのGMMで学習させる そのままのデータを突っ込んでもうまく学習できないので データに前処理をかける
  29. 29. 前処理 AのケプストラムとBのケプストラムを見比べたとき どの部分がどの部分に対応してるのかわからない したがって、DTWという手法を使って “もっともそれっぽい”対応を取ってから学習させる (断創録さまより拝借)
  30. 30. DTW DTW(Dynamic Time Wrapping)とは • 動的時間伸縮法 • 時系列データの類似度を測る手法の1つ • 察するに話す速さとか間の置き方とかを いい感じに伸縮してくれるっぽい (http://sinhrks.hatenablog.com/entry/2014/11/14/232603より拝借)
  31. 31. 実装 機械学習 • scikit-learn(sklearn)というライブラリを使った • 界隈では一番有名なやつらしい DTW • dtwというライブラリを使用
  32. 32. デモ テスト用の音声を使った機械学習の結果を見せます
  33. 33. 休憩 質問とか無いですか
  34. 34. 本題 ここで満足はできない “““自分の声”””を女の子の声にしたいんだ!!! 自分の声のサンプルと女の子の声のサンプルを 機械学習させれば女の子の声になれる!!
  35. 35. 学習用のデータを用意① グーグルを開く ゴニョゴニョっとする 木曾ちゃんのボイスデータが いっぱい手に入る!! いいぞ!!
  36. 36. 学習用のデータを用意② マイクを用意する カラオケに行って歌う 先ほど用意した音声を聞きながら 木曾ちゃんのセリフを真似する • (精神的)苦行 • 録音した自分の声を自分で聞くことほど 辛いものはない • 隣の部屋の人ごめんなさい
  37. 37. 学習させる ケプストラムを求め、DTWし、GMMで学習させる ここで障害が発生 • 拾ってきたデータだけエラーが吐かれる…… • どうやら完全な無音(データが0)が続くとダメらしい • 小さい雑音を鳴らしておくことで解決!
  38. 38. 試してみる マイクで録音して実際にやってみる ピッチを変えただけの声と比較 それっぽくなってる? • 最適なパラメータがわからん……
  39. 39. Q.女の子になれた? A.なれそう • 女の子への道は長い……
  40. 40. まとめと課題 まとめ • 分析合成とその周辺の知識について解説し、実演した • 機械学習と分析合成を使い、ある人物の音声を別の人物の音声 に変換する方法について解説し、実演した 課題 • 分析合成を行う際の各パラメータが合成結果にどう影響するの かについて学ぶ必要がある • 機械学習を行って合成した音声の再現度は良好とはいいがたく どうにかして改善する必要がある • ピッチは手動で書き換えたが、ここにも機械学習を使うことが できればより女の子らしくなることができると思われる • リアルタイムでやりたかった……
  41. 41. 感想 Python(とライブラリ)すげー 音声処理難しい…… • パラメータを間違えるとただのパルスが出力されたりして 難しい 女の子になりたい……
  42. 42. 以上です ご清聴ありがとうございました 質問とか言いたいこととか無いですか 酒が飲めるぞー!!

×