turkishtts / app.py
umarigan's picture
Update app.py
082bb30 verified
import gradio as gr
from transformers import pipeline
from datasets import load_dataset
import soundfile as sf
import torch
# Initialize the text-to-speech pipeline
synthesiser = pipeline("text-to-speech", "umarigan/speecht5_tts_tr_v1.0")
# Load the speaker embedding dataset
embeddings_dataset = load_dataset("umarigan/turkish_voice_dataset_embedded", split="train")
# Define the speech generation function
def generate_speech(text):
# Use a pre-defined speaker embedding from the dataset
speaker_embedding = torch.tensor(embeddings_dataset[768]["speaker_embeddings"]).unsqueeze(0)
speech = synthesiser(text, forward_params={"speaker_embeddings": speaker_embedding})
# Save the generated audio to a file
sf.write("speech.wav", speech["audio"], samplerate=speech["sampling_rate"])
# Return the audio file path to Gradio
return "speech.wav"
# Define the Gradio interface
inputs = [
gr.Textbox(label="📝 Enter Text", placeholder="Bir berber bir berbere gel beraber bir berber kuralım demiş", lines=3),
]
outputs = gr.Audio(label="🎤 Generated Speech")
# Additional elements to include information and style
title = "🎙️ Turkish Text-to-Speech with Fine-Tuned TTS Model"
description = """
Welcome to the **Turkish Text-to-Speech** app! 🌟 This model is a fine-tuned version of Microsoft's SpeechT5, trained on a large Turkish dataset with over 20k audio samples.
It helps generate natural-sounding speech from text input in **Turkish**! 🇹🇷
**Use Cases**:
- Easily generate **custom speech datasets**.
- Automate **text-to-speech pipelines** for various applications with low cost and efficiency. 💡
Check out the model on [Hugging Face](https://huggingface.co/umarigan/speecht5_tts_tr_v1.0)
"""
footer = """
💻 Connect with me on [X](https://x.com/Umar26338572e) 🐦
"""
# Create the Gradio app interface
gr.Interface(
fn=generate_speech,
inputs=inputs,
outputs=outputs,
title=title,
description=description,
article=footer,
theme="compact", # Choose a theme that matches the colorful aesthetic
).launch()