はじめに
最近,日本語 x-vector 抽出器がPyPIに登録された旨がツイートされた.
M1中田くんが,日本語 x-vector 抽出 (音声に含まれる話者特徴をベクトルで表現してくれるもの) を pip で入るようにしてくれました.ご活用下さい.学習済みモデルがあるので直ぐ使えるよ.https://t.co/3dBvVOD3UW
— Shinnosuke Takamichi / 高道 慎之介 (@forthshinji) July 20, 2023
そこで早速,『声優統計コーパス』の音声データに対して適用し,抽出したx-vectorを可視化しようと試みたので,その報告が本記事の主旨である.
日本語 x-vector 抽出器
抽出器はxvector-jtubespeechという名前で,すでにgithubのリポジトリが公開されている.
x-vector (話者表現ベクトル) を抽出するための学習済みモデルを提供します.このモデルは,JTubeSpeechコーパスと呼ばれる,YouTubeから収集した日本語音声から学習されています.
ということなので,ぜひ使ってみたいと.
声優統計コーパス
下記のサイトにて公開されている.3名の話者が「通常」「怒り」「喜び」の3パターンの感情で音素バランス文を読み上げた際の音声データである.オリジナルの音声が48kHzサンプリングで収録されているので,x-vector抽出の際にはlibrosaなどにより16kHzにリサンプリングしておく必要がある.なぜならば,xvector-jtubespeech の事前学習済モデルは16kHzの音声で訓練されているため,入力音声を16kHzサンプリングに揃えなければならないからである.
実装
以下のリポジトリにサンプルコードを置いた.
具体的には,
preprocess.py
plot_umap.py
- UMAPによりx-vectorを可視化(話者ごとに図を作成)
plot_umap.py
- UMAPによりx-vectorを可視化(全話者をまとめて1つの図として作成)
config.yaml
- 設定ファイル
からなる.事前学習済モデルは上記xvector-jtubespeechのリポジトリからダウンロードしている.config.yamlは各自の環境に応じて書き換えられたい(root_dirのみで十分).
UMAPによる可視化スクリプトの例としてColab Notebookも用意した.
可視化例
図1に声優統計コーパス3話者から抽出したx-vectorを可視化した例を示す.3話者とは「fujitou, tsuchiya, umemura」の3名である.話者ごと・感情ごとにx-vectorがきれいに分かれてプロットされていることが見て取れる.
おわりに
x-vector抽出器の公開はとても嬉しい.いろいろな音声データセットに対して抽出を試み,傾向の違いなどを観察するのは興味深いことだろう.