日本語x-vector抽出器により声優統計コーパスからx-vectorを抽出してUMAPで可視化した話

はじめに

最近,日本語 x-vector 抽出器がPyPIに登録された旨がツイートされた.

そこで早速,『声優統計コーパス』の音声データに対して適用し,抽出したx-vectorを可視化しようと試みたので,その報告が本記事の主旨である.

日本語 x-vector 抽出器

抽出器はxvector-jtubespeechという名前で,すでにgithubリポジトリが公開されている.

github.com

x-vector (話者表現ベクトル) を抽出するための学習済みモデルを提供します.このモデルは,JTubeSpeechコーパスと呼ばれる,YouTubeから収集した日本語音声から学習されています.

ということなので,ぜひ使ってみたいと.

声優統計コーパス

下記のサイトにて公開されている.3名の話者が「通常」「怒り」「喜び」の3パターンの感情で音素バランス文を読み上げた際の音声データである.オリジナルの音声が48kHzサンプリングで収録されているので,x-vector抽出の際にはlibrosaなどにより16kHzにリサンプリングしておく必要がある.なぜならば,xvector-jtubespeech の事前学習済モデルは16kHzの音声で訓練されているため,入力音声を16kHzサンプリングに揃えなければならないからである.

voice-statistics.github.io

実装

以下のリポジトリにサンプルコードを置いた.

github.com

具体的には,

  • preprocess.py

    • 声優統計コーパスのダウンロード(および解凍)
    • 事前学習済モデルのダウンロード
    • x-vectorを抽出して保存
  • plot_umap.py

    • UMAPによりx-vectorを可視化(話者ごとに図を作成)
  • plot_umap.py

    • UMAPによりx-vectorを可視化(全話者をまとめて1つの図として作成)
  • config.yaml

    • 設定ファイル

からなる.事前学習済モデルは上記xvector-jtubespeechのリポジトリからダウンロードしている.config.yamlは各自の環境に応じて書き換えられたい(root_dirのみで十分).

UMAPによる可視化スクリプトの例としてColab Notebookも用意した.

colab.research.google.com

可視化例

図1に声優統計コーパス3話者から抽出したx-vectorを可視化した例を示す.3話者とは「fujitou, tsuchiya, umemura」の3名である.話者ごと・感情ごとにx-vectorがきれいに分かれてプロットされていることが見て取れる.

図1. UMAPによるx-vectorの可視化(声優統計コーパス3話者)

おわりに

x-vector抽出器の公開はとても嬉しい.いろいろな音声データセットに対して抽出を試み,傾向の違いなどを観察するのは興味深いことだろう.