--- language: - ar license: apache-2.0 tags: - text-to-speech - arabic - spark-tts - tts base_model: SparkAudio/Spark-TTS-0.5B datasets: - MBZUAI/ClArTTS --- # Spark-TTS Arabic (Fine-tuned on ClArTTS) Complete Spark-TTS model with LLM fine-tuned on ClArTTS dataset (12 hours of Classical Arabic speech). ## Usage ```python from transformers import AutoProcessor, AutoModel import soundfile as sf import torch device = "cuda" if torch.cuda.is_available() else "cpu" processor = AutoProcessor.from_pretrained("azeddinShr/Spark-TTS-Arabic-Complete", trust_remote_code=True) model = AutoModel.from_pretrained("azeddinShr/Spark-TTS-Arabic-Complete", trust_remote_code=True).eval().to(device) processor.model = model # Generate text = "مَرْحَبًا بِكُمْ" ref_text = "النَّصُّ الْمَرْجِعِيُّ" inputs = processor(text=text.lower(), prompt_speech_path="reference.wav", prompt_text=ref_text, return_tensors="pt").to(device) global_tokens = inputs.pop("global_token_ids_prompt", None) with torch.no_grad(): output_ids = model.generate(**inputs, max_new_tokens=8000, do_sample=True, temperature=0.8, top_k=50, top_p=0.95) output = processor.decode(generated_ids=output_ids, global_token_ids_prompt=global_tokens, input_ids_len=inputs["input_ids"].shape[-1]) audio = output["audio"].cpu().numpy() if isinstance(output["audio"], torch.Tensor) else output["audio"] sf.write("output.wav", audio, output["sampling_rate"]) ``` ## Training Details - **Base Model**: SparkAudio/Spark-TTS-0.5B - **Fine-tuned Component**: LLM (Qwen2) - **Dataset**: ClArTTS (12 hours Classical Arabic) - **Training**: 20 epochs on 30% of dataset ## Model Components - BiCodec (audio encoder/decoder) - unchanged from base - wav2vec2 (speech encoder) - unchanged from base - LLM (Qwen2) - **fine-tuned on Arabic**