Allgemeine Einführung
Llasa-3B ist ein quelloffenes Text-to-Speech-Modell (TTS), das vom Audio Lab der Hong Kong University of Science and Technology (HKUST Audio) entwickelt wurde. Das Modell basiert auf der Llama-3.2B-Architektur, die sorgfältig abgestimmt wurde, um eine qualitativ hochwertige Spracherzeugung zu ermöglichen, die nicht nur mehrere Sprachen unterstützt, sondern auch emotionalen Ausdruck und personalisiertes Klonen von Sprache ermöglicht.Llasa-3B hat die Aufmerksamkeit vieler Forscher und Entwickler wegen seiner Ausdruckskraft und Flexibilität bei der natürlichen Sprachsynthese auf sich gezogen.
Funktionsliste
- Text-to-SpeechKonvertiert Text in natürlichen, weichen Klang.
- SprachklonenNur 15 Sekunden Audiomaterial werden benötigt, um eine bestimmte menschliche Stimme zu klonen, einschließlich Timbre und Emotion.
- Mehrsprachige UnterstützungChinesisch und Englisch werden unterstützt, wobei eine Ausweitung auf weitere Sprachen angestrebt wird.
- affektiver AusdruckDie Fähigkeit, Emotionen in die generierte Sprache einzubringen, erhöht die Authentizität der Sprache.
- Unterstützung mehrerer Modelle1B und 3B parametrische Modelle verfügbar, 8B Modelle sollen in Zukunft eingeführt werden
- offene GewichtungAlle Modelle bieten offene Gewichte, die Entwickler direkt verwenden oder doppelt anpassen können, und unterstützen sowohl die Transformers- als auch die vLLM-Frameworks.
Hilfe verwenden
Installation und Vorbereitung der Umgebung
Um das Modell Llasa-3B zu verwenden, müssen Sie zunächst die folgende Umgebung vorbereiten:
Python-UmgebungPython 3.9 oder höher wird empfohlen.
Verwandte Bibliotheken: Erfordert die Installation vonFackel
, Transformatoren
, xcodec2
usw. Bibliothek.
conda erstellen -n xcodec2 python=3.9
conda aktivieren xcodec2
pip install transformers torch xcodec2==0.1.3
Herunterladen und Laden von Modellen
Besuchen Sie Hugging Face aufLlasa-3B-SeiteSie können die Modell-Download-Funktion von Hugging Face direkt nutzen:
from transformers import AutoTokenizer, AutoModelForCausalLM
importieren torch
importiere soundfile als sf
llasa_3b = 'HKUST-Audio/Llasa-3B'
tokenizer = AutoTokenizer.from_pretrained(llasa_3b)
model = AutoModelForCausalLM.from_pretrained(llasa_3b)
model.eval()
model.to('cuda') # Wenn es eine GPU gibt
Text-to-Speech-Verfahren
- Vorbereiteter Text::
- Geben Sie den Text ein, den Sie in Sprache umwandeln möchten.
- Vorverarbeitung von Text::
- Verwenden Sie z. B. einen bestimmten formatierten Text, um das Modell für die Spracherzeugung zu steuern:
input_text = "Dies ist ein Testtext, bitte in Sprache umwandeln." formatted_text = f"{input_text}"
- Verwenden Sie z. B. einen bestimmten formatierten Text, um das Modell für die Spracherzeugung zu steuern:
- Sprache generieren::
- Wandeln Sie den Text in ein Token um, das das Modell verstehen kann:
chat = [ {"role": "user", "content": "Convert the text to speech:" + formatted_text}, {"role": "assistant", "content": ""} ] input_ids = tokenizer.apply_chat_template(chat, tokenize=True, return_tensors='pt', continue_final_message=True) input_ids = input_ids.to('cuda')
- Erzeugen Sie ein Sprach-Token:
speech_end_id = tokenizer.convert_tokens_to_ids('') outputs = model.generate(input_ids, max_length=2048, eos_token_id=speech_end_id, do_sample=True, top_p=1, temperature=0.8)
- Wandeln Sie den Text in ein Token um, das das Modell verstehen kann:
- Sprachdecodierung::
- Konvertiert das generierte Token zurück in Audio:
from xcodec2.modelling_xcodec2 import XCodec2Model model_path = "HKUST-Audio/xcodec2" Codec_model = XCodec2Model.from_pretrained(model_path).eval().cuda() generierte_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('')] speech_tokens_tensor = torch.tensor(speech_ids).cuda().unsqueeze(0).unsqueeze(0) gen_wav = Codec_model.decode_code(sprach_tokens_tensor) sf.write("output.wav", gen_wav[0, 0, :].cpu().numpy(), 16000)
- Konvertiert das generierte Token zurück in Audio:
Sprachklonen
- Nehmen Sie etwa 15 Sekunden der Originaltonspur auf oder bereiten Sie sie vor.::
- Verwenden Sie ein Aufnahmegerät oder stellen Sie eine vorhandene Audiodatei zur Verfügung.
- phonetischer Klonierungsprozess::
- Kodierung der ursprünglichen Tonfrequenzen in ein Codebuch, das das Modell verwenden kann:
prompt_wav = sf.read("your_source_audio.wav")[0] # muss 16kHz Abtastrate haben vq_code_prompt = Codec_model.encode_code(torch.from_numpy(prompt_wav).unsqueeze(0).unsqueeze(0).cuda())
- Ergänzen Sie den Textgenerierungsprozess um Audiohinweise:
speech_ids_prefix = [f""foridin vq_code_prompt[0, 0, :].tolist()] chat = [ {"role": "user", "content": "Convert the text to speech:" + formatted_text}, {"role": "assistant", "content": "" + ''.join(speech_ids_prefix)} ] # Die weiteren Schritte sind die gleichen wie bei Text-to-Speech
- Kodierung der ursprünglichen Tonfrequenzen in ein Codebuch, das das Modell verwenden kann:
caveat
- Vergewissern Sie sich, dass das Audio-Eingangsformat korrekt ist. Der Llasa-3B unterstützt nur 16kHz-Audio.
- Die Leistung des Modells hängt direkt von der Qualität des eingegebenen Textes und Tons ab, wodurch die Qualität der Eingabe gewährleistet wird.