ichou1のブログ

主に音声認識、時々、データ分析のことを書く

音声合成メモ(AutoVC)

「AutoVC」を試してみる。
GitHub - auspicious3000/autovc: AutoVC: Zero-Shot Voice Style Transfer with Only Autoencoder Loss

AUTOVC is a many-to-many non-parallel voice conversion framework.

モチベーション
  • 「SpeechSplit」を試してみようとして、デモの実装で使われていたから

GitHub - auspicious3000/SpeechSplit: Unsupervised Speech Decomposition Via Triple Information Bottleneck

  • Zero-Shotの実力を知りたい(英語のデモはあるが、日本語だとどうか?)


Modelのパラメータは学習済みのものを使う。
アウトプットはMel-Spectrograms

G = model_vc.Generator(32, 256, 512, 32).eval().to(device)
g_checkpoint = torch.load('autovc.ckpt', map_location='cuda:0')
G.load_state_dict(g_checkpoint['model'])

_, x_identic_psnt, _ = G(uttr_org,  # ソース音声(Mel)
                         emb_org,   # 話者Embed (ソース)
                         emb_tgt    # 話者Embed (ターゲット)
                         )

uttr_tgt = x_identic_psnt[0, 0, :-len_pad, :].cpu().numpy()  # 変換音声(Mel)

これをVocoder(今回はWaveNet)で音声に変換する。

試してみる(その1)

ATR503の発話音声を、綾波レイの音声に変換してみる。
ターゲット音声となる"綾波音声"データは下記を使用させていただいた。
Scyclone Demo Page

ソース音声(ATR503)

ターゲット音声(話者Embedの生成に使用)

変換結果


話者Embedをplotしてみる。
本来、複数の音声から平均を求めるようだが、単一音声ファイルから生成した。

左: ソース音声
右: 綾波音声

f:id:ichou1:20210429115433p:plainf:id:ichou1:20210429115441p:plain

試してみる(その2)

公開されている話者「p228」のEmbedで試してみた結果。

変換結果

こちらの方は女性声のように聞こえる。

試してみる(その3)

話者「p256」のEmbedで試してみた結果。
(wavファイルが公開されていないが、おそらく男性と思われる)

変換結果



話者Embedを適切に作れれば、求める音声に変換できるかもしれない。