|
import gradio as gr |
|
import os |
|
import sys |
|
import logging |
|
import requests |
|
|
|
from tts import TTS |
|
|
|
|
|
sys.path.append(os.path.dirname(os.path.abspath(__file__))) |
|
|
|
|
|
logging.basicConfig( |
|
level=logging.INFO, |
|
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' |
|
) |
|
logger = logging.getLogger(__name__) |
|
|
|
|
|
def fetch_audio(input_text): |
|
|
|
backend_url = "http://localhost:8080/api/text_to_speech" |
|
response = requests.get(backend_url, params={"text": input_text}) |
|
if response.status_code == 200: |
|
logger.info(f"Generated audio from text: {input_text}") |
|
logger.info(f"Audio URL: {response.url}") |
|
return response.url |
|
else: |
|
return None |
|
|
|
def generate_audio(input_text): |
|
try: |
|
audio_array = TTS.generate(input_text) |
|
return (44100, audio_array) |
|
except Exception as e: |
|
logger.error(f"Error generating audio: {e}") |
|
return None |
|
|
|
|
|
def create_gradio_interface(): |
|
|
|
with gr.Blocks(title="Swahili TTS Model") as demo: |
|
gr.Markdown("# Swahili TTS Model") |
|
gr.Markdown("Generate Swahili speech from text.") |
|
|
|
with gr.Row(): |
|
with gr.Column(): |
|
input_text = gr.Textbox(label="Input Text", lines=5) |
|
generate_btn = gr.Button("Generate Speech") |
|
|
|
with gr.Column(): |
|
|
|
output = gr.Audio(label="Generated Audio", type="filepath") |
|
|
|
generate_btn.click( |
|
fn=generate_audio, |
|
inputs=input_text, |
|
outputs=output, |
|
queue=False, |
|
) |
|
return demo |
|
|
|
app = create_gradio_interface() |
|
|
|
|
|
if __name__ == "__main__": |
|
app.launch(server_name="0.0.0.0", server_port=9090) |