demotts / app.py
sam-ezai's picture
Create app.py
9a8d919 verified
import gradio as gr
import requests
import numpy as np
import io
import soundfile as sf # To read audio data into NumPy array
# Placeholder API URLs (Replace with actual endpoints)
TRANSLATION_API_URL = "https://twcc2.eztalking.ai/nantrans/inference"
TTS_API_URL = "http://twcc2.eztalking.ai/mtts/tts"
def fetch_translation(text, target_language):
# Mock implementation (Replace with actual API call)
payload = {
"input_text": text,
"id": "1",
"src_lang": "zh",
"tgt_lang": "tw"
}
response = requests.post(TRANSLATION_API_URL, json=payload)
if response.status_code == 200:
return response.text
return "Translation failed."
def fetch_tts_audio(translated_text, spk):
# Mock implementation (Replace with actual API call)
payload = {
"input_text": translated_text,
"id": "1",
"src_lang": "tw",
"tgt_lang": "tailo"
}
# response = requests.post(TRANSLATION_API_URL, json=payload)
# if response.status_code == 200:
# translated_text = response.text
payload = {
"text": translated_text, # "tw_convert": False,
"b64enc": False, "speaker": spk, "speed": 0.9
}
response = requests.post(TTS_API_URL, json=payload)
if response.status_code == 200:
# Read the audio data from the response content into a NumPy array
audio_data, sample_rate = sf.read(io.BytesIO(response.content))
return audio_data, sample_rate
return None, None
def translate_and_speak(text, target_language, spk):
translated_text = fetch_translation(text, target_language)
if not translated_text:
return "Translation failed.", None
audio_data, sample_rate = fetch_tts_audio(translated_text, spk)
if audio_data is not None:
return translated_text, (sample_rate, audio_data)
return translated_text, None
spk_list = requests.get("http://twcc2.eztalking.ai/mtts/list_speakers").json()
# Gradio Interface
iface = gr.Interface(
fn=translate_and_speak,
inputs=[
gr.Textbox(label="Enter Text"),
gr.Dropdown(choices=["en", "es", "fr", "de"], label="Target Language", value="en"),
gr.Dropdown(choices=spk_list, label="Select Speaker", value=spk_list[0])
],
outputs=[
gr.Textbox(label="Translated Text"),
gr.Audio(label="TTS Audio", type="numpy")
],
title="Text Translator with TTS",
description="Translate text to a selected language and generate TTS audio."
)
iface.launch()