import gradio as gr import time from transformers import pipeline import torch import ffmpeg # Make sure it's ffmpeg-python # Check if GPU is available use_gpu = torch.cuda.is_available() # Configure the pipeline to use the GPU if available if use_gpu: p = pipeline("automatic-speech-recognition", model="carlosdanielhernandezmena/wav2vec2-large-xlsr-53-faroese-100h", device=0) else: p = pipeline("automatic-speech-recognition", model="carlosdanielhernandezmena/wav2vec2-large-xlsr-53-faroese-100h") def extract_audio_from_m3u8(url): try: output_file = "output_audio.aac" ffmpeg.input(url).output(output_file).run(overwrite_output=True) return output_file except Exception as e: return f"An error occurred: {e}" def transcribe(audio, state="", uploaded_audio=None, m3u8_url=""): if m3u8_url: audio = extract_audio_from_m3u8(m3u8_url) if uploaded_audio is not None: audio = uploaded_audio if not audio: return state, state # Return a meaningful message try: time.sleep(3) text = p(audio, chunk_length_s= 50)["text"] state += text + "\n" return state, state except Exception as e: return "An error occurred during transcription.", state # Handle other exceptions def reset(state): state = '' return state demo = gr.Interface( fn=transcribe, inputs=[ gr.components.Audio(source="microphone", type="filepath"), 'state', gr.components.Audio(label="Upload Audio File", type="filepath", source="upload"), gr.components.Textbox(label="m3u8 URL | E.g.: from kvf.fo or logting.fo") ], outputs=[ gr.components.Textbox(type="text"), "state" ], live=True) demo.launch()