Transcript2Word / app.py
Rajor78's picture
Update app.py
120d1ea verified
raw
history blame
2.27 kB
import gradio as gr
import subprocess
import os
import librosa
from transformers import WhisperProcessor, WhisperForConditionalGeneration
from gingerit.gingerit import GingerIt
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) # Corregir aqu铆
# 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 Gingerit
def correct_text(text):
parser = GingerIt()
corrected_text = parser.parse(text)['result']
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()