Web Analytics

ZipVoice

⭐ 748 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 de la indicación

Recomendamos un archivo wav de indicación corto (por ejemplo, menos de 3 segundos para generación de habla de un solo hablante, menos de 10 segundos para generación de diálogos) para una velocidad de inferencia más rápida. Una indicación muy larga ralentizará la inferencia y degradará la calidad del habla.

#### 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 habla 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 en lotes. Por lo tanto, el modelo puede procesar textos arbitrariamente largos con 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 (archivo wav de indicación, transcripción de indicación y texto) para una inferencia eficiente y mejor rendimiento. Si desea evaluar el rendimiento "crudo" del modelo usando exactamente las entradas proporcionadas (por ejemplo, para reproducir los resultados de nuestro artículo), puede pasar --raw-evaluation True.

#### 3.5 Texto corto

Al generar habla para textos muy cortos (por ejemplo, una o dos palabras), el habla generada 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 habla generada.

#### 3.6 Corrección de caracteres polifónicos chinos mal pronunciados

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 tiene un silencio largo en medio del discurso. Si no desea esto, puede pasar --remove-long-sil para eliminar silencios largos en medio de la voz generada (los silencios en los extremos se eliminarán por defecto).

#### 3.8 Descarga del modelo

Si tiene problemas para conectarse a HuggingFace al descargar los modelos preentrenados, 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 producción

Tiempo de ejecución NVIDIA Triton GPU

Para un despliegue listo para producción con alto rendimiento y escalabilidad, consulte la integración con Triton Inference Server que ofrece motores TensorRT optimizados, manejo de solicitudes concurrentes y APIs gRPC/HTTP para uso empresarial.

Despliegue en CPU

Consulte sherpa-onnx para la solución de despliegue en C++ sobre 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-12-30 ---