CoolFace
Apppublic

yusufadnan48/indic-parler-tts-demo

sourceHugging Faceapache-2.0updated 1mo agoView on Hugging Face
0likes
App README

🎙️ Indic Parler-TTS Studio (AI4Bharat)

An interactive, high-fidelity demo Space for [ai4bharat/indic-parler-tts](https://huggingface.co/ai4bharat/indic-parler-tts), supporting 21+ Indian languages with natural language voice conditioning (gender, pitch, tempo, expressiveness, emotion, and environment control).


✨ Features

  • —21+ Indic Languages + English: Tamil, Hindi, Telugu, Bengali, Malayalam, Kannada, Gujarati, Marathi, Punjabi, Odia, Urdu, Assamese, and more.
  • —Natural Voice Conditioning: Control voice attributes (male/female, deep/high-pitch, slow/fast, calm/energetic) simply by typing a description in English.
  • —Preloaded Voice Presets: Quick-select presets for Anime narration, News reporting, Storytelling, and Meditation.
  • —Interactive Studio: Live waveform visualizer with WaveSurfer.js and instant audio export.
  • —Python Code Generator: Real-time code snippet generation with one-click copy.

🐍 Python Usage (Local / Server)

bash
pip install git+https://github.com/huggingface/parler-tts.git transformers soundfile
python
import torch
from parler_tts import ParlerTTSForConditionalGeneration
from transformers import AutoTokenizer
import soundfile as sf

device = "cuda:0" if torch.cuda.is_available() else "cpu"
model = ParlerTTSForConditionalGeneration.from_pretrained("ai4bharat/indic-parler-tts").to(device)
tokenizer = AutoTokenizer.from_pretrained("ai4bharat/indic-parler-tts")

prompt = "வணக்கம்! AI4Bharat மற்றும் Parler-TTS இணைந்து உருவாக்கிய குரல் மாதிரி இது."
description = "A deep-voiced male speaker delivers a calm, authoritative narration with clear pronunciation in a studio environment."

input_ids = tokenizer(description, return_tensors="pt").input_ids.to(device)
prompt_ids = tokenizer(prompt, return_tensors="pt").input_ids.to(device)

generation = model.generate(input_ids=input_ids, prompt_input_ids=prompt_ids)
sf.write("output.wav", generation.cpu().numpy().squeeze(), model.config.sampling_rate)