Web Analytics

ZipVoice

⭐ 748 stars Russian by k2-fsa

🌐 Язык

ZipVoice⚡

Быстрый и высококачественный текст-в-голос без обучения на примерах с Flow Matching

Обзор

ZipVoice — это серия быстрых и высококачественных моделей TTS с нулевым обучением, основанных на flow matching.

1. Ключевые особенности

2. Варианты моделей

Название модели Описание Статья Демо
ZipVoice Базовая модель, поддерживающая нулевое обучение TTS для одного говорящего на китайском и английском языках.
ZipVoice-Distill Дистиллированная версия ZipVoice, отличающаяся повышенной скоростью при минимальных потерях качества.
ZipVoice-Dialog Модель для генерации диалогов на основе ZipVoice, способная генерировать одноканальные диалоги между двумя собеседниками.
ZipVoice-Dialog-Stereo Стерео-версия ZipVoice-Dialog, позволяющая создавать диалоги с двумя каналами, при этом каждому собеседнику назначается отдельный канал.

Новости

2025/07/14: Вышли две модели генерации устных диалогов: ZipVoice-Dialog и ZipVoice-Dialog-Stereo. arXiv demo page

2025/07/14: Выпущен датасет OpenDialog — 6,8 тысяч часов устных диалогов. Скачать можно на 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 необходим для обучения и может ускорить вывод. Тем не менее, вы всё равно можете использовать режим вывода ZipVoice без установки k2.

Примечание: Убедитесь, что устанавливаете версию k2, соответствующую вашей версии PyTorch и CUDA. Например, если вы используете 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) Формат объединённого запроса, где аудиозаписи и транскрипции двух реплик объединены в один wav-файл запроса:

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

(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 Короткий текст

При генерации речи для очень коротких текстов (например, одно-два слова) сгенерированная речь иногда может пропускать отдельные звуки. Для решения этой проблемы укажите --speed 0.3 (где 0.3 — настраиваемое значение), чтобы увеличить длительность сгенерированной речи.

#### 3.6 Коррекция ошибочного произношения китайских полифонических иероглифов

Мы используем pypinyin для преобразования китайских иероглифов в пиньинь. Однако иногда он может неправильно произносить многозначные иероглифы (多音字).

Чтобы вручную исправить такие ошибки, заключайте исправленный пиньинь в угловые скобки < > и указывайте тон.

Пример:

> Примечание: Если вы хотите вручную указать несколько пиньиней, заключайте каждый пиньинь в <>, например, 这把十公分

#### 3.7 Удаление длинных пауз из сгенерированной речи

Модель автоматически определяет позиции и длительность пауз в сгенерированной речи. Иногда в середине речи встречаются длительные паузы. Если вы не хотите этого, вы можете передать --remove-long-sil, чтобы удалить длинные паузы в середине сгенерированной речи (краевые паузы удаляются по умолчанию).

#### 3.8 Загрузка модели

Если у вас возникли трудности с подключением к HuggingFace при загрузке предобученных моделей, попробуйте переключить endpoint на зеркальный сайт: export HF_ENDPOINT=https://hf-mirror.com.

Обучение собственной модели

Смотрите каталог egs для примеров обучения, дообучения и оценки.

Промышленное развертывание

NVIDIA Triton GPU Runtime

Для промышленного развертывания с высокой производительностью и масштабируемостью ознакомьтесь с интеграцией Triton Inference Server, которая предоставляет оптимизированные движки TensorRT, обработку параллельных запросов и API gRPC/HTTP для корпоративного использования.

Развертывание на CPU

Посмотрите sherpa-onnx для решения по развертыванию на CPU на C++.

Обсуждение и коммуникация

Вы можете напрямую обсуждать на Github Issues.

Также вы можете отсканировать QR-код, чтобы присоединиться к нашей группе в WeChat или подписаться на наш официальный аккаунт WeChat.

| Wechat Group | Wechat Official Account | | ------------ | ----------------------- | |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 ---