File size: 1,931 Bytes
9b739eb
 
 
40fa8b4
 
e5722ea
a949720
40fa8b4
 
bbb5d8a
 
40fa8b4
 
 
 
 
 
 
 
 
 
84d17a4
40fa8b4
 
 
 
 
 
 
 
 
 
 
9b739eb
40fa8b4
 
9b739eb
 
 
 
 
40fa8b4
 
 
 
e5722ea
40fa8b4
 
 
 
9b739eb
40fa8b4
9b739eb
 
 
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
import gradio as gr
from transformers import pipeline, WhisperProcessor, WhisperForConditionalGeneration

# 所有可选模型
MODEL_OPTIONS = {
    "Whisper Lao defualt":"LuoYiSULIXAY/whisper-lao-finetuned_laonlp",
    "Whisper Lao update":"LuoYiSULIXAY/whisper-lao-finetuned_laonlp_2",
    "Whisper Lao v1": "LuoYiSULIXAY/whisper-lao-finetuned_1",
    "Whisper Lao v2": "LuoYiSULIXAY/whisper-lao-finetuned_2",
    "OpenAI Whisper Medium": "openai/whisper-medium",
    "small aug":"LuoYiSULIXAY/whisper_small_aug"
}

# 缓存加载过的模型,避免重复加载耗时
loaded_pipelines = {}

def load_asr_pipeline(model_name):
    """根据模型名动态加载 pipeline"""
    if model_name in loaded_pipelines:
        return loaded_pipelines[model_name]

    processor = WhisperProcessor.from_pretrained("openai/whisper-medium", language="lo")
    model = WhisperForConditionalGeneration.from_pretrained(model_name)

    asr_pipeline = pipeline(
        "automatic-speech-recognition",
        model=model,
        tokenizer=processor.tokenizer,
        feature_extractor=processor.feature_extractor,
        device=0  # 如果用 CPU 可以设置为 -1
    )
    loaded_pipelines[model_name] = asr_pipeline
    return asr_pipeline

def transcribe(audio, model_choice):
    asr = load_asr_pipeline(model_choice)
    result = asr(audio, generate_kwargs={"language": "lao", "task": "transcribe"})
    return result["text"]

demo = gr.Interface(
    fn=transcribe,
    inputs=[
        gr.Audio(type="filepath", label="Upload Audio"),
        gr.Dropdown(
            choices=list(MODEL_OPTIONS.values()),
            value="LuoYiSULIXAY/whisper-lao-finetuned_laonlp",
            label="Select Whisper Model"
        )
    ],
    outputs=gr.Textbox(label="Transcription"),
    title="Whisper Lao",
    description="Realtime demo for Lao speech recognition using different Whisper fine-tuned models."
)

demo.launch(share=True)