Spaces:
Sleeping
Sleeping
import gradio as gr | |
from gtts import gTTS | |
from pydub import AudioSegment | |
import tempfile | |
import os | |
def generate_tts(text, language, pitch_shift): | |
tts = gTTS(text=text, lang=language) | |
with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as temp_file: | |
tts.save(temp_file.name) | |
temp_file_path = temp_file.name | |
try: | |
audio = AudioSegment.from_file(temp_file_path, format="mp3") | |
except Exception as e: | |
print(f"Error loading audio file: {e}") | |
return None | |
# Apply pitch shifting (more pronounced) | |
if pitch_shift: | |
audio = audio._spawn(audio.raw_data, overrides={"frame_rate": int(audio.frame_rate * 0.8)}) | |
audio = audio.set_frame_rate(44100) | |
with tempfile.NamedTemporaryFile(delete=False, suffix=".mp3") as out_file: | |
audio.export(out_file.name, format="mp3") | |
out_file_path = out_file.name | |
os.remove(temp_file_path) | |
return out_file_path | |
def chatbot(text, language, male_voice): | |
output_audio_path = generate_tts(text, language, male_voice) | |
if output_audio_path is None: | |
return "Error generating audio" | |
return output_audio_path | |
iface = gr.Interface( | |
fn=chatbot, | |
inputs=[ | |
gr.Textbox(label="Enter your text"), | |
gr.Dropdown(label="Select Language", choices=["en", "es", "fr", "de", "it", "hi"], value="en"), | |
gr.Checkbox(label="Male Voice", value=True) | |
], | |
outputs=gr.Audio(label="Generated Audio"), | |
live=True, | |
title="Text-to-Speech AI Chatbot", | |
description="Generate speech with different languages and voice options." | |
) | |
iface.launch() | |