Llasa 1~8B: un modelo de conversión de texto en habla de código abierto para la generación y clonación de habla de alta calidad
Últimos recursos sobre IAActualizado hace 6 meses Círculo de intercambio de inteligencia artificial 3.1K 00
Introducción general
Llasa-3B es un modelo de conversión de texto en habla (TTS) de código abierto desarrollado por el Laboratorio de Audio de la Universidad de Ciencia y Tecnología de Hong Kong (HKUST Audio). El modelo se basa en la arquitectura Llama 3.2B, que se ha ajustado cuidadosamente para ofrecer una generación de voz de alta calidad que no solo admite varios idiomas, sino que también permite la expresión emocional y la clonación personalizada del habla.Llasa-3B ha atraído la atención de muchos investigadores y desarrolladores por su expresividad y flexibilidad en la síntesis del habla natural.

Experiencia: https://huggingface.co/spaces/srinivasbilla/llasa-3b-tts
Lista de funciones
- texto a voz: Convierte texto en sonido natural y suave.
- clonación de vozSólo se necesitan 15 segundos de grabación de audio para clonar una voz humana concreta, incluidos el timbre y la emoción.
- Soporte multilingüe: Se admiten el chino y el inglés, con el objetivo de ampliarlo a más idiomas.
- expresión afectivaLa capacidad de inyectar emoción en el discurso generado aumenta su autenticidad.
- Compatibilidad con varios modelosModelos paramétricos a escala 1B y 3B disponibles, con modelos 8B que se introducirán en el futuro.
- ponderación abiertaTodos los modelos se suministran con ponderaciones abiertas, que los desarrolladores pueden utilizar directamente o ajustar dos veces, y admiten Transformers y vLLM Marcos.
Utilizar la ayuda
Instalación y preparación del entorno
Para utilizar el modelo Llasa-3B, primero hay que preparar el siguiente entorno:
Entorno PythonSe recomienda Python 3.9 o superior.
Bibliotecas relacionadas: Requiere la instalación detorch
, transformers
, xcodec2
etc.
conda create -n xcodec2 python=3.9
conda activate xcodec2
pip install transformers torch xcodec2==0.1.3
Descarga y carga de modelos
Visite Hugging Face enPágina de Llasa-3BPuede utilizar directamente la función de descarga de modelos de 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
Proceso de conversión de texto a voz
- Texto preparado::
- Introduzca el texto que desea convertir en voz.
- Preprocesamiento de textos::
- Utilice un texto con un formato específico para guiar el modelo de generación de voz, por ejemplo:
input_text = "这是一个测试文本,请转成语音。" formatted_text = f"<|TEXT_UNDERSTANDING_START|>{input_text}<|TEXT_UNDERSTANDING_END|>"
- Utilice un texto con un formato específico para guiar el modelo de generación de voz, por ejemplo:
- Generar discurso::
- Convierte el texto en un token que el modelo pueda entender:
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')
- Generar un token de voz:
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)
- Convierte el texto en un token que el modelo pueda entender:
- descodificación de voz::
- Convierte el token generado en audio:
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)
- Convierte el token generado en audio:
clonación de voz
- Graba o prepara unos 15 segundos de la banda sonora original::
- Utilice un dispositivo de grabación o proporcione un archivo de audio existente.
- proceso de clonación fonética::
- Codificación de las frecuencias sonoras originales en un libro de códigos que el modelo pueda utilizar:
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())
- Añade pistas de audio al proceso de generación de texto:
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)} ] # 后续步骤与文本转语音相同
- Codificación de las frecuencias sonoras originales en un libro de códigos que el modelo pueda utilizar:
advertencia
- Asegúrate de que el formato de entrada de audio es correcto, la Llasa-3B sólo soporta audio de 16kHz.
- El rendimiento del modelo se ve directamente afectado por la calidad del texto y el audio de entrada.
© declaración de copyright
Derechos de autor del artículo Círculo de intercambio de inteligencia artificial Todos, por favor no reproducir sin permiso.
Artículos relacionados
Sin comentarios...