Spaces:
Sleeping
Sleeping
File size: 2,679 Bytes
1b4137e ed87615 56e1e3f 4220be5 56e1e3f a6d49c7 69b32e0 4220be5 69b32e0 56e1e3f 69b32e0 4220be5 1b4137e 4220be5 56e1e3f 4220be5 a6d49c7 120d1ea a6d49c7 120d1ea a6d49c7 2c0a3d0 a6d49c7 120d1ea |
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 76 77 78 79 80 81 |
import gradio as gr
import subprocess
import os
import librosa
from transformers import WhisperProcessor, WhisperForConditionalGeneration
from spellchecker import SpellChecker # Usaremos pyspellchecker
from docx import Document
# Funci贸n para extraer audio de video
def extract_audio(video_path, audio_path):
command = f"ffmpeg -i '{video_path}' -ar 16000 -ac 1 -c:a pcm_s16le '{audio_path}' -y"
subprocess.run(command, shell=True, check=True)
return audio_path
# Funci贸n para transcribir el audio usando Whisper
def transcribe_audio(audio_path):
# Cargar el procesador y modelo de Whisper
processor = WhisperProcessor.from_pretrained("openai/whisper-base")
model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-base")
# Cargar el archivo de audio usando librosa
audio_input, _ = librosa.load(audio_path, sr=16000)
# Preprocesar el audio para el modelo
inputs = processor(audio_input, return_tensors="pt", sampling_rate=16000)
# Realizar la transcripci贸n
result = model.generate(**inputs)
transcription = processor.decode(result[0], skip_special_tokens=True)
return transcription
# Funci贸n para corregir el texto transcrito con pyspellchecker
def correct_text(text):
spell = SpellChecker(language='es') # Usamos espa帽ol para la correcci贸n
words = text.split() # Separar el texto en palabras
corrected_words = []
for word in words:
corrected = spell.correction(word)
if corrected is None: # Si no se encuentra correcci贸n, dejamos la palabra original
corrected = word
corrected_words.append(corrected)
corrected_text = " ".join(corrected_words) # Volver a unir las palabras
return corrected_text
# Funci贸n principal que procesa el video
def process_video(video_file):
video_path = video_file.name
audio_path = os.path.splitext(video_path)[0] + '.wav'
# Extraer el audio del video
extract_audio(video_path, audio_path)
# Transcribir el audio
transcribed_text = transcribe_audio(audio_path)
# Corregir la transcripci贸n
corrected_text = correct_text(transcribed_text)
# Crear un documento Word con la transcripci贸n corregida
doc = Document()
doc.add_paragraph(corrected_text)
doc_path = "transcription.docx"
doc.save(doc_path)
return corrected_text, doc_path
# Interfaz de Gradio
demo = gr.Interface(
fn=process_video,
inputs=gr.File(label="Sube un archivo de video"),
outputs=[
gr.Textbox(label="Texto transcrito y corregido"),
gr.File(label="Descargar transcripci贸n Word")
]
)
demo.launch()
|