Web Analytics

ZipVoice

⭐ 748 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 ディレクトリを参照してください。

本番環境へのデプロイ

NVIDIA Triton GPU ランタイム

高いパフォーマンスとスケーラビリティを備えた本番環境へのデプロイには、TensorRT エンジン最適化、同時リクエスト処理、企業向け gRPC/HTTP API を提供する Triton Inference Server 連携 をご確認ください。

CPU デプロイ

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

議論 & コミュニケーション

Github Issues で直接議論できます。

QRコードをスキャンして Wechat グループに参加したり、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-12-30 ---