[論文メモ] ControlVC: Zero-Shot Voice Conversion with Time-Varying Controls on Pitch and Rhythm

arxiv.org

時間レベルでピッチやリズムの調整ができるZero-Shot Voice Conversionの提案

既存のVoice Conversion(VC)システムはピッチシフトを提供していても発話レベルのため時間レベルのピッチシフトができないのでなんとかしたいというお気持ち。

手法

目的は時間レベルでのピッチ・リズムの調整ができるノンパラレルのzero-shot VC。

システム全体像は図1参照。

VCシステムは以下の3つのステージからなる。

  • TD-PSOLAによる前処理
  • 前処理結果からの特徴抽出
  • HiFi-GANによる音声合成

前処理ではピッチの埋め込み、コンテンツ情報の抽出、話者埋め込みの抽出の3つを行う。

ピッチ埋め込み

ピッチ情報はYAAPT アルゴリズムというものを利用する。
リズム変更した音声にYAAPTを適用することでピッチシーケンスが得られる。
ピッチシーケンスはVQ-VAEにより埋め込み表現になる。

VQ-VAEはピッチの再構成で学習しておく。

コンテンツ情報

コンテンツ情報はパブリックに利用可能なLibriSpeechで学習済みのHuBERTモデルを利用する。
HuBERTに音声を入力することでフレームレベルの中間特徴のシーケンスが得られる
しかしこの中間特徴には話者情報が含まれている可能性があるのでそのまま使えない。
そこで予めHuBERTにLibriSpeechのデータを入力した抽出特徴に対してmini-batch K-meansを適用してセントロイドを取得しておく。
直接中間特徴を利用するのではなくセントロイドに置き換えることで話者情報を排除する。
なおセントロイドはK=100。

話者埋め込み

zero-shotで話者変換するために話者埋め込みのネットワークを作成する。
アーキテクチャは既存手法を参考にしたLSTM x 2 + FCのシンプルな構造。
VoxCelebとLibrispeechデータセットをGE2E lossで学習し、これを利用する。

HiFi-GAN

ピッチ埋め込み、コンテンツ情報、話者埋め込みの3つを入力として音声を合成する。
話者埋め込みに関してはフレームサイズ分のコピーを行う。
アーキテクチャに関しては、入力がメルスペクトログラムから上記の3つに変更しただけで基本そのまま。

リズム・ピッチ変更

まずリズムの変更。
ピッチ等を保ったままリズム変更をするためにtime-domain pitch synchronous overlap and add (TD-PSOLA)を利用する。
PD-PSOLAによりリズム変更された音声が得られる。
次にリズム変更された音声からYAAPTを利用してピッチ情報を得る。
あとはこのピッチ情報からピッチ埋め込み、リズム変更した音声からコンテンツ情報、ターゲット話者から話者埋め込みをそれぞれ抽出してHiFi-GANで音声合成するだけ。

実験・結果

データセットはCSTR VCTK。110人の話者のうち、100人を学習に10人(男5女5)をテストに利用。
ベースラインが存在しないのでTD-PSOLAにlinear predictive coding (LPC)とAutoVCを用いた2つの変換方法を作成し評価。




所管

正直ほとんど想像通りの手法であまり目新しさはなかった。
時間レベルのピッチ・リズム変更の既存手法がないからとはいえ比較対象がひどすぎるのでは?
発話レベルでのピッチシフトをしての既存手法と比較もすべきな気がする。
HuBERTの中間特徴をK-meansでクラスタリングし、事前にセントロイドを用意して埋め込むのは使えそう。