音频课程文档

使用 Gradio 构建演示

Hugging Face's logo
加入 Hugging Face 社区

并获得增强型文档体验

开始

使用 Gradio 构建演示

现在我们已经针对迪维希语音识别微调了 Whisper 模型,让我们继续构建一个Gradio 演示,以向社区展示它!

首先要做的就是使用 `pipeline()` 类加载微调的检查点 - 这与预训练模型 部分的内容非常熟悉。您可以将 `model_id` 更改为您在 Hugging Face Hub 上微调的模型的命名空间,或者更改为预训练的Whisper 模型 中的一个,以执行零样本语音识别

from transformers import pipeline

model_id = "sanchit-gandhi/whisper-small-dv"  # update with your model id
pipe = pipeline("automatic-speech-recognition", model=model_id)

其次,我们将定义一个函数,该函数接受音频输入的文件路径并将其传递到管道中。在这里,管道会自动处理加载音频文件、将其重新采样到正确的采样率以及使用模型运行推理的操作。然后,我们只需将转录的文本作为函数的输出返回即可。为了确保我们的模型可以处理任意长度的音频输入,我们将启用预训练模型 部分中描述的分块功能

def transcribe_speech(filepath):
    output = pipe(
        filepath,
        max_new_tokens=256,
        generate_kwargs={
            "task": "transcribe",
            "language": "sinhalese",
        },  # update with the language you've fine-tuned on
        chunk_length_s=30,
        batch_size=8,
    )
    return output["text"]

我们将使用 Gradio 的 功能在我们的演示中启动两个选项卡:一个用于麦克风转录,另一个用于文件上传。

import gradio as gr

demo = gr.Blocks()

mic_transcribe = gr.Interface(
    fn=transcribe_speech,
    inputs=gr.Audio(sources="microphone", type="filepath"),
    outputs=gr.outputs.Textbox(),
)

file_transcribe = gr.Interface(
    fn=transcribe_speech,
    inputs=gr.Audio(sources="upload", type="filepath"),
    outputs=gr.outputs.Textbox(),
)

最后,我们将使用我们刚刚定义的两个块启动 Gradio 演示

with demo:
    gr.TabbedInterface(
        [mic_transcribe, file_transcribe],
        ["Transcribe Microphone", "Transcribe Audio File"],
    )

demo.launch(debug=True)

这将启动一个类似于 Hugging Face 空间上运行的 Gradio 演示

如果您希望在 Hugging Face Hub 上托管您的演示,可以使用此空间作为您微调模型的模板。

单击链接将模板演示复制到您的帐户:https://huggingface.co/spaces/course-demos/whisper-small?duplicate=true

我们建议您为您的空间命名类似于您微调的模型的名称(例如 whisper-small-dv-demo)并将可见性设置为“公开”。

将空间复制到您的帐户后,单击“文件和版本” -> “app.py” -> “编辑”。然后将模型标识符更改为您的微调模型(第 6 行)。滚动到页面底部,单击“将更改提交到 main”。演示将重新启动,这次将使用您微调的模型。您可以与您的朋友和家人分享此演示,以便他们可以使用您训练的模型!

查看我们的视频教程,以更好地了解如何复制空间 👉️ YouTube 视频

我们期待在 Hub 上看到您的演示!