Spaces:
Sleeping
Sleeping
File size: 3,130 Bytes
18be831 a7a32fb 18be831 a7a32fb 3498704 18be831 a7a32fb f00a82c 18be831 a7a32fb f00a82c a7a32fb 89c5d72 18be831 89c5d72 18be831 89c5d72 18be831 89c5d72 18be831 a7a32fb f00a82c 18be831 89c5d72 6f52852 a7a32fb 89c5d72 a7a32fb 89c5d72 18be831 692f090 18be831 5926c9d 18be831 a7a32fb |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
import whisper
from transformers import pipeline
import gradio as gr
import numpy as np
import torch
from bark import generate_audio
from scipy.io.wavfile import write
import tempfile
from transformers import MarianMTModel, MarianTokenizer
# Funci贸n para transcribir el audio y traducir el audio de entrada
def transcribir_audio(audio):
# Usamos el pipeline de Hugging Face para la transcripci贸n
transcribir = pipeline("automatic-speech-recognition", model="openai/whisper-small")
result = transcribir(audio)
return result["text"]
def traducir_texto(texto):
model_name = "Helsinki-NLP/opus-mt-es-en"
tokenizer = MarianTokenizer.from_pretrained(model_name)
model = MarianMTModel.from_pretrained(model_name)
# Tokenizar el texto
inputs = tokenizer(texto, return_tensors="pt", padding=True, truncation=True)
# Generar la traducci贸n
translated = model.generate(**inputs)
# Decodificar la traducci贸n
traduccion = tokenizer.batch_decode(translated, skip_special_tokens=True)[0]
return traduccion
# Funci贸n para generar el audio
def generar_audio(text):
if not isinstance(text, str):
raise ValueError("El texto debe ser una cadena")
audio_array = generate_audio(text)
audio_array = np.clip(audio_array, -1.0, 1.0)
temp_wav = tempfile.NamedTemporaryFile(delete=False, suffix=".wav")
write(temp_wav.name, 24000, (audio_array * 32767).astype(np.int16))
return temp_wav.name
def process_audio(audio_file):
try:
# Paso 1: Transcripci贸n con Whisper
transcripcion = transcribir_audio(audio_file)
# Paso 2: Traducci贸n con MarianMT
transcripcion_traducida = traducir_texto(transcripcion)
# Paso 3: Generaci贸n de audio con Bark
audio_sintetizado = generar_audio(transcripcion_traducida)
return transcripcion_traducida, audio_sintetizado
except Exception as e:
return str(e), None
# Crear interfaz Gradio
with gr.Blocks() as demo:
gr.Markdown("### Transcripci贸n y S铆ntesis de Voz")
gr.Markdown("Selecciona y carga el archivo de audio en espa帽ol que deseas traducir o gr谩balo desde tu dispositivo. Ten en cuenta que si el audio dura m谩s de 30 segundos o hay demasiado ruido a tu alrededor, la aplicaci贸n ser谩 menos precisa en la transcipci贸n y traducci贸n. Luego la aplicaci贸n transcribir谩 autom谩ticamente el audio y lo traducir谩 al ingl茅s. Tras unos minutos procesando, podr谩s leer el texto traducido y escuchar la traducci贸n al ingl茅s a trav茅s del audio sintetizado que se genera, que podr谩s dessargar. 隆Y listo! Ahora puedes comunicarte en ingl茅s de manera f谩cil y efectiva.")
with gr.Row():
input_audio = gr.Audio(label="Sube tu archivo de audio", type="filepath")
transcription_output = gr.Textbox(label="Texto traducido al ingl茅s")
output_audio = gr.Audio(label="Audio generado")
process_button = gr.Button("Procesar")
process_button.click(process_audio, inputs=input_audio, outputs=[transcription_output, output_audio])
# Lanzar la app
demo.launch(share=True)
|