В технологическом мире автоматическое распознавание речи стало жизненно важным инструментом в широком спектре приложений, от виртуальных помощников, таких как Siri и Alexa, до расшифровки звонков и субтитров к видео.

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

Что такое поэзия?

Poetry — это инструмент управления зависимостями в Python. Этот инструмент позволяет вам управлять зависимостями, пакетами и библиотеками в рамках проекта. Файл, отвечающий за управление зависимостями, называется pyproject.toml. Этот файл заменяет setup.py, requirements.txt, configuration.cfg, MANIFEST.in и Pipfile.

Преимущества поэзии:

  • Сохраняйте версию зависимости, совместимую с проектом.
  • Легко добавлять зависимости в проект.
  • Простая файловая структура.

Поэтическая инсталляция:

В Windows PowerShell

(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/get-poetry.py -UseBasicParsing).Content | python –

Использование pip

pip install poetry

Чтобы проверить, установлена ​​ли поэзия или нет:

poetry –version

Активация виртуальной среды

poetry shell

Чтобы деактивировать виртуальную среду, вы можете использовать команду:

exit

Начало нового проекта

poetry new project-name

Структура проекта такая:

  • pyproject.toml: это самый важный файл, который содержит метаданные проекта и другую информацию, такую ​​как зависимости проекта и зависимости разработчика с их версиями. Когда мы добавляем новые зависимости в наш проект, они добавляются сюда. Этот файл не должен быть явно отредактирован.
  • README.rst: это файл, который может редактировать администратор проекта и должен содержать информацию о том, что это за проект и как его использовать.
  • Тесты: папка содержит модульные тесты, относящиеся к различным модулям/функциям программы.
  • Папка проекта содержит еще одну папку с тем же именем, что и основной каталог, содержащий файлы программного кода.

Добавление новых зависимостей

poetry add new-dependencie1 new-dependencie2 …

Установка зависимостей

poetry install

Запуск скриптов Python

poetry run python project-name/main.py

Что такое автоматическое распознавание речи?

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

ASR используется во многих приложениях, таких как системы голосовой диктовки, голосовое управление электронными устройствами и транскрипция речи. Это также важная технология в обработке естественного языка и исследованиях искусственного интеллекта.

Что такое трансформеры — обнимающее лицо?

Преобразователи предоставляют API-интерфейсы для простой загрузки и обучения современных предварительно обученных моделей. Использование предварительно обученных моделей может сократить вычислительные затраты и время обучения модели. Модели могут использоваться в различных модальностях, таких как:

  • Текст: классификация текста, извлечение информации, ответы на вопросы, обобщение, перевод и генерация текста на более чем 100 языках.
  • Изображения: классификация изображений, обнаружение объектов и сегментация.
  • Аудио: распознавание голоса и классификация звука.
  • Мультимодальность: ответы на вопросы в таблицах, оптическое распознавание символов, извлечение информации из отсканированных документов, классификация видео и визуальный ответ на вопросы.

Создайте проект с Poetry и загрузите модели автоматического распознавания речи

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

Шаг 1. Запускаем новый проект с Poetry.

poetry new projectTransformers

Это создаст новый проект с именем «projectTransformers», и у вас будет другая структура каталогов внутри него.

Шаг 2. Активируйте виртуальную среду.

poetry shell

Шаг 3. Добавьте необходимые зависимости.

poetry add transformers soundfile booksa huggingsound

Это добавит необходимые зависимости для разработки связанного проекта.

Шаг 4. Определите функцию, отвечающую за загрузку аудио.

Внутри папки трансформеров проекта создаются папки config и data. Далее внутри папки config создается файл Definitions.py.

import os
ROOT_DIR = os.path.realpath(os.path.join(os.path.dirname(__file__), '..'))

В другом файле (model-ASR.py) импортируются следующие библиотеки и добавляется функция load_audio(name_audio: str):

import soundfile as sf
import librosa
import torch
import os
from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor
from huggingsound import SpeechRecognitionModel
from transformers import WhisperProcessor, WhisperForConditionalGeneration, HubertForCTC
from config.definitions import ROOT_DIR


def load_audio(name_audio: str) -> torch.Tensor:
    # Get the path of the audio file to be transcribed
    file_path: str = os.path.join(ROOT_DIR, 'data', name_audio)

    input_audio, _ = librosa.load(file_path, sr=16000)
    return input_audio

Используя существующий код внутри файла Definitions.py, можно получить реальный путь к некоторым файлам независимо от операционной системы. Затем в функции load_audio(name_audio:str) получается полный путь к загружаемому аудиофайлу. Эта функция использует библиотеку Book для загрузки аудиофайла, указанного в пути, и использует частоту дискретизации (sr) 16000 Гц. Результат сохраняется в переменной «input_audio».

Шаг 5. Загрузите предварительно обученную модель распознавания речи Wav2Vec2 Facebook для расшифровки аудиофайла.

Во-первых, модель Wav2Vec2 и связанный с ней токенизатор загружаются через библиотеку Transformers.

tokenizer = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-base-960h")
model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")

Затем вам нужно использовать токенизатор для подготовки входных данных модели. Делаем это правильным входным натяжителем для модели.

input_values = tokenizer(input_audio, return_tensors="pt").input_values

Затем модель используется, чтобы сделать вывод о входных данных. Логиты (необработанные значения до применения функции softmax) рассчитываются на основе входных данных с использованием модели.

logits = model(input_values).logits

Затем используется функция PyTorch argmax для получения наиболее вероятной метки для каждого таймфрейма из логитов. Эти теги декодируются в текстовую расшифровку с помощью токенизатора.

predicted_ids = torch.argmax(logits, dim=-1)
transcription = tokenizer.batch_decode(predicted_ids)[0]

Наконец, функция в полной форме будет выглядеть так:

def model1() -> str:
    tokenizer = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-base-960h")
    model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")

    input_values = tokenizer(input_audio, return_tensors="pt").input_values
    logits = model(input_values).logits
    predicted_ids = torch.argmax(logits, dim=-1)
    transcription = tokenizer.batch_decode(predicted_ids)[0]

    return transcription

Чтобы проверить, как загрузить соответствующие модели автоматического распознавания речи, вы можете посетить страницу Модели-Hugging Face.

Шаг 6. Загрузите аудио с шумом и без шума и посмотрите результаты.

Для загрузки различных аудио используется функция load_audio() и вызывается функция model1() для использования соответствующей модели.

# Load noise-free-audio.wav
input_audio = load_audio('noise-free-audio.wav')
model1_transcription: str = model1()
print(f"\nTranscription 1 with facebook/wav2vec2-base-960h: {model1_transcription}")

# Load audio-with-noise.wav
input_audio = load_audio('audio-with-noise.wav')
model1_transcription= model1()
print(f"\nTranscription 2 with facebook/wav2vec2-base-960h: {model1_transcription}")

Шаг 7. Запустите файл models-asr.py.

Чтобы запустить файл model-ASR.py, он должен находиться внутри основной папки этого файла. Затем выполните команду:

poetry run python models-ASR.py

Пример проекта с другими моделями, загруженными на Github, можно получить здесь:

AlexanderG1999/Transformers-HuggingFace-ASR (github.com)

Примечание от автора

На этом все, спасибо за прочтение этой статьи — надеюсь, она была вам полезна.

Вы также можете подписаться на 👍 меня в моем аккаунте Linkedin 😄

Вам помочь?

Мы готовы выслушать вас. Если вам нужна помощь в создании следующей большой вещи, вы можете связаться с нашей командой на нашем веб-сайте или по адресу [email protected].