Views
No views yet

1import torch
2import torchaudio
3from transformers import AutoModelForCausalLM, AutoTokenizer
4from neucodec import NeuCodec
5
6device = "cuda"
7model_id = "DigitalLearningGmbH/educa-ai-voice-preview"
8audio_end_token_id = 128001
9audio_tokens_offset = 128006
10
11model = AutoModelForCausalLM.from_pretrained(model_id, dtype=torch.bfloat16)
12model = model.to(device)
13tokenizer = AutoTokenizer.from_pretrained(model_id)
14
15codec_model = NeuCodec.from_pretrained("neuphonic/neucodec")
16codec_model = codec_model.eval().to(device)
17
18prompt_template = "<|task_tts|>{prompt} <|audio_start|>"
19prompt = "Brautkleid bleibt Brautkleid und Blaukraut bleibt Blaukraut."
20
21input_ids = tokenizer.encode(prompt_template.format(prompt=prompt), return_tensors="pt").to(device)
22
23outputs = model.generate(input_ids=input_ids, do_sample=True, temperature=0.6, top_p=0.999, repetition_penalty=1.1, max_new_tokens=2048)
24outputs_audio = outputs[0][input_ids.shape[1]:(outputs[0] == audio_end_token_id).nonzero(as_tuple=True)[0][0].item()] - audio_tokens_offset
25
26with torch.no_grad():
27 recon = codec_model.decode_code(outputs_audio.unsqueeze(0).unsqueeze(0).to(device)).cpu()
28
29torchaudio.save("tts.wav", recon[0, :, :], 24_000)