DevGang
Авторизоваться

Разработка приложения для транскрипции и перевода речи с помощью OpenAI Whisper и Streamlit

Данное руководство объясняет, как использовать Streamlit (конкретно, st.audio_input) для записи аудио с микрофона и обработку его с помощью модели OpenAI Whisper. Результатом станет текстовый файл (.txt) с транскрипцией и/или переводом на английский язык.

Необходимые компоненты:

  • Базовые знания Python
  • Знакомство со Streamlit
  • Ключ API OpenAI (требуется регистрация).

Описание Whisper:

Whisper – это открытая нейронная сеть, обеспечивающая высокоточное распознавание английской речи.

API OpenAI предлагает два основных функционала:

  • Транскрипцию речи
  • Перевод речи.

Описание Streamlit:

Streamlit – это инструмент для быстрого создания и публикации приложений, работающих с данными. Эта библиотека Python с открытым кодом позволяет создавать веб-приложения, визуализировать данные, итеративно улучшать приложения на основе новых моделей машинного обучения.

Streamlit идеально подходит для разработчиков Python, предоставляя удобные средства для взаимодействия с пользователем (ввод текста, чисел, дат) и создания интерактивных графиков с помощью популярных библиотек Python.

Установка Streamlit

Для запуска любых приложений Streamlit необходимо сначала установить Streamlit с помощью команды:

pip install streamlit

Установка других библиотек

Поскольку мы работаем с преобразованием аудио в текст, нам необходимо надежно хранить переменные среды.

pip install openai python-dotenv

Создание переменной среды

Создайте новый файл в корневом каталоге проекта и назовите его .env.

Вставьте свой ключ API OpenAI:

.env
OPENAI_API_KEY="sk-..."

Создание приложения

В своем каталоге создайте файл streamlit_app.py, который будет содержать весь код Python для транскрибирования и перевода нашего аудио и вывода полученного текста.

Чтобы инициализировать экземпляр клиента OpenAI, скопируйте и вставьте этот код:

streamlit_app.py
import os
from dotenv import load_dotenv
from openai import OpenAI

load_dotenv()

api_key = os.getenv('OPENAI_API_KEY')

client = OpenAI()

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

P.S.: Использование Openal API не является бесплатным, так как для использования сервиса вам необходимо приобрести несколько кредитов.

Транскрипция с помощью Whisper

Давайте обновим streamlit_app.py следующим образом:

streamlit_app.py
...
import streamlit as st

st.logo(
  "logo.png",
  size="medium",
  link="https://platform.openai.com/docs",
)

st.title("Transcription with Whisper")

audio_value = st.audio_input("record a voice message to transcribe")

if audio_value:
  transcript = client.audio.transcriptions.create(
    model="whisper-1",
    file = audio_value
  )

  transcript_text = transcript.text
  st.write(transcript_text)

API транскрипций преобразует наш звук с помощью виджета st.audio_input для записи нашего голоса. Если запись существует, то model, Whisper используется для создания нужного формата файла для транскрипции аудио и вывода текста с помощью функции st.write(), которая берет строку и записывает ее непосредственно в наше веб-приложение.

Чтобы использовать тот же логотип, что и в левом верхнем углу приложения, загрузите его и сохраните в каталоге вашего проекта.

Теперь давайте запустим это приложение с помощью этой команды в терминале:

streamlit run streamlit_app.py

Загрузка Transcribed текста

Возможность загрузки транскрибированного сообщения для последующего использования пригодится для ведения записей, когда вам это понадобится.

Streamlit предлагает виджет ввода, который позволяет отображать кнопку загрузки. Вернитесь к файлу streamlit_app.py, обновите кодовую базу следующим образом:

streamlit_app.py
...

  txt_file = "transcription.txt"

  # Initialize session state for download confirmation
  if "downloaded" not in st.session_state:
        st.session_state.downloaded = False

    # Download button
  if st.download_button(
       label="Download Transcription",
       file_name="transcription.txt",data=transcript_text,
  ):
       st.session_state.downloaded = True

    # Show success message after download
  if st.session_state.downloaded:
        st.success("Transcription file downloaded successfully!")

В строках кода выше происходит следующее:

  • st.session_state в Streamlit позволяет вам совместно использовать переменные между повторами для каждого сеанса пользователя
  • Переменная transcript_text будет содержать содержимое транскрибированного текста
  • Переменная txt_file с назначенным значением transcription.txt — это имя файла транскрибированного текста при загрузке файла.
  • В функции st.download_button() метка описывает пользователю, для чего предназначена кнопка.

Элемент статуса st.success отображает сообщение об успешном завершении при сохранении файла.

Перевод с помощью Whisper

Процесс создания перевода аналогичен созданию транскрипции. Конечная точка перевода переведет иностранный язык в письменный текст на английском языке из входных данных аудиофайла.

Скопируйте и вставьте этот код.

streamlit_app.py
...

st.header("Translation with Whisper", divider="gray")

audio_translate = st.audio_input("record a voice message to translate")

if audio_translate:
  translate = client.audio.translations.create(
    model="whisper-1",
    file=audio_translate
  )

  st.write(translate.text)

Для сохранения переведенного аудио в текстовом формате, воспользуйтесь кнопкой «Загрузить транскрипцию». Исходный код приложения доступен в репозитории – попробуйте его! Успехов!

Заключение

В отличие от примеров OpenAI, использующих предварительно записанные аудио, это приложение, созданное с помощью Streamlit, позволяет транскрибировать и переводить вашу собственную речь, напрямую взаимодействуя с API OpenAI.

Источник:

#Python
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу