#
Создание Демо с Gradio

Теперь, когда мы настроили модель Whisper для распознавания речи на Дивехи, давайте продолжим и создадим демо с использованием Gradio, чтобы показать ее сообществу!

Первое, что нам нужно сделать, это загрузить дообученную модель, используя класс `pipeline()` - это уже знакомо из раздела о предварительно обученных моделях. Вы можете заменить идентификатор модели (`model_id`) на пространство имен вашей дообученной модели на Hugging Face Hub, или на одну из предобученных моделей Whisper для выполнения распознавания речи без настройки (zero-shot):

    from transformers import pipeline

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

Во-вторых, мы определим функцию, которая принимает путь к аудиофайлу в качестве входных данных и передает его через конвейер (`pipeline`). Здесь конвейер автоматически заботится о загрузке аудиофайла, пересэмплировании его до правильной частоты дискретизации и выполнении вывода модели. Затем мы просто вернем преобразованный текст в качестве выходных данных функции. Чтобы обеспечить возможность нашей модели обрабатывать аудиофайлы произвольной длины, мы включим фрагментирование (разбиение на фрагменты), как описано в разделе о предварительно обученных моделях:

    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"]

Мы будем использовать функцию blocks в Gradio, чтобы создать две вкладки в нашем демо: одну для транскрипции с микрофона и другую для загрузки файла.

    import gradio as gr

    demo = gr.Blocks()

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

    file_transcribe = gr.Interface(
        fn=transcribe_speech,
        inputs=gr.Audio(source="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)

Это запустит демонстрацию Gradio, подобную той, которая работает на пространстве Hugging Face:

Если вы хотите разместить своё демо на платформе Hugging Face Hub, вы можете использовать этот Space в качестве шаблона для своей модели. Для этого выполните следующие шаги:

Щелкните по ссылке, чтобы дублировать шаблон демо в свою учетную запись: https://huggingface.co/spaces/course-demos/whisper-small?duplicate=true

Рекомендуем дать своему Space имя, подобное имени вашей обученной модели (например, whisper-small-dv-demo) и установить видимость на “Public” (Публичный).

После дублирования Space в вашей учетной записи перейдите в раздел “Files and versions” -> “app.py” -> “edit”. Затем измените идентификатор модели на идентификатор вашей обученной модели(строка 6). Прокрутите страницу вниз и нажмите “Commit changes to main” (Зафиксировать изменения в главной версии). Демо перезагрузится, используя вашу обученную модель. Теперь вы можете поделиться этим демо со своими друзьями и родственниками, чтобы они могли использовать модель, которую вы обучили!

Вы можете посмотреть наш видеоурок, чтобы лучше понять, как продублировать Space: YouTube Video

Ожидаем с нетерпением увидеть ваши демо на Hugging Face Hub!