# Import libraries import io import os import json import subprocess import mmap import numpy import soundfile import torchaudio import torch import gradio as gr from collections import defaultdict from pathlib import Path from pydub import AudioSegment from seamless_communication.inference import Translator from seamless_communication.streaming.dataloaders.s2tt import SileroVADSilenceRemover # Mapping of language names to their respective codes language_codes = { "English": "eng", "Spanish": "spa", "French": "fra", "German": "deu", "Italian": "ita", "Chinese": "cmn" } # Function to handle the translation to target language def translate_audio(audio_file, target_language): language_code = language_codes[target_language] output_file = "translated_audio.wav" command = f"expressivity_predict {audio_file} --tgt_lang {language_code} \ --model_name seamless_expressivity --vocoder_name vocoder_pretssel \ --gated-model-dir seamlessmodel --output_path {output_file}" subprocess.run(command, shell=True) if os.path.exists(output_file): print(f"File created successfully: {output_file}") else: print(f"File not found: {output_file}") return output_file # Define inputs inputs = [ gr.Audio(type = "filepath", label = "Audio_file"), gr.Dropdown(["English", "Spanish", "French", "German", "Italian", "Chinese"], label = "Target_Language") ] # Create Gradio interface iface = gr.Interface( fn=translate_audio, inputs= inputs, outputs=gr.Audio(label="Translated Audio"), title="Seamless Expressive Audio Translator", description="Translate your audio into different languages with expressive styles." ) # Run the application if __name__ == "__main__": iface.launch()