Spaces:
Runtime error
Runtime error
File size: 4,257 Bytes
3c7858a 8d491d1 08132ae 022f864 d4083a0 07459bd df2191f d4c7a2e df2191f fc76259 d4fa0b1 f9abde7 cfd2660 f9abde7 8d491d1 4294b59 07459bd cc1910c 29d3942 f852bda 1b5cd44 0829f56 9ad392d df2191f 8f928e3 df2191f 09cbba9 fc76259 df2191f 30f1ebe d4cdf1c e30de93 df2191f b5d3b73 6ab1a8b 30f1ebe 2dd3795 6ab1a8b 47ca323 b53f29f d4cdf1c 6ab1a8b 807f737 9e18978 6ab1a8b 26e9fae 8f89d03 b64c6fc ebcd408 |
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 |
# from: https://gradio.app/real_time_speech_recognition/
from transformers import pipeline, WhisperProcessor, WhisperForConditionalGeneration
import torch
import gradio as gr
import librosa
import os
import time
#Loading the model and the tokenizer
token_key = os.environ.get("HUGGING_FACE_HUB_TOKEN")
print("key length:", len(token_key.strip()))
model_name = "pgilles/whisper-large-v2-lb_cased_04"
#model_name = "pgilles/whisper-large-10_Chamber" # model too bad
processor = WhisperProcessor.from_pretrained(model_name, language="lb", task="transcribe")
tokenizer = processor.tokenizer
model = WhisperForConditionalGeneration.from_pretrained(model_name, use_auth_token=token_key)
#p = pipeline("automatic-speech-recognition", model=model, tokenizer=tokenizer, feature_extractor=processor.feature_extractor, decoder=processor.decoder, use_auth_token=token_key)
pipe = pipeline("automatic-speech-recognition", model=model, tokenizer=processor.tokenizer, feature_extractor=processor.feature_extractor, device=0)
#pipe = pipeline("automatic-speech-recognition", model=model_name, device=0, use_auth_token=token_key)
#pipe.model.config.forced_decoder_ids = pipe.tokenizer.get_decoder_prompt_ids(language= "Luxembourgish", task="transcribe")
#pipe.model.config.forced_decoder_ids = None
def load_data(input_file):
""" Function for resampling to ensure that the speech input is sampled at 16KHz.
"""
sampling_rate = 16_000
#read the file
speech, sample_rate = librosa.load(input_file, sr=sampling_rate, mono=True)
#speech = librosa.effects.trim(speech, top_db= 10)
return speech
def asr_pipe(input_file, input_file_microphone, chunks):
input_file = input_file_microphone if input_file_microphone else input_file
transcription = pipe(input_file, chunk_length_s=chunks)["text"]
return transcription
inputs = [gr.inputs.Audio(source="upload", type='filepath', label="Eng Audio-Datei eroplueden...", optional = True),
gr.inputs.Audio(source="microphone", type="filepath", label="... oder direkt mam Mikro ophuelen", optional = True),
gr.Slider(minimum=3, maximum=32, value=29, step=0.5, label="Chunk Length")
]
outputs = [gr.outputs.Textbox(label="Erkannten Text")]
samples = [["Chamber2022_1.wav", "Chamber2022_1.wav", 15.5], ["Chamber2022_2.wav", "Chamber2022_2.wav", 20], ["Chamber2022_3.wav", "Chamber2022_3.wav", 30], ["Erlieft-a-Verzielt.wav", "Erlieft-a-Verzielt.wav", 28.5]]
gr.Interface(fn = asr_pipe,
inputs = inputs,
outputs = outputs,
title="Sproocherkennung fir d'Lëtzebuergescht @uni.lu, based on Whisper-large-v2",
description = "Dës App convertéiert Är geschwate Sprooch an de (méi oder manner richtegen ;-)) Text!",
examples = samples,
examples_per_page = 10,
article = "Beschreiwung: Dir kënnt Iech selwer iwwer de Mikro ophuelen, eng Datei eroplueden oder e Beispill auswielen. Dëse Modell ass trainéiert mam neisten Sproocherkennungsalgorithmus vun OpenAI: Whisper. Anescht wéi bei deene meeschten Applikatiounen, déi op dem Whisper baséieren, ass dëse lëtzebuergeschen zousätzlech mat enger grousser, kontrolléierter Datebasis trainéiert ginn ('fine-tuning' mat 70 Stonne Lëtzebuergesch aus verschiddene sproochleche Genren). Domat ass eng niddereg Feelerquote méiglech, déi virdrun net denkbar war. D'Grouss- a Klengschreiwung an och d'Punktuatioun gi gréisstendeels richteg ëmgesat. Am Géigesaz zum Wav2vec 2.0-Algorithmus, deen och héich Erkennungsraten huet an och op ville Sproochen trainéiert ass, ass beim Whisper fir vill Sproochen net nëmmen d'Akustik mee och den Text mattrainéiert ginn ('weak-supervised pre-training'). Domat ass net nëmmen déi allgemeng Erkennungsrat méi héich wéi beim Wav2vec 2.0, mee och méisproocheg Schwätze gëtt däitlech besser erkannt. Et kann een also z.B. tëscht Lëtzebuergescht a Franséisch (oder Däitsch, Englesch, Spuenesch, Chineesesch) hin- an hierwiesselen an de System produzéiert de richtegen Text. 't dauert ongeféier e Fënneftel bis e Véierel vun der Dauer vun der Opnam, bis d'Transkriptioun verschafft ass.",
theme="default").launch(share=False, show_error=True)
|