Web Analytics

ZipVoice

⭐ 661 stars Portuguese by k2-fsa

🌐 Idioma

ZipVoice⚡

Texto para Fala Zero-Shot Rápido e de Alta Qualidade com Flow Matching

Visão Geral

ZipVoice é uma série de modelos TTS de zero-shot rápidos e de alta qualidade baseados em flow matching.

1. Principais características

2. Variantes do modelo

Nome do Modelo Descrição Artigo Demo
ZipVoice O modelo básico que suporta TTS zero-shot de locutor único em chinês e inglês.
ZipVoice-Distill Versão destilada do ZipVoice, com velocidade aprimorada e mínima degradação de desempenho.
ZipVoice-Dialog Modelo de geração de diálogos baseado no ZipVoice, capaz de gerar diálogos falados de dois participantes em canal único.
ZipVoice-Dialog-Stereo A variante estéreo do ZipVoice-Dialog, permitindo geração de diálogos em dois canais com cada falante atribuído a um canal distinto.

Novidades

2025/07/14: ZipVoice-Dialog e ZipVoice-Dialog-Stereo, dois modelos de geração de diálogos falados, foram lançados. arXiv demo page

2025/07/14: O conjunto de dados OpenDialog, um dataset de diálogos falados de 6,8 mil horas, foi lançado. Baixe em hf, ms. Confira os detalhes em arXiv.

2025/06/16: ZipVoice e ZipVoice-Distill foram lançados. arXiv demo page

Instalação

1. Clone o repositório ZipVoice

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

2. (Opcional) Crie um ambiente virtual Python

python3 -m venv zipvoice
source zipvoice/bin/activate

3. Instale os pacotes necessários

pip install -r requirements.txt

4. Instale o k2 para treinamento ou inferência eficiente

k2 é necessário para o treinamento e pode acelerar a inferência. No entanto, você ainda pode usar o modo de inferência do ZipVoice sem instalar o k2.

Nota: Certifique-se de instalar a versão do k2 que corresponde à sua versão do PyTorch e do CUDA. Por exemplo, se você estiver usando pytorch 2.5.1 e CUDA 12.1, você pode instalar o k2 da seguinte forma:

pip install k2==1.24.4.dev20250208+cuda12.1.torch2.5.1 -f https://k2-fsa.github.io/k2/cuda.html
Consulte https://k2-fsa.org/get-started/k2/ para mais detalhes. Usuários na China continental podem consultar https://k2-fsa.org/zh-CN/get-started/k2/.

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

Uso

1. Geração de fala de um único locutor

Para gerar fala de um único locutor com nossos modelos pré-treinados ZipVoice ou ZipVoice-Distill, use os seguintes comandos (Os modelos necessários serão baixados do HuggingFace):

#### 1.1 Inferência de uma única sentença

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 Inferência de uma lista de sentenças

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

2. Geração de fala em diálogo

#### 2.1 Comando de inferência

Para gerar diálogos falados entre duas pessoas com nossos modelos pré-treinados ZipVoice-Dialogue ou ZipVoice-Dialogue-Stereo, use os seguintes comandos (Os modelos necessários serão baixados do HuggingFace):

python3 -m zipvoice.bin.infer_zipvoice_dialog \
    --model-name "zipvoice_dialog" \
    --test-list test.tsv \
    --res-dir results
que geram diálogos mono e estéreo, respectivamente.

#### 2.2 Formatos de entrada

Cada linha do test.tsv está em um dos seguintes formatos:

(1) Formato de prompt mesclado onde os áudios e transcrições dos prompts de dois falantes são mesclados em um único arquivo wav de prompt:

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

(2) Formato de prompt dividido onde os áudios e transcrições de dois falantes existem em arquivos separados:

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

3 Orientações para melhor uso:

#### 3.1 Comprimento do prompt

Recomendamos um arquivo wav de prompt curto (por exemplo, menos de 3 segundos para geração de fala de um único falante, menos de 10 segundos para geração de diálogos) para maior velocidade de inferência. Um prompt muito longo irá desacelerar a inferência e prejudicar a qualidade da fala.

#### 3.2 Otimização de velocidade

Se a velocidade de inferência não for satisfatória, você pode acelerá-la da seguinte forma:

#### 3.3 Controle de memória

O texto fornecido será dividido em partes com base em pontuação (para geração de fala de um único falante) ou símbolo de troca de falante (para geração de diálogos). Em seguida, os textos divididos serão processados em lotes. Portanto, o modelo pode processar textos arbitrariamente longos com uso de memória quase constante. Você pode controlar o uso de memória ajustando o parâmetro --max-duration.

#### 3.4 Avaliação "Bruta"

Por padrão, pré-processamos as entradas (wav de prompt, transcrição do prompt e texto) para inferência eficiente e melhor desempenho. Se você quiser avaliar o desempenho "bruto" do modelo usando exatamente as entradas fornecidas (por exemplo, para reproduzir os resultados do nosso artigo), pode passar --raw-evaluation True.

#### 3.5 Texto curto

Ao gerar fala para textos muito curtos (por exemplo, uma ou duas palavras), a fala gerada pode, às vezes, omitir certas pronúncias. Para resolver esse problema, você pode passar --speed 0.3 (onde 0.3 é um valor ajustável) para estender a duração da fala gerada.

#### 3.6 Corrigindo caracteres polifônicos chineses pronunciados incorretamente

Usamos pypinyin para converter caracteres chineses em pinyin. No entanto, ocasionalmente pode pronunciar incorretamente caracteres polifônicos (多音字).

Para corrigir manualmente essas pronúncias incorretas, coloque o pinyin corrigido entre sinais de menor < > e inclua o marcador de tom.

Exemplo:

> Nota: Se quiser atribuir manualmente múltiplos pinyins, coloque cada pinyin entre < >, por exemplo: 这把十公分

#### 3.7 Remover longos períodos de silêncio da fala gerada

O modelo determinará automaticamente as posições e durações dos silêncios na fala gerada. Ocasionalmente, há longos períodos de silêncio no meio da fala. Se você não quiser isso, pode passar --remove-long-sil para remover longos silêncios no meio da fala gerada (os silêncios nas bordas serão removidos por padrão).

#### 3.8 Download do modelo

Se você tiver problemas para conectar ao HuggingFace ao baixar os modelos pré-treinados, tente mudar o endpoint para o site espelho: export HF_ENDPOINT=https://hf-mirror.com.

Treine Seu Próprio Modelo

Veja o diretório egs para exemplos de treinamento, ajuste fino e avaliação.

Implantação em C++

Confira sherpa-onnx para a solução de implantação em C++ na CPU.

Discussão & Comunicação

Você pode discutir diretamente nas Issues do Github.

Você também pode escanear o código QR para entrar em nosso grupo no WeChat ou seguir nossa conta oficial do WeChat.

| Grupo WeChat | Conta Oficial WeChat | | ------------ | ------------------- | |wechat |wechat |

Citação

@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 ---