Voicebox: open-source AI для работы с голосом — клонируем, диктуем, создаём

#ai#voice#open-source#tts

Когда в очередной раз понадобилось нарезать голосовые фразы для pet-проекта, я полез в ElevenLabs — и тут же упёрся в лимиты бесплатного тарифа. Гугление привело к Voicebox от Jamie Pine, который за неделю собрал почти 3к звёзд на GitHub. Решил разобраться, стоит ли переносить голосовые эксперименты в open-source.

Что умеет Voicebox

Проект позиционируется как “AI voice studio” с тремя ключевыми фичами:

  1. Клонирование голоса по 30-секундной аудиодорожке
  2. Режим диктовки с live-транскрипцией (полезно для подкастеров)
  3. Генерация речи с тонкой настройкой параметров вроде pitch и speed

Под капотом — комбинация Whisper для транскрибации и собственной TTS-модели. В отличие от ElevenLabs, здесь нет веб-интерфейса — только API и CLI. Зато можно развернуть локально или на своём сервере.

Разворачиваем локально

Установка стандартная для Python-проектов:

git clone https://github.com/jamiepine/voicebox.git
cd voicebox
pip install -r requirements.txt

Но вот первый подводный камень — для работы с GPU потребуется CUDA 11.8 и torch с правильными версиями. В моём случае (Ubuntu 22.04, RTX 3090) пришлось делать:

pip uninstall torch torchaudio
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu118

После этого стартуем демо-сервер:

python -m voicebox.demo

И получаем доступ к веб-интерфейсу на localhost:8000. Здесь уже можно загружать аудио для клонирования и генерировать речь.

Клонируем голос

Попробовал записать 30 секунд своего голоса — результат узнаваемый, но с артефактами. По сравнению с ElevenLabs:

Интересно, что модель неплохо справляется с эмоциональной окраской. Если в исходнике есть интонационные скачки, она их воспроизводит — не идеально, но осмысленно.

Генерация речи через API

Для интеграции в свои проекты есть REST API. Пример запроса на генерацию:

import requests

response = requests.post(
    "http://localhost:8000/api/generate",
    json={
        "text": "Привет, это тестовая фраза",
        "voice_id": "my_cloned_voice",
        "speed": 1.2,
        "pitch": 0.8
    }
)

with open("output.wav", "wb") as f:
    f.write(response.content)

Параметры вроде скорости и тона работают предсказуемо, что удобно для тонкой настройки под конкретный сценарий.

Где это имеет смысл использовать

Из практических кейсов, где Voicebox выглядит лучше коммерческих альтернатив:

  1. Локализация игр — когда нужно быстро нагенерить вариаций фраз для NPC
  2. Прототипирование голосовых интерфейсов — прежде чем платить за коммерческие API
  3. Контент для соцсетей — если привычные TTS-сервисы блокируют ваш акцент

Но для продакшена пока не хватает:

Что дальше

Автор активно развивает проект — в планах добавление:

Если нужно просто потестить голосовые технологии без лимитов — Voicebox отличный вариант. Для коммерческих проектов пока советую присмотреться к fine-tuning’у модели на своих данных. Мой эксперимент с датасетом из 2 часов аудио дал заметно лучшие результаты, чем “из коробки”.


Источник: https://github.com/jamiepine/voicebox