Llasa 1~8B : un modèle de synthèse vocale à source ouverte pour la génération et le clonage de la parole de haute qualité
Introduction générale
Llasa-3B est un modèle de synthèse vocale open source développé par le laboratoire audio de l'université des sciences et technologies de Hong Kong (HKUST Audio). Le modèle est basé sur l'architecture Llama 3.2B, qui a été soigneusement réglée pour fournir une génération de parole de haute qualité qui non seulement prend en charge plusieurs langues, mais permet également l'expression émotionnelle et le clonage personnalisé de la parole.Llasa-3B a attiré l'attention de nombreux chercheurs et développeurs pour son expressivité et sa flexibilité dans la synthèse de la parole naturelle.

Expérience : https://huggingface.co/spaces/srinivasbilla/llasa-3b-tts
Liste des fonctions
- synthèse vocale: Convertit le texte en un son naturel et fluide.
- clonage de la paroleLe clonage de la voix humaine : Il suffit de 15 secondes d'enregistrement audio pour cloner une voix humaine spécifique, y compris le timbre et l'émotion.
- Prise en charge multilingueLes langues suivantes sont prises en charge : le chinois et l'anglais, l'objectif étant d'étendre le système à d'autres langues.
- l'expression affectiveLa capacité d'injecter des émotions dans le discours généré renforce l'authenticité de ce dernier.
- Prise en charge de plusieurs modèlesModèles paramétriques à l'échelle 1B et 3B disponibles, les modèles 8B devant être introduits à l'avenir.
- pondération ouverteTous les modèles sont fournis avec des poids ouverts, qui peuvent être utilisés directement ou affinés deux fois par les développeurs, et prennent en charge les Transformers et les vLLM Cadres.
Utiliser l'aide
Installation et préparation de l'environnement
Pour utiliser le modèle Llasa-3B, vous devez d'abord préparer l'environnement suivant :
Environnement PythonPython 3.9 ou supérieur est recommandé.
Bibliothèques apparentées: Nécessite l'installation detorch
, transformers
, xcodec2
etc.
conda create -n xcodec2 python=3.9
conda activate xcodec2
pip install transformers torch xcodec2==0.1.3
Téléchargement et chargement du modèle
Visitez Hugging Face surLlasa-3B pageVous pouvez utiliser directement la fonction de téléchargement du modèle 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
Processus de synthèse vocale
- Texte préparé: :
- Saisissez le texte que vous souhaitez convertir en parole.
- Prétraitement du texte: :
- Utiliser un texte formaté spécifique pour guider le modèle de génération vocale, par exemple :
input_text = "这是一个测试文本,请转成语音。" formatted_text = f"<|TEXT_UNDERSTANDING_START|>{input_text}<|TEXT_UNDERSTANDING_END|>"
- Utiliser un texte formaté spécifique pour guider le modèle de génération vocale, par exemple :
- Générer un discours: :
- Convertir le texte en un jeton que le modèle peut comprendre :
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')
- Générer un jeton vocal :
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)
- Convertir le texte en un jeton que le modèle peut comprendre :
- décodage de la voix: :
- Convertit le jeton généré 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)
- Convertit le jeton généré en audio :
clonage de la parole
- Enregistrer ou préparer environ 15 secondes de la bande sonore originale: :
- Utilisez un appareil d'enregistrement ou fournissez un fichier audio existant.
- processus de clonage phonétique: :
- Encodage des fréquences sonores originales dans un livre de codes que le modèle peut utiliser :
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())
- Ajouter des signaux audio au processus de génération de texte :
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)} ] # 后续步骤与文本转语音相同
- Encodage des fréquences sonores originales dans un livre de codes que le modèle peut utiliser :
mise en garde
- Assurez-vous que le format d'entrée audio est correct, le Llasa-3B ne prend en charge que l'audio 16kHz.
- La performance du modèle est directement affectée par la qualité du texte et de l'audio d'entrée, ce qui garantit la qualité de l'entrée.
© déclaration de droits d'auteur
Article copyright Cercle de partage de l'IA Tous, prière de ne pas reproduire sans autorisation.
Articles connexes
Pas de commentaires...