Web Analytics

ZipVoice

⭐ 661 stars Spanish by k2-fsa

🌐 Idioma

ZipVoice⚡

Texto a Voz Rápido y de Alta Calidad Zero-Shot con Flow Matching

Descripción General

ZipVoice es una serie de modelos TTS de cero-shot rápidos y de alta calidad basados en flow matching.

1. Características clave

2. Variantes del modelo

Nombre del Modelo Descripción Artículo Demo
ZipVoice El modelo básico que soporta TTS de un solo hablante en chino e inglés con cero-shot.
ZipVoice-Distill La versión destilada de ZipVoice, con velocidad mejorada y mínima degradación de rendimiento.
ZipVoice-Dialog Un modelo de generación de diálogos basado en ZipVoice, capaz de generar diálogos hablados de dos partes en un solo canal.
ZipVoice-Dialog-Stereo La variante estéreo de ZipVoice-Dialog, que permite la generación de diálogos en dos canales con cada hablante asignado a un canal distinto.

Noticias

2025/07/14: Se lanzan ZipVoice-Dialog y ZipVoice-Dialog-Stereo, dos modelos para generación de diálogos hablados. arXiv demo page

2025/07/14: Se publica el conjunto de datos OpenDialog, un dataset de diálogos hablados de 6.8k horas. Descárgalo en hf, ms. Consulta detalles en arXiv.

2025/06/16: Se lanzan ZipVoice y ZipVoice-Distill. arXiv demo page

Instalación

1. Clona el repositorio de ZipVoice

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

2. (Opcional) Crear un entorno virtual de Python

python3 -m venv zipvoice
source zipvoice/bin/activate

3. Instale los paquetes requeridos

pip install -r requirements.txt

4. Instala k2 para entrenamiento o inferencia eficiente

k2 es necesario para el entrenamiento y puede acelerar la inferencia. Sin embargo, aún puedes usar el modo de inferencia de ZipVoice sin instalar k2.

Nota: Asegúrate de instalar la versión de k2 que coincida con tu versión de PyTorch y CUDA. Por ejemplo, si estás usando pytorch 2.5.1 y CUDA 12.1, puedes instalar k2 de la siguiente manera:

pip install k2==1.24.4.dev20250208+cuda12.1.torch2.5.1 -f https://k2-fsa.github.io/k2/cuda.html
Por favor, consulte https://k2-fsa.org/get-started/k2/ para más detalles. Los usuarios en China continental pueden consultar https://k2-fsa.org/zh-CN/get-started/k2/.

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

Uso

1. Generación de voz de un solo hablante

Para generar voz de un solo hablante con nuestros modelos preentrenados ZipVoice o ZipVoice-Distill, utilice los siguientes comandos (los modelos necesarios se descargarán desde HuggingFace):

#### 1.1 Inferencia de una sola oración

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 Inferencia de una lista de oraciones

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

2. Generación de habla en diálogo

#### 2.1 Comando de inferencia

Para generar diálogos hablados de dos partes con nuestros modelos preentrenados ZipVoice-Dialogue o ZipVoice-Dialogue-Stereo, utilice los siguientes comandos (los modelos requeridos se descargarán desde HuggingFace):

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

#### 2.2 Formatos de entrada

Cada línea de test.tsv está en uno de los siguientes formatos:

(1) Formato de prompt combinado donde los audios y transcripciones de los prompts de dos hablantes se combinan en un solo archivo wav de prompt:

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

(2) Formato de prompt dividido donde los audios y transcripciones de dos hablantes existen en archivos separados:

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

3 Guía para un mejor uso:

#### 3.1 Longitud del prompt

Recomendamos un archivo wav de prompt corto (por ejemplo, menos de 3 segundos para generación de discurso de un solo hablante, menos de 10 segundos para generación de diálogo) para una velocidad de inferencia más rápida. Un prompt muy largo ralentizará la inferencia y degradará la calidad del discurso.

#### 3.2 Optimización de velocidad

Si la velocidad de inferencia no es satisfactoria, puede acelerarla de la siguiente manera:

#### 3.3 Control de memoria

El texto dado se dividirá en fragmentos según la puntuación (para generación de discurso de un solo hablante) o el símbolo de cambio de hablante (para generación de diálogo). Luego, los textos fragmentados se procesarán por lotes. Por lo tanto, el modelo puede procesar textos de cualquier longitud con un uso de memoria casi constante. Puede controlar el uso de memoria ajustando el parámetro --max-duration.

#### 3.4 Evaluación "cruda"

Por defecto, preprocesamos las entradas (wav de prompt, transcripción de prompt y texto) para inferencia eficiente y mejor desempeño. Si desea evaluar el desempeño "crudo" del modelo usando exactamente las entradas proporcionadas (por ejemplo, para reproducir resultados de nuestro artículo), puede pasar --raw-evaluation True.

#### 3.5 Texto corto

Al generar voz para textos muy cortos (por ejemplo, una o dos palabras), el discurso generado puede omitir ciertas pronunciaciones. Para resolver este problema, puede pasar --speed 0.3 (donde 0.3 es un valor ajustable) para extender la duración del discurso generado.

#### 3.6 Corrección de la pronunciación de caracteres chinos polifónicos

Utilizamos pypinyin para convertir caracteres chinos a pinyin. Sin embargo, ocasionalmente puede pronunciar incorrectamente caracteres polifónicos (多音字).

Para corregir manualmente estas malas pronunciaciones, encierre el pinyin corregido entre signos de menor y mayor < > e incluya la marca de tono.

Ejemplo:

> Nota: Si desea asignar manualmente varios pinyins, encierre cada pinyin con <>, por ejemplo, 这把十公分

#### 3.7 Eliminar silencios largos del habla generada

El modelo determinará automáticamente las posiciones y longitudes de los silencios en el habla generada. Ocasionalmente hay un largo silencio en el medio del discurso. Si no desea esto, puede pasar --remove-long-sil para eliminar los silencios largos en medio del habla generada (los silencios en los bordes se eliminarán por defecto).

#### 3.8 Descarga del modelo

Si tiene problemas para conectarse a HuggingFace al descargar los modelos pre-entrenados, intente cambiar el endpoint al sitio espejo: export HF_ENDPOINT=https://hf-mirror.com.

Entrene su propio modelo

Consulte el directorio egs para ejemplos de entrenamiento, ajuste fino y evaluación.

Despliegue en C++

Consulte sherpa-onnx para la solución de despliegue en C++ en CPU.

Discusión y comunicación

Puede discutir directamente en Github Issues.

También puede escanear el código QR para unirse a nuestro grupo de wechat o seguir nuestra cuenta oficial de wechat.

| Grupo de Wechat | Cuenta oficial de Wechat | | --------------- | ------------------------ | |wechat |wechat |

Citación

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