Llasa 1~8B: модель преобразования текста в речь с открытым исходным кодом для генерации и клонирования речи высокого качества

Общее введение

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

Llasa 1~8B:高品质语音生成和克隆的开源文本转语音模型

Опыт работы: https://huggingface.co/spaces/srinivasbilla/llasa-3b-tts

 

Список функций

  • преобразование текста в речь: Преобразует текст в естественный, плавный звук.
  • клонирование речи: Всего 15 секунд аудиозаписи требуется для клонирования конкретного человеческого голоса, включая тембр и эмоции.
  • Поддержка нескольких языковПоддерживаются китайский и английский языки, в перспективе планируется расширение на другие языки.
  • аффективное выражение: Возможность привнести эмоции в сгенерированную речь повышает ее аутентичность.
  • Поддержка нескольких моделей: Доступны параметрические масштабные модели 1B и 3B, а в будущем появятся модели 8B.
  • открытое взвешиваниеВсе модели поставляются с открытыми весами, которые могут быть использованы напрямую или дважды доработаны разработчиками, и поддерживают трансформеры и vLLM Рамы.

 

Использование помощи

Установка и подготовка среды

Чтобы использовать модель Llasa-3B, сначала необходимо подготовить следующее окружение:

Среда Python: Рекомендуется Python 3.9 или выше.
Связанные библиотеки: Требуется установкаtorchtransformersxcodec2и т.д. библиотеки.

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

Процесс преобразования текста в речь

  1. Подготовленный текст::
    • Введите текст, который нужно преобразовать в речь.
  2. Предварительная обработка текста::
    • Используйте определенный форматированный текст, чтобы направлять модель для генерации речи, например:
      input_text = "这是一个测试文本,请转成语音。"
      formatted_text = f"<|TEXT_UNDERSTANDING_START|>{input_text}<|TEXT_UNDERSTANDING_END|>"
      
  3. Создайте речь::
    • Преобразуйте текст в лексему, понятную модели:
      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)
      
  4. декодирование голоса::
    • Преобразует сгенерированный маркер обратно в звук:
      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 кГц.
  • Производительность модели напрямую зависит от качества входного текста и аудио, обеспечивая качество входного сигнала.
© заявление об авторских правах

Похожие статьи

AnimatedDrawings:儿童手绘涂鸦转换动画,自动化儿童绘画动画生成工具

Нет комментариев

Вы должны войти в систему, чтобы участвовать в комментариях!
Войти сейчас
нет
Нет комментариев...