Llasa 1~8B: модель преобразования текста в речь с открытым исходным кодом для генерации и клонирования речи высокого качества
Общее введение
Llasa-3B - это модель преобразования текста в речь (TTS) с открытым исходным кодом, разработанная аудиолабораторией Гонконгского университета науки и технологий (HKUST Audio). Модель основана на архитектуре Llama 3.2B, которая была тщательно настроена для обеспечения высококачественной генерации речи, которая не только поддерживает несколько языков, но и позволяет выражать эмоции и клонировать речь в соответствии с индивидуальными требованиями. Llasa-3B привлекла внимание многих исследователей и разработчиков благодаря своей выразительности и гибкости в синтезе естественной речи.

Опыт работы: https://huggingface.co/spaces/srinivasbilla/llasa-3b-tts
Список функций
- преобразование текста в речь: Преобразует текст в естественный, плавный звук.
- клонирование речи: Всего 15 секунд аудиозаписи требуется для клонирования конкретного человеческого голоса, включая тембр и эмоции.
- Поддержка нескольких языковПоддерживаются китайский и английский языки, в перспективе планируется расширение на другие языки.
- аффективное выражение: Возможность привнести эмоции в сгенерированную речь повышает ее аутентичность.
- Поддержка нескольких моделей: Доступны параметрические масштабные модели 1B и 3B, а в будущем появятся модели 8B.
- открытое взвешиваниеВсе модели поставляются с открытыми весами, которые могут быть использованы напрямую или дважды доработаны разработчиками, и поддерживают трансформеры и vLLM Рамы.
Использование помощи
Установка и подготовка среды
Чтобы использовать модель Llasa-3B, сначала необходимо подготовить следующее окружение:
Среда Python: Рекомендуется Python 3.9 или выше.
Связанные библиотеки: Требуется установкаtorch
, transformers
, xcodec2
и т.д. библиотеки.
conda create -n xcodec2 python=3.9
conda activate xcodec2
pip install transformers torch xcodec2==0.1.3
Загрузка и выгрузка моделей
Посетите Hugging Face наСтраница Llasa-3BВы можете использовать функцию загрузки моделей Hugging Face напрямую:
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
import soundfile as sf
llasa_3b = 'HKUST-Audio/Llasa-3B'
tokenizer = AutoTokenizer.from_pretrained(llasa_3b)
model = AutoModelForCausalLM.from_pretrained(llasa_3b)
model.eval()
model.to('cuda') # 如果有GPU
Процесс преобразования текста в речь
- Подготовленный текст::
- Введите текст, который нужно преобразовать в речь.
- Предварительная обработка текста::
- Используйте определенный форматированный текст, чтобы направлять модель для генерации речи, например:
input_text = "这是一个测试文本,请转成语音。" formatted_text = f"<|TEXT_UNDERSTANDING_START|>{input_text}<|TEXT_UNDERSTANDING_END|>"
- Используйте определенный форматированный текст, чтобы направлять модель для генерации речи, например:
- Создайте речь::
- Преобразуйте текст в лексему, понятную модели:
chat = [ {"role": "user", "content": "Convert the text to speech:" + formatted_text}, {"role": "assistant", "content": "<|SPEECH_GENERATION_START|>"} ] input_ids = tokenizer.apply_chat_template(chat, tokenize=True, return_tensors='pt', continue_final_message=True) input_ids = input_ids.to('cuda')
- Сгенерируйте голосовой маркер:
speech_end_id = tokenizer.convert_tokens_to_ids('<|SPEECH_GENERATION_END|>') outputs = model.generate(input_ids, max_length=2048, eos_token_id=speech_end_id, do_sample=True, top_p=1, temperature=0.8)
- Преобразуйте текст в лексему, понятную модели:
- декодирование голоса::
- Преобразует сгенерированный маркер обратно в звук:
from xcodec2.modeling_xcodec2 import XCodec2Model model_path = "HKUST-Audio/xcodec2" Codec_model = XCodec2Model.from_pretrained(model_path).eval().cuda() generated_ids = outputs[0][input_ids.shape[1]:-1] speech_tokens = tokenizer.batch_decode(generated_ids, skip_special_tokens=True) speech_ids = [int(token[4:-2]) for token in speech_tokens if token.startswith('<|s_') and token.endswith('|>')] speech_tokens_tensor = torch.tensor(speech_ids).cuda().unsqueeze(0).unsqueeze(0) gen_wav = Codec_model.decode_code(speech_tokens_tensor) sf.write("output.wav", gen_wav[0, 0, :].cpu().numpy(), 16000)
- Преобразует сгенерированный маркер обратно в звук:
клонирование речи
- Запишите или подготовьте около 15 секунд оригинальной звуковой дорожки::
- Используйте записывающее устройство или предоставьте существующий аудиофайл.
- процесс фонетического клонирования::
- Закодируйте исходные звуковые частоты в кодовую книгу, которую может использовать модель:
prompt_wav = sf.read("your_source_audio.wav")[0] # 必须是16kHz采样率 vq_code_prompt = Codec_model.encode_code(torch.from_numpy(prompt_wav).unsqueeze(0).unsqueeze(0).cuda())
- Добавьте звуковые подсказки в процесс создания текста:
speech_ids_prefix = [f"<|s_{id}|>"foridin vq_code_prompt[0, 0, :].tolist()] chat = [ {"role": "user", "content": "Convert the text to speech:" + formatted_text}, {"role": "assistant", "content": "<|SPEECH_GENERATION_START|>" + ''.join(speech_ids_prefix)} ] # 后续步骤与文本转语音相同
- Закодируйте исходные звуковые частоты в кодовую книгу, которую может использовать модель:
предостережение
- Убедитесь, что формат входного аудиосигнала правильный, Llasa-3B поддерживает только аудиосигнал 16 кГц.
- Производительность модели напрямую зависит от качества входного текста и аудио, обеспечивая качество входного сигнала.
© заявление об авторских правах
Авторское право на статью Круг обмена ИИ Пожалуйста, не воспроизводите без разрешения.
Похожие статьи
Нет комментариев...