<> 5 июля 2024 г.: выпущена последняя контрольная точка AR: повышена стабильность вывода. Скоро будет очень большое обновление!
Это репозиторий модели английской речи (TTS) MARS5 от CAMB.AI.
Модель соответствует двухэтапному конвейеру AR-NAR с совершенно новым компонентом NAR (дополнительную информацию см. в разделе «Архитектура»).
Используя всего лишь 5 секунд аудио и фрагмент текста, MARS5 может генерировать речь даже для просодически сложных и разнообразных сценариев, таких как спортивные комментарии, аниме и многое другое. Посмотрите нашу демо-версию:
Полное видео смотрите здесь:
Рис . : Схема высокоуровневой архитектуры MARS5. Учитывая текст и эталонный звук, функции грубого (L0) речевого кодека получаются с помощью модели авторегрессионного преобразователя. Затем текстовые, справочные и грубые функции уточняются в полиномиальной модели DDPM для получения оставшихся значений кодовой книги кодека. Затем выходные данные DDPM кодируются для получения окончательного звука.
Поскольку модель обучается на необработанном аудио вместе с текстом, закодированным парами байтов, ею можно управлять с помощью таких вещей, как пунктуация и использование заглавных букв. Например, чтобы добавить паузу, добавьте запятую к этой части стенограммы. Или, чтобы подчеркнуть слово, напишите его в расшифровке заглавными буквами. Это обеспечивает довольно естественный способ управления просодией сгенерированного вывода.
Идентичность говорящего определяется с использованием эталонного аудиофайла продолжительностью от 2 до 12 секунд, длина которого составляет около 6 секунд, что дает оптимальные результаты. Кроме того, предоставляя расшифровку ссылки, MARS5 позволяет выполнить « глубокое клонирование », которое улучшает качество клонирования и вывода за счет увеличения времени на создание звука. Более подробную информацию об этой и других характеристиках и моделях модели можно найти в папке «Документация».
Мы используем torch.hub
, чтобы упростить загрузку модели — клонирование репозитория не требуется. Шаги для выполнения вывода просты:
Установка с помощью pip :
Требования:
pip install --upgrade torch torchaudio librosa vocos encodec safetensors regex
import torch , librosa
mars5 , config_class = torch . hub . load ( 'Camb-ai/mars5-tts' , 'mars5_english' , trust_repo = True )
# The `mars5` contains the AR and NAR model, as well as inference code.
# The `config_class` contains tunable inference config settings like temperature.
(Необязательно) Загрузите модель из Huggingface (убедитесь, что репозиторий клонирован)
from inference import Mars5TTS , InferenceConfig as config_class
import torch , librosa
mars5 = Mars5TTS . from_pretrained ( "CAMB-AI/MARS5-TTS" )
# Load reference audio between 1-12 seconds.
wav , sr = librosa . load ( '.wav' ,
sr = mars5 . sr , mono = True )
wav = torch . from_numpy ( wav )
ref_transcript = ""
Примечание: Справочная расшифровка не является обязательной. Передайте его, если хотите сделать глубокий клон.
MARS5 поддерживает 2 вида вывода: поверхностный, быстрый вывод, при котором вам не нужна расшифровка ссылки (мы называем это поверхностным клонированием ), и второй, более медленный, но обычно более качественный способ, который мы называем глубоким клонированием . Чтобы использовать глубокий клон, вам понадобится расшифровка запроса. Дополнительную информацию об этом см. в архитектуре модели.
# Pick whether you want a deep or shallow clone. Set to False if you don't know prompt transcript or want fast inference. Set to True if you know transcript and want highest quality.
deep_clone = True
# Below you can tune other inference settings, like top_k, temperature, top_p, etc...
cfg = config_class ( deep_clone = deep_clone , rep_penalty_window = 100 ,
top_k = 100 , temperature = 0.7 , freq_penalty = 3 )
ar_codes , output_audio = mars5 . tts ( "The quick brown rat." , wav ,
ref_transcript ,
cfg = cfg )
# output_audio is (T,) shape float tensor corresponding to the 24kHz output audio.
Вот и все! Эти настройки по умолчанию дают довольно хорошие результаты, но вы можете свободно настраивать параметры вывода, чтобы оптимизировать вывод для вашего конкретного случая использования. См. код InferenceConfig
или демонстрационный блокнот для получения информации и документации по всем различным настройкам вывода.
Несколько советов для достижения наилучшего качества:
Получить из DockerHub
Вы можете напрямую получить образ Docker с нашей страницы DockerHub.
Стройте самостоятельно
Вы можете создать собственный образ из предоставленного Dockerfile в этом репозитории, выполнив следующую команду.
cd MARS5-TTS
docker build -t mars5ttsimage ./docker
Примечание. Это изображение следует использовать в качестве базового образа, поверх которого вы можете добавить собственный сценарий вывода в файле Dockerfile или в docker-compose. Изображения, которые непосредственно генерируют выходные данные, скоро будут добавлены в Docker Hub и в виде Dockerfiles в этом репозитории.
Контрольно-пропускные пункты
Контрольные точки для MARS5 представлены на вкладке «Выпуски» этого репозитория GitHub. Мы предоставляем два КПП:
'vocab'
и соответствует примерно тому же формату, что и сохраненный токенизатор minbpe. Контрольные точки предоставляются как в виде контрольных точек pytorch .pt
, так и в виде контрольных точек Safetensors .safetensors
. По умолчанию torch.hub.load()
загружает версию Safetensors, но вы можете указать, какую версию контрольной точки вы предпочитаете, с помощью аргумента ckpt_format='safetensors'
или ckpt_format='pt'
при вызове in torch.hub.load()
. Например, для принудительного формата защитных датчиков:
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='safetensors')
Или принудительно использовать формат pytorch .pt
при загрузке контрольных точек:
torch.hub.load('Camb-ai/mars5-tts', 'mars5_english', ckpt_format='pt')
Требования к оборудованию :
Вы должны иметь возможность хранить как минимум 750+450 миллионов параметров на графическом процессоре и делать выводы с 750 миллионами активных параметров.
Если у вас нет необходимых требований к оборудованию и вы просто хотите использовать MARS5 в своих приложениях, вы можете использовать его через наш API. Если вам нужны дополнительные кредиты, чтобы протестировать его для вашего варианта использования, напишите по адресу [email protected]
.
MARS5 на данный момент не идеален, и мы работаем над улучшением его качества, стабильности и производительности. Области, которые мы хотим улучшить, и приветствуем любой вклад в:
Конкретные задачи
site-packages/torch/nn/functional.py:4840: UserWarning: The operator 'aten::col2im' is not currently supported on the MPS backend and will fall back to run on the CPU. This may have performance implications
. Если вы хотите внести свой вклад в улучшение MARS5, пожалуйста, внесите свой вклад (инструкции приведены ниже).
Мы приветствуем любой вклад в улучшение модели. Как вы можете обнаружить в ходе экспериментов, он может давать действительно отличные результаты, но его все еще можно совершенствовать, чтобы постоянно получать отличные результаты. Нам также хотелось бы увидеть, как вы использовали MARS5 в различных сценариях. Используйте, пожалуйста, знак ? Покажите и расскажите категорию в обсуждениях, чтобы поделиться своими примерами.
Формат вклада :
Предпочтительный способ внести свой вклад в наш репозиторий — создать форк главного репозитория на GitHub:
git remote add upstream [email protected]:Camb-ai/mars5-tts.git
git push --set-upstream origin
Мы открываем исходный код MARS5 на английском языке под GNU AGPL 3.0. По коммерческим запросам или для лицензирования версии MARS с закрытым исходным кодом отправьте электронное письмо по адресу [email protected].
Мы — амбициозная команда, распределенная по всему миру, с единственной целью — сделать так, чтобы голос каждого имел значение. В CAMB.AI мы — исследовательская группа, состоящая из бывших инженеров Siri издателя Interspeech, Карнеги-Меллона, и мы ищем вас в нашу команду.
Мы активно набираем сотрудников; если вы заинтересованы, напишите нам по адресу [email protected]. Посетите нашу страницу вакансий для получения дополнительной информации.
Присоединяйтесь к сообществу CAMB.AI на форуме и в Discord, чтобы делиться с нашей командой любыми предложениями, отзывами или вопросами.
Части кода для этого проекта адаптированы из следующих репозиториев — обязательно ознакомьтесь с ними! Спасибо авторам:
.trim()
: https://librosa.org/doc/main/generated/librosa.effects.trim.html