import gradio as gr import os import sys import logging import requests from tts import TTS # Add the current directory to the path so we can import from app sys.path.append(os.path.dirname(os.path.abspath(__file__))) # Configure logging logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s' ) logger = logging.getLogger(__name__) # Function to fetch audio from a URL def fetch_audio(input_text): # Replace with the actual backend URL for generating audio 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 # Return the URL of the generated audio 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 # Gradio interface def create_gradio_interface(): # Create the 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(): # show generated audio from a url on output, href = "https://sample.com/audio.wav" 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() # Launch the app if __name__ == "__main__": app.launch(server_name="0.0.0.0", server_port=9090)