File size: 2,176 Bytes
fac06d0 80f7e89 e4297a8 de84263 4b85b27 200541c fac06d0 bdc6930 fac06d0 326258c 48d7752 326258c 04717a8 270a894 262c6d5 326258c 4969c68 326258c 8dffbd8 326258c 8dffbd8 b44d1eb 8dffbd8 326258c eecd1a3 8dffbd8 534a7d7 |
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 |
from transformers import pipeline
import gradio as gr
from video_downloader import download_video, download_youtube_video
from moviepy.editor import AudioFileClip
from moviepy.video.io.ffmpeg_tools import ffmpeg_extract_subclip
import os
from pydub import AudioSegment
import re
pipe = pipeline("automatic-speech-recognition", model="Artanis1551/whisper_romanian")
def process_video(date):
# If the date is not in YYYY-MM-DD format, return an error message
date_pattern = re.compile(r"\b\d{4}\d{2}\d{2}\b")
if not date_pattern.match(date):
video_path = download_youtube_video(
"https://www.youtube.com/watch?v=dQw4w9WgXcQ"
)
transcription = "Please enter a date in the format YYYY-MM-DD."
return video_path, transcription
try:
# Download the video
video_path = download_video(date)
# Extract the first 30 seconds of the video
short_video_path = f"short_{date}.mp4"
ffmpeg_extract_subclip(video_path, 0, 30, targetname=short_video_path)
video_path = short_video_path
# Extract audio from the short video
audio_path = f"audio_{date}.wav"
AudioFileClip(short_video_path).write_audiofile(audio_path)
audio = AudioSegment.from_wav(audio_path)
with open(audio_path, "rb") as audio_file:
audio = audio_file.read()
transcription = pipe(audio)["text"]
# Remove the audio file
os.remove(audio_path)
except:
video_path = download_youtube_video(
"https://www.youtube.com/watch?v=dQw4w9WgXcQ"
)
transcription = "No decision was made on this date."
return video_path, transcription
iface = gr.Interface(
fn=process_video,
inputs=gr.inputs.Textbox(label="Date with format YYYYMMDD"),
outputs=[
gr.outputs.Video(),
gr.Textbox(lines=100, max_lines=100, interactive=True),
],
title="Romanian Transcription Test",
description="This app transcribes videos from the Romanian Parliament"
+ " on a given date. Only the first 30 seconds of the "
+ "video will be used if it is longer than that.",
)
iface.launch()
|