Views
No views yet
pip install torch transformers huggingface_hub unsloth soundfile librosa numpy1from huggingface_hub import snapshot_download
2
3model_dir = snapshot_download("somyalab/Spark_somya_TTS")1import torch
2import numpy as np
3import soundfile as sf
4from unsloth import FastLanguageModel
5
6# Load model
7model, tokenizer = FastLanguageModel.from_pretrained(
8 model_name=model_dir,
9 max_seq_length=2048,
10 dtype=torch.bfloat16,
11 load_in_4bit=False,
12)
13FastLanguageModel.for_inference(model)
14
15# Load audio tokenizer (BiCodec)
16import sys
17sys.path.insert(0, model_dir)
18from sparktts.models.audio_tokenizer import BiCodecTokenizer
19
20audio_tokenizer = BiCodecTokenizer(model_dir, "cuda")
21
22# Reference audio for voice cloning
23import librosa
24ref_audio, ref_sr = librosa.load("reference_voice.wav", sr=None)
25ref_global_tokens, _ = audio_tokenizer.tokenize_audio(ref_audio, ref_sr)
26
27# Generate speech
28text = "नमस्ते, यह एक परीक्षण है।"
29
30prompt = "".join([
31 "<|task_tts|>",
32 "<|start_content|>",
33 text,
34 "<|end_content|>",
35 "<|start_global_token|>",
36 ref_global_tokens,
37 "<|end_global_token|>",
38 "<|start_semantic_token|>",
39])
40
41inputs = tokenizer([prompt], return_tensors="pt").to("cuda")
42outputs = model.generate(
43 **inputs,
44 max_new_tokens=2048,
45 do_sample=True,
46 temperature=0.7,
47)
48
49# Decode to audio
50generated_ids = outputs[:, inputs.input_ids.shape[1]:]
51generated_tokens = tokenizer.convert_ids_to_tokens(generated_ids[0].tolist())
52
53# Extract semantic token IDs
54semantic_ids = []
55for t in generated_tokens:
56 if t.startswith("<|bicodec_semantic_") and t.endswith("|>"):
57 semantic_ids.append(int(t[18:-2]))
58
59# Detokenize to waveform
60import re
61global_matches = re.findall(r"<\|bicodec_global_(\d+)\|>", ref_global_tokens)
62global_ids = torch.tensor([int(t) for t in global_matches]).unsqueeze(0).unsqueeze(0)
63semantic_ids = torch.tensor(semantic_ids).unsqueeze(0)
64
65wav = audio_tokenizer.detokenize(
66 global_ids.to("cuda").squeeze(0),
67 semantic_ids.to("cuda"),
68)
69
70sf.write("output.wav", wav, 16000)1@misc{spark-somya-tts,
2 title={Spark-Somya-TTS},
3 author={Somya Lab},
4 year={2025},
5 url={https://huggingface.co/somyalab/Spark_somya_TTS}
6}