Spaces:
Sleeping
Sleeping
import streamlit as st | |
from engine import Translate | |
import os | |
import shutil | |
import json | |
translator = Translate() | |
# Creating the list of the tasks the seamlessM4t model can perform | |
tasks = ['S2ST (Speech to Speech translation)', | |
'S2TT (Speech to Text translation)', | |
'T2ST (Text to Speech translation)', | |
'T2TT (Text to Text translation)'] | |
def move_audio_file(source_path, destination_path): | |
try: | |
shutil.move(source_path, destination_path) | |
return True # Return True if the move was successful | |
except Exception as e: | |
print(f"Error moving the audio file: {str(e)}") | |
return False # Return False if there was an error | |
# List of language options | |
languages = [ | |
"Catalan", | |
"Czech", | |
"Danish", | |
"Dutch", | |
"English", | |
"Estonian", | |
"Finnish", | |
"French", | |
"German", | |
"Hindi", | |
"Indonesian", | |
"Italian", | |
"Japanese", | |
"Korean", | |
"Maltese", | |
"Mandarin Chinese", | |
"Modern Standard Arabic", | |
"Northern Uzbek", | |
"Polish", | |
"Portuguese", | |
"Romanian", | |
"Russian", | |
"Slovak", | |
"Spanish", | |
"Swahili", | |
"Swedish", | |
"Tagalog", | |
"Telugu", | |
"Thai", | |
"Turkish", | |
"Ukrainian", | |
"Urdu", | |
"Vietnamese", | |
"Welsh", | |
"Western Persian" | |
] | |
st.title("Seamless-M4t Translator") | |
task = st.selectbox('Select Task:', tasks) | |
if task == 'S2ST (Speech to Speech translation)': | |
upload_audio = st.file_uploader('Upload Audio file', type=['mp3', 'wav', 'ogg']) | |
target_language = st.selectbox('Target language:', languages) | |
button_clicked = st.button('Convert') | |
if button_clicked: | |
if upload_audio and target_language: | |
result = translator.translate(task=task, audio=upload_audio, target_language=target_language) | |
# Set the source and destination paths for moving the audio file | |
source_path = result.replace("\\", "/") | |
audio_paths = source_path.split(',') | |
for audio_path in audio_paths: | |
try: | |
audio_path = audio_path.lstrip("['") | |
st.audio(audio_path.strip('"'), format="audio/*") | |
except Exception as e: | |
# audio_content = audio_path.lstrip(']') | |
audio_content=audio_path.rstrip(']') | |
st.write(audio_content) | |
elif task == 'S2TT (Speech to Text translation)': | |
upload_audio = st.file_uploader('Upload Audio file', type=['mp3', 'wav', 'ogg']) | |
# Create a button | |
target_language = st.selectbox('Target language : ', languages) | |
button_clicked = st.button("Convert") | |
if button_clicked: | |
if upload_audio: | |
result = translator.translate(task=task, audio=upload_audio, target_language=target_language) | |
result = json.loads(result) | |
st.write(result) | |
elif task == 'T2ST (Text to Speech translation)': | |
input_language = st.selectbox("Input Language:", languages) | |
text = st.text_area("Enter the Text Here:") | |
target_language = st.selectbox('Target language:', languages) | |
button_clicked = st.button('Convert') | |
if button_clicked: | |
if text and input_language and target_language: | |
result = translator.translate(task=task, text=text, input_language=input_language, target_language=target_language) | |
# Set the source and destination paths for moving the audio file | |
source_path = result.replace("\\", "/") | |
audio_paths = source_path.split(',') | |
for audio_path in audio_paths: | |
try: | |
audio_path = audio_path.lstrip("['") | |
st.audio(audio_path.strip('"'), format="audio/wav") | |
except Exception as e: | |
# audio_content = audio_path.lstrip(']') | |
audio_content=audio_path.rstrip(']') | |
st.write(audio_content) | |
elif task == 'T2TT (Text to Text translation)': | |
input_language = st.selectbox("Input Language:", languages) | |
text = st.text_area("Enter the Text Here:") | |
target_language = st.selectbox('Target language:', languages) | |
button_clicked = st.button('Convert') | |
if button_clicked: | |
if text and input_language and target_language: | |
result = translator.translate(task=task, text=text, input_language=input_language, target_language=target_language) | |
conv = json.loads(result) | |
st.write(conv[1]) | |