ピッチトロン

- トレーニングDBは普通の人々からの中立的な声であるにもかかわらず、スタイリッシュなスピーチを生成できる韻律転送ツールキット。
- 韓国方言(京都、cheolla)と感情的な韻律、および中立的な対話を移すことができます。
- ハードピッチトロンは、韻律を厳密に転送するためのものであるため、参照オーディオの文構造とターゲット文のより良い一致です。
- ソフトピッチトロンは、リファレンスオーディオとターゲット文もコンテンツがまったく異なる自然なサウンドの韻律転送を追求します。
- このプロジェクトでリリースしているDBは、emotion_ttsで入手できます
- オーディオサンプルはhttp://jsh-tts.tistory.com/entry/pitchtronで入手できます
- Pitchtron Paper:https://arxiv.org/abs/2005.10456
3つの枝の違い
- ここで提供される3つのブランチはすべて、韻律転送用です。
- 希望のスタイル、文、声のスピーチを生成できます。
- リファレンスオーディオのスピーカーは誰でもかまいません。その人はトレーニングデータに含める必要はありません。
- ターゲットスピーカー(合成オーディオの音声)は、トレーニングデータに含める必要があります。
- ハードで柔らかいピッチトーンを使用して、モデルが単純でニュートラルなスピーチでのみ訓練されていても、「京都」方言、「Cheolla」方言、感情的なスタイルで合成できます。
- 一方、グローバルスタイルのトークンの場合、トレーニング時間中に希望するスタイルのDBが必要です。
- 私は韓国の京都anc cheolla方言で話すためにこのピッチトロンを提案しました。
- これらの方言のDBは非常に限られており、「ピッチの輪郭」は自然にそれらを参照するための鍵です。これは、他の多くのピッチアクセント言語(日本語)、音色のランゴージ(中国)、感情的なスピーキングスタイルにも当てはまります。
| 時間分解能 | 線形制御 | ボーカルレンジ調整 | 非平行参照 | 目に見えないスタイルのサポート | 寸法分析要件 |
|---|
| GST | x | x | x | o | x | o |
| ソフトピッチトロン | o | * | o | o | o | x |
| ハードピッチトロン | o | o | o | ** | o | x |
- *:ソフトピッチトロンは、自然に聞こえる限り、ピッチを制御できます。ターゲットスピーカーの声の範囲がない場合、自然な音を出すためにクリップされます。
- **:ハードピッチトロンは、限られた非平行参照を許可します。
- 限られた非平行:テキストは異なる場合がありますが、文の構造は一致する必要があります。
| 文 |
|---|
| 参照 | 「아니요지는지는그짝허고」 |
| ターゲット | 「그래요갸는갸는친구허고」 |
- 時間分解能:Timestepによってスタイルを異なる方法で制御できますか?
- 線形制御:ピッチ(注)がスケーリングされる量に正確に制御できますか?入力が変化するにつれて、埋め込み寸法のスケールの変化を把握するために、埋め込みスペースを探索する必要はありませんか?
- ボーカルレンジの調整:参照スピーカーとターゲットスピーカーのボーカル範囲が劇的に異なる場合、ターゲットスピーカーのボーカル範囲で自然に参照できますか?
- 非平行参照:参照文とターゲット文が異なる場合、自然に合成できますか?
- 目に見えないスタイルのサポート:目的のリファレンスオーディオがトレーニング中に見られなかったスタイルの場合、自然に転送できますか?
- ディメンション分析の要件:このモデルを制御する属性を制御するトークン/ディメンションがどのトークン/ディメンションを制御するかを分析する必要がありますか?
1。ソフトピッチトロン
- このブランチは、並行して限られた非平行および非平行な文の監視されていない韻律移転を提供します。
- 並列:参照オーディオ文とターゲット合成文の一致。
- 限られた非平行:上記で言及されています。
- 非平行:参照オーディオ文とターゲット合成文は一致する必要はありません。
- グローバルスタイルのトークンに似ていますが、いくつかの利点があります。
- トレーニング中に見えないスタイルにとってはるかに堅牢です。
- 制御がはるかに簡単です。
- 各トークンが何をするかを確認するためにトークンや寸法を分析する必要はありません。
- リファレンスオーディオのピッチ範囲をスケーリングして、ターゲットスピーカーのピッチ範囲に合わせて、性別間転送がより自然になるようにすることができます。
- また、すべての音素入力のピッチを制御することもできます
- リファレンスオーディオのピッチ範囲は、ターゲットスピーカーのそれに適合するようにスケーリングされているため、性別間転送がより自然になります。
- ピッチに対するあなたのコントロールはそれほど厳格ではないため、自然に聞こえる量にのみスケーリングします。
2。ハードピッチトロン
- このブランチは、監視されていない並行していない「限られた非平行な」監視されていない韻律移転を提供します。
- 代わりに、リズムとピッチはリファレンスオーディオとまったく同じです。
- リファレンスオーディオのピッチ範囲は、ターゲットスピーカーのそれに適合するようにスケーリングされているため、性別間転送がより自然になります。
- ピッチ範囲を厳密に制御します。不自然な音が生じる場合でも、スケーリングする量になります。
3。グローバルスタイルトークン
- グローバルスタイルトークンの実装。グローバルスタイルトークン
- ピッチトロンとは異なり、グローバルスタイルのトークンは、トレーニング段階で見られるスタイルでのみうまく機能する傾向があります。
- ピッチ範囲をスケーリングすることはできません。リファレンスオーディオがターゲットスピーカーのボーカル範囲から外れている場合、騒々しいサウンドが生じます。
- トレーニング中に目に見えない新しいスタイルに堅牢ではないため、エネルギーが大きすぎたり、一時停止しすぎたりする音声が生成されることがあります。
マルチスピーカーの韓国TTSのために実行するための前処理手順
python preprocess.py --dataset={following keywords}
それらを次の順序で実行します。ニーズに応じて、一部をオプトアウトできます。
- selvas_multispeaker_pron
- public_korean_pron
- Integrate_dataset
- check_file_integrity
- Generate_mel_f0
1。SELVAS_MULTISPEAKER_PRON
- 各スピーカーの下に生のPCMからWAV_22050へ
- src: '{data_root}/{speaker}/raw/*。pcm'
- dst: '{data_root}/{speaker}/wav_22050/*。wav'
- 25トップdbでトリム
- データ分割:400オーディオごとに、テスト用に評価し、同じようにします
- 電車:33194 WAVS
- 評価:83波
- テスト:84波
- Phoneme *filelists/single_language_selvas/train_file_list_pron.txtにあるスクリプトでメタファイルを生成します
2。public_korean_pron
- ダウンロード先:서울말낭독체발화발화
- サンプリングレートを22050 Hzに正規化します(このDBには不規則なSRがあります)
- 上位25 dBのトリム
- ソース:
- WAV_16000/{スピーカー}/*。wav
- pron/{スピーカー}/t **。txt
- スクリプトから除外:
- WAVを解凍してWAV_16000に移動するためのスクリプトは含まれていません。あなたは自分でこの形でそれを作る必要があります
- すべてのスピーカーのテキストファイルはこのDBで等しいので、この共有スクリプトを文献で手動で分割しました(Newlineエラーが欠落しているため、手動で行う必要がありました)
- また、G2Pのスクリプトも含まれていません
- このDBの追加エラーは次のとおりです
1. Missing speaker: fy15, mw12
2. Wrong data format: mw13_t01_s11.wav, mw13_t01_s12.wav, mw02_t10_s08.wav
3. Overlapping files and naming mistakes: mv11_t07_s4' (==mv11_t07_s40), fy17_t15_s18(==fy17_t16_s01), fv18_t07_s63(==fv18_t07_s62)
- DST:WAV_22050/{スピーカー}/*。WAV
3。Integrate_Dataset
- 2つの韓国DBを統合しています。
- これは、異なる言語の複数のDBがある多言語TTSに一般化できます。
- したがって、各dbに対応する言語コードは、このステップで作成された統合メタテキストファイルに追加されます。
- 方法
- ソースファイルリスト( 'train_file_lists'、 'eval_file_lists'、 'test_file_lists')とターゲットファイルリスト(ターゲット_train_file_list、target_eval_file_list、target_test_file_list)を変更します。
- _integrate()メソッドを変更して、各DBの言語コードを指定することをお勧めします。申し訳ありませんが、今のところハードコッドです。
- preprocess.pyを実行します
python preprocess.py --dataset=integrate_dataset
4。Check_file_integrity
- このステップでは、読み取れないWAVパスを備えたメタファイルを生成します。
- 最終的なフィルリストからそれらを削除したり、調査を行ったりすることがあります。それはあなたにあります。このステップでは、これらの検出されたファイルをフィルリストから削除しません。
- Out:uppatic_merge_korean_pron _ {}。txt
5。Generate_mel_f0(オプション)
- このステップはオプションです。このステップは、トレーニングとファイルとして保存するための機能を抽出します。
- SRC:WAV_22050/*。WAV
- dst:mel/*。ptおよびf0/*。pt
6.単一のスピーカーDBで最初のいくつかのエポックを初期化します
- 独立した列車、単一のスピーカー用の有効なフィルリストを準備します
- 単一のスピーカートレーニングと検証のためのファイルもマルチスピーカーのフィルリストに含まれています。
- 単一のスピーカーDBで最初の30エポックをトレーニングしたことを実験しましたが、エンコーダーデコーダーのアライメントを大いに学習するのに役立ちました。
トレーニング方法は?
1。コマンド
python train.py {program arguments}
2。プログラムの引数
| オプション | 必須 | 目的 |
|---|
| -o | o | チェックポイントを保存するためのディレクトリパス。 |
| -C | x | ロードする前払いのチェックポイントのパス。 |
| -l | o | テンソルボードのログをドロップするログディレクトリ。 |
3。前処理されたモデル
*前処理されたモデルは音素で訓練されています。合成するテキストを提供するとき、彼らはフォネーを入力として期待しています。
| モデル | 事前に保護されたチェックポイント | マッチングハイパーパラメーター |
|---|
| ソフトピッチトロン | ソフトピッチトロン | 構成 |
| ハードピッチトロン | ハードピッチトロン | 構成 |
| グローバルスタイルトークン | GST | 構成 |
| WaveGlow Vocoder | 波動 | - |
統合する方法は?
1。ソフトピッチトロン
python inferent_soft_pitchtron.py
2。ハードピッチトロン
python inference_hard_pitchtron.py
3。GST
python inference_gst_tts.py
ヒント!
- ひび割れを防ぐには、参照オーディオボーカル範囲をターゲットスピーカーボーカル範囲にスケーリングする必要があります。
- その部分はコードに実装されていますが、ターゲットスピーカーのボーカル範囲は、10個のオーディオのみをサンプリングし、Max-Minを分散として使用することにより粗く計算されます。
- ターゲットスピーカーのボーカル範囲により正確な統計を使用すると、はるかに優れたサウンドが得られます。
謝辞
- この資料は、産業技術革新プログラム(No. 10080667、音響源の多様化を通じてロボットの感情と性格を表現するための会話の音声合成技術の開発)の下で、貿易産業&エネルギー省(Motie、Motie、韓国)によってサポートされている作業に基づいています。
- 私はこの素晴らしい男から音素のカバーへのグラフェムに関する助けを得ました=> jeongpil_lee
- このリポジトリは、次のPaper =>(Pitchtron)https://arxiv.org/abs/2005.10456の著者実装です
- 参照リポジトリ
| 貢献 | URL |
|---|
| Tacotron2 | https://github.com/nvidia/tacotron2 |
| メロトロン | https://github.com/nvidia/mellotron |
| 波動 | https://github.com/nvidia/waveglow |
| 韓国のテキスト処理 | https://github.com/keithito/tacotron |