|
import gradio as gr |
|
import requests |
|
import urllib.parse |
|
import tempfile |
|
import os |
|
|
|
import dwani |
|
dwani.api_key = os.getenv("DWANI_API_KEY") |
|
|
|
dwani.api_base = os.getenv("DWANI_API_BASE_URL") |
|
|
|
def text_to_speech(text): |
|
|
|
|
|
try: |
|
response = dwani.Audio.speech(input=text, response_format="mp3") |
|
|
|
|
|
with tempfile.NamedTemporaryFile(suffix=".mp3", delete=False) as temp_file: |
|
temp_file.write(response) |
|
temp_file_path = temp_file.name |
|
|
|
return temp_file_path |
|
except requests.exceptions.RequestException as e: |
|
raise ValueError(f"API request failed: {str(e)}") |
|
except IOError as e: |
|
raise ValueError(f"Failed to save audio file: {str(e)}") |
|
|
|
|
|
with gr.Blocks(title="Text to Speech API Interface") as demo: |
|
gr.Markdown("# Text to Speech API Interface") |
|
|
|
with gr.Row(): |
|
with gr.Column(): |
|
|
|
text_input = gr.Textbox( |
|
label="Text", |
|
placeholder="Enter text to convert to speech", |
|
value="ಕರ್ನಾಟಕದ ರಾಜಧಾನಿ ಬೆಂಗಳೂರು." |
|
) |
|
submit_btn = gr.Button("Generate Speech") |
|
|
|
with gr.Column(): |
|
|
|
audio_output = gr.Audio( |
|
label="Generated Speech", |
|
type="filepath", |
|
interactive=False |
|
) |
|
|
|
|
|
submit_btn.click( |
|
fn=text_to_speech, |
|
inputs=[text_input], |
|
outputs=audio_output |
|
) |
|
|
|
|
|
try: |
|
demo.launch(server_name="0.0.0.0", server_port=7860) |
|
except Exception as e: |
|
print(f"Failed to launch Gradio interface: {str(e)}") |