Views
No views yet
husein and idayu speakers only.pip3 install git+https://github.com/mesolitica/DistilCodec1# wget https://huggingface.co/IDEA-Emdoor/DistilCodec-v1.0/resolve/main/model_config.json
2# wget https://huggingface.co/IDEA-Emdoor/DistilCodec-v1.0/resolve/main/g_00204000
3
4from distilcodec import DistilCodec, demo_for_generate_audio_codes
5from transformers import AutoTokenizer, AutoModelForCausalLM
6
7codec_model_config_path='model_config.json'
8codec_ckpt_path = 'g_00204000'
9
10codec = DistilCodec.from_pretrained(
11 config_path=codec_model_config_path,
12 model_path=codec_ckpt_path,
13 use_generator=True,
14 is_debug=False).eval()
15
16tokenizer = AutoTokenizer.from_pretrained('mesolitica/Malaysian-TTS-1.7B-v0.1')
17model = AutoModelForCausalLM.from_pretrained('mesolitica/Malaysian-TTS-1.7B-v0.1', torch_dtype = 'auto').cuda()1import soundfile as sf
2
3string = 'The first anti-hoax legislation in the world, Akta Anti Berita Tidak Benar two thousand and eighteen. Saya nak makan nasi ayam.'
4left = 'idayu' +': ' + string
5prompt = f'<|im_start|>{left}<|speech_start|>'
6
7generate_kwargs = dict(
8 **tokenizer(prompt, return_tensors = 'pt', add_special_tokens = False).to('cuda'),
9 max_new_tokens=1024,
10 temperature=0.5,
11 do_sample=True,
12 repetition_penalty=1.0,
13)
14generation_output = model.generate(**generate_kwargs)
15speech_token = tokenizer.decode(generation_output[0]).split('<|speech_start|>')[1].replace('<|endoftext|>', '')
16numbers = re.findall(r'speech_(\d+)', speech_token)
17d = list(map(int, numbers))
18y_gen = codec.decode_from_codes(d, minus_token_offset=False)
19sf.write('output.mp3', y_gen[0, 0].cpu().numpy(), 24000)1from tqdm import tqdm
2import numpy as np
3
4strings = [
5 'The first anti-hoax legislation in the world,',
6 'Akta Anti Berita Tidak Benar two thousand and eighteen.',
7 'Saya nak makan nasi ayam,',
8 'dan saya tak suka mandi.'
9]
10
11ys = []
12generation_output = None
13
14for no, string in tqdm(enumerate(strings)):
15 if generation_output is None:
16 left = 'streaming,idayu' +': ' + string
17 prompt = f'<|im_start|>{left}<|speech_start|>'
18 else:
19 left = string
20 prompt = f'{tokenizer.decode(generation_output[0])}{left}<|speech_start|>'
21 generate_kwargs = dict(
22 **tokenizer(prompt, return_tensors = 'pt', add_special_tokens = False).to('cuda'),
23 max_new_tokens=1024,
24 temperature=0.6,
25 do_sample=True,
26 repetition_penalty=1.,
27 )
28 generation_output = model.generate(**generate_kwargs)
29 speech_token = tokenizer.decode(generation_output[0]).split('<|speech_start|>')[-1].replace('<|endoftext|>', '')
30 numbers = re.findall(r'speech_(\d+)', speech_token)
31 d = list(map(int, numbers))
32 y_gen = codec.decode_from_codes(
33 d,
34 minus_token_offset=False
35 )
36 ys.append(y_gen[0, 0].cpu().numpy())
37
38sf.write('output.mp3', np.concatenate(ys), 24000)