Spaces:
Sleeping
Sleeping
File size: 2,510 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 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 |
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")
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)
|