Найти тему
10,2 тыс подписчиков

🌟Parler-TTS: качественный синтез речи по тексту на английском языке.


Parler-TTS - это модели текст-в-речь (TTS), способные генерировать качественную, естественно звучащую речь в заданном стиле (пол, тон, тип речи и т. д.).
Все датасеты обучения, предварительная обработка, код обучения и веса выпускаются публично, что даст возможность сообществу строить на нашей работе и разрабатывать свои собственные модифицированные модели TTS. Обе модели обучались на 45 тысячах часов англоязычных аудиокниг.

Parler-TTS - это авторегрессионная модель, основанная на трансформерах, которая генерирует аудиотокены в причинно-следственном порядке. Код для инференса Parler-TTS оптимизирован для быстрой генерации благодаря совместимости с SDPA и Flash Attention 2.

Архитектура Parler-TTS состоит из трех частей: текстовый кодировщик (Flan-T5), декодер и аудиокодек DAC. Текстовый кодировщик преобразует текст в скрытые состояния, декодер генерирует аудиотокены на основе этих состояний, а аудиокодек восстанавливает аудиосигнал из аудиотокенов.

Модели:

🟢Parler-TTS Mini - 880 миллионов параметров
🟢Parler-TTS Large - 2,3 миллиарда параметров

Характеристиками речи (пол, темп речи, высота тона и реверберация) можно управлять непосредственно через текстовый промпт. Например:

🟠Добавьте промпт "very clear audio" для создания аудио высокого качества, а "very noisy audio" - для высокого уровня фонового шума;
🟠Пунктуация может использоваться для управления просодией генерации - используйте запятые, чтобы добавить небольшие паузы в речь.

▶️Установка и запуск:

# Clone repository and install dependences:
pip install git+https://github.com/huggingface/parler-tts.git

# Inference with random voice
import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf

device = "cuda:0" if torch.cuda.is_available() else "cpu"

model = ParlerTTSForConditionalGeneration.from_pretrained("parler-tts/parler-tts-mini-v1").to(device)
tokenizer = AutoTokenizer.from_pretrained("parler-tts/parler-tts-mini-v1")

prompt = "Hey, how are you doing today?"
description = "A female speaker delivers a slightly expressive and animated speech with a moderate speed and pitch. The recording is of very high quality, with the speaker's voice sounding clear and very close up."

input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device)
prompt_input_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)

generation = model.generate(input_ids=input_ids, prompt_input_ids=prompt_input_ids)
audio_arr = generation.cpu().numpy().squeeze()
sf.write("parler_tts_out.wav", audio_arr, model.config.sampling_rate)y

📌Лицензирование : Apache-2.0 license

🟡Arxiv
🟡Demo
🖥Github [ Stars: 3.4K | Issues: 49 | Forks: 338]


#AI #Parler #ML #TTS
2 минуты