Spaces:
Runtime error
Runtime error
import os | |
import gradio as gr | |
from transformers import pipeline | |
from pytube import YouTube | |
from datasets import Dataset, Audio | |
from moviepy.editor import AudioFileClip | |
pipe = pipeline(model="Neprox/model") | |
def download_from_youtube(url): | |
streams = YouTube(url).streams.filter(only_audio=True, file_extension='mp4') | |
fpath = streams.first().download() | |
return fpath | |
def divide_into_30s_segments(audio_fpath): | |
if not os.path.exists("segmented_audios"): | |
os.makedirs("segmented_audios") | |
sound = AudioFileClip(audio_fpath) | |
n_full_segments = int(sound.duration / 30) | |
len_last_segment = sound.duration % 30 | |
segment_paths = [] | |
segment_start_times = [] | |
for i in range(n_full_segments + 1): | |
# Skip last segment if it is smaller than two seconds | |
is_last_segment = i == n_full_segments | |
if is_last_segment and not len_last_segment > 2: | |
continue | |
elif is_last_segment: | |
end = start + len_last_segment | |
else: | |
end = (i + 1) * 30 | |
start = i * 30 | |
segment_path = os.path.join("segmented_audios", f"segment_{i}.wav") | |
segment = sound.subclip(start, end) | |
segment.write_audiofile(segment_path) | |
segment_paths.append(segment_path) | |
segment_start_times.append(start) | |
return segment_paths, segment_start_times | |
def transcribe(audio, url): | |
if url: | |
fpath = download_from_youtube(url) | |
segment_paths, segment_start_times = divide_into_30s_segments(fpath) | |
audio_dataset = Dataset.from_dict({"audio": audio_segment_paths}).cast_column("audio", Audio()) | |
print(audio_dataset) | |
text = pipe(audio_dataset) | |
print(type(text)) | |
print(text) | |
return text | |
else: | |
text = pipe(audio)["text"] | |
return text | |
iface = gr.Interface( | |
fn=transcribe, | |
inputs=[ | |
gr.Audio(source="microphone", type="filepath"), | |
gr.Text(max_lines=1, placeholder="Enter YouTube Link with Swedish speech to be transcribed") | |
], | |
outputs="text", | |
title="Whisper Small Swedish", | |
description="Realtime demo for Swedish speech recognition using a fine-tuned Whisper small model.", | |
) | |
iface.launch() | |