Web Analytics

ZipVoice

⭐ 661 stars Japanese by k2-fsa

🌐 言語

ZipVoice⚡

Flow Matchingによる高速・高品質ゼロショット音声合成

概要

ZipVoiceは、フローマッチングに基づく高速かつ高品質なゼロショットTTSモデルシリーズです。

1. 主な特徴

2. モデルバリエーション

モデル名 説明 論文 デモ
ZipVoice 中国語と英語のゼロショット単一話者TTSをサポートする基本モデル。
ZipVoice-Distill ZipVoiceの蒸留バージョンで、性能低下を最小限に抑えつつ速度を向上。
ZipVoice-Dialog ZipVoice上に構築された対話生成モデルで、単一チャネルの二者会話音声生成が可能。
ZipVoice-Dialog-Stereo ZipVoice-Dialogのステレオバリアントであり、各話者が異なるチャンネルに割り当てられる2チャンネル対話生成を実現します。

ニュース

2025/07/14: ZipVoice-DialogおよびZipVoice-Dialog-Stereo、2つの音声対話生成モデルをリリースしました。arXiv demo page

2025/07/14: OpenDialogデータセット(6.8k時間の音声対話データセット)を公開しました。ダウンロードはhf, ms。詳細はarXivをご覧ください。

2025/06/16: ZipVoiceおよびZipVoice-Distillをリリースしました。arXiv demo page

インストール

1. ZipVoiceリポジトリをクローンする

git clone https://github.com/k2-fsa/ZipVoice.git

2. (オプション)Pythonの仮想環境を作成する

python3 -m venv zipvoice
source zipvoice/bin/activate

3. 必要なパッケージをインストールする

pip install -r requirements.txt

4. 学習または効率的な推論のためにk2をインストールする

k2は学習に必要であり、推論も高速化できます。ただし、k2をインストールしなくてもZipVoiceの推論モードは利用可能です。

注意: PyTorchとCUDAのバージョンに合ったk2を必ずインストールしてください。例えば、pytorch 2.5.1とCUDA 12.1を使用している場合、以下のようにk2をインストールできます。

pip install k2==1.24.4.dev20250208+cuda12.1.torch2.5.1 -f https://k2-fsa.github.io/k2/cuda.html
詳細については、https://k2-fsa.org/get-started/k2/ を参照してください。 中国本土のユーザーは https://k2-fsa.org/zh-CN/get-started/k2/ を参照してください。

python3 -c "import k2; print(k2.__file__)"

使用方法

1. 単一話者音声生成

事前学習済みのZipVoiceまたはZipVoice-Distillモデルを使用して単一話者の音声を生成するには、以下のコマンドを使用します(必要なモデルはHuggingFaceからダウンロードされます):

#### 1.1 単一文の推論

python3 -m zipvoice.bin.infer_zipvoice \
    --model-name zipvoice \
    --prompt-wav prompt.wav \
    --prompt-text "I am the transcription of the prompt wav." \
    --text "I am the text to be synthesized." \
    --res-wav-path result.wav
#### 1.2 複数文の推論

python3 -m zipvoice.bin.infer_zipvoice \
    --model-name zipvoice \
    --test-list test.tsv \
    --res-dir results

2. 対話音声生成

#### 2.1 推論コマンド

事前学習済みの ZipVoice-Dialogue または ZipVoice-Dialogue-Stereo モデルを使用して二者間の対話音声を生成するには、以下のコマンドを使用します(必要なモデルは HuggingFace からダウンロードされます):

python3 -m zipvoice.bin.infer_zipvoice_dialog \
    --model-name "zipvoice_dialog" \
    --test-list test.tsv \
    --res-dir results
それぞれモノラルおよびステレオの対話を生成します。

#### 2.2 入力フォーマット

test.tsv の各行は、以下のいずれかの形式です:

(1) マージされたプロンプト形式 では、2人の話者の音声と文字起こしが1つのプロンプトwavファイルにマージされています:

{wav_name}\t{prompt_transcription}\t{prompt_wav}\t{text}

(2) 分割プロンプト形式 では、2人の話者の音声と書き起こしが別々のファイルに存在します。

{wav_name}\t{spk1_prompt_transcription}\t{spk2_prompt_transcription}\t{spk1_prompt_wav}\t{spk2_prompt_wav}\t{text}

3 より良い利用のためのガイダンス:

#### 3.1 プロンプトの長さ

推論速度を速くするために、短いプロンプト wav ファイル(例: 単一話者音声生成の場合は3秒未満、対話音声生成の場合は10秒未満)を推奨します。非常に長いプロンプトは推論を遅くし、音声品質を低下させます。

#### 3.2 速度最適化

推論速度が満足できない場合は、以下の方法で高速化できます。

#### 3.3 メモリ制御

指定されたテキストは、句読点(単一話者音声生成の場合)や話者交代記号(対話音声生成の場合)で分割されます。その後、分割されたテキストがバッチ処理されます。これにより、モデルはほぼ一定のメモリ使用量で任意の長さのテキストを処理できます。--max-duration パラメータを調整することでメモリ使用量を制御できます。

#### 3.4 「Raw」評価

デフォルトでは、効率的な推論と性能向上のために(プロンプトwav、プロンプト書き起こし、テキスト)を前処理しています。モデルの「生」の性能を厳密に評価したい場合(例: 論文の結果を再現する場合)は、--raw-evaluation True を指定できます。

#### 3.5 短いテキスト

非常に短いテキスト(例: 1~2単語)の音声を生成する際、生成音声が一部の発音を省略してしまうことがあります。この問題を解決するには、--speed 0.3(0.3は調整可能な値)を指定して、生成音声の持続時間を延長できます。

#### 3.6 中国語の多音字の発音修正

中国語文字をピンインに変換するために pypinyin を使用しています。ただし、多音字(複数の読み方がある漢字)の発音を誤ることがあります。

これらの誤発音を手動で修正するには、修正したピンインを山括弧 < > で囲み、声調記号を含めてください。

例:

> 注意: 複数のピンインを手動で割り当てたい場合は、それぞれを <> で囲んでください。例: 这把十公分

#### 3.7 生成音声から長い無音部分を除去

モデルは生成された音声の無音部分の位置と長さを自動的に判定します。時折、音声の途中に長い無音が発生します。これを避けたい場合は、--remove-long-sil を指定することで、生成音声の途中の長い無音を除去できます(端の無音はデフォルトで除去されます)。

#### 3.8 モデルのダウンロード

事前学習済みモデルのダウンロード時に HuggingFace への接続がうまくいかない場合は、ミラーサイトへのエンドポイント切り替えをお試しください: export HF_ENDPOINT=https://hf-mirror.com

独自モデルの学習

トレーニング、ファインチューニング、評価の例については egs ディレクトリをご覧ください。

C++ デプロイ

CPU 上での C++ デプロイソリューションについては sherpa-onnx をご確認ください。

ディスカッション & コミュニケーション

Github Issues で直接ディスカッションできます。

QRコードをスキャンして WeChat グループに参加したり、公式アカウントをフォローすることもできます。

| WeChat グループ | WeChat 公式アカウント | | ------------ | ----------------------- | |wechat |wechat |

引用

@article{zhu2025zipvoice,
      title={ZipVoice: Fast and High-Quality Zero-Shot Text-to-Speech with Flow Matching},
      author={Zhu, Han and Kang, Wei and Yao, Zengwei and Guo, Liyong and Kuang, Fangjun and Li, Zhaoqing and Zhuang, Weiji and Lin, Long and Povey, Daniel},
      journal={arXiv preprint arXiv:2506.13053},
      year={2025}
}

@article{zhu2025zipvoicedialog, title={ZipVoice-Dialog: Non-Autoregressive Spoken Dialogue Generation with Flow Matching}, author={Zhu, Han and Kang, Wei and Guo, Liyong and Yao, Zengwei and Kuang, Fangjun and Zhuang, Weiji and Li, Zhaoqing and Han, Zhifeng and Zhang, Dong and Zhang, Xin and Song, Xingchen and Lin, Long and Povey, Daniel}, journal={arXiv preprint arXiv:2507.09318}, year={2025} }

--- Tranlated By Open Ai Tx | Last indexed: 2025-10-06 ---