В един все по-движим от технологиите свят, автоматичното разпознаване на реч се превърна в жизненоважен инструмент в широка гама от приложения, от виртуални асистенти като 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 (Automatic Speech Recognition), е технология, която позволява автоматичното транскрибиране на човешкия глас в писмен текст.

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

Какво представляват Transformers — Hugging Face?

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

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

Създаване на проект с поезия и зареждане на модели за автоматично разпознаване на реч

Тази публикация показва как да разработите проект с Poetry и Python и да заредите различни модели за автоматично разпознаване на реч.

Стъпка 1: Стартиране на нов проект с Poetry.

poetry new projectTransformers

Това ще създаде нов проект с името „projectTransformers“ и ще имате различна структура на директория в него.

Стъпка 2: Активирайте виртуална среда.

poetry shell

Стъпка 3: Добавете необходимите зависимости.

poetry add transformers soundfile booksa huggingsound

Това ще добави необходимите зависимости за разработване на свързания проект.

Стъпка 4: Дефинирайте функцията, която отговаря за зареждането на аудио.

В папката за трансформатори на проекта се създават папките с конфигурация и данни. След това в папката 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 Hz. Резултатът се съхранява в променливата “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

След това функцията argmax на PyTorch се използва за получаване на най-вероятния етикет за всяка времева рамка от логитите. Тези етикети се декодират в текстов препис с помощта на токенизатора.

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

За да проверите как да заредите съответните модели за автоматично разпознаване на реч, можете да посетите страницата Models-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: Стартирайте file models-asr.py

За да стартирате файла model-ASR.py, той трябва да се намира в главната папка на този файл. След това изпълнете командата:

poetry run python models-ASR.py

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

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

Бележка от автора

Това е всичко, хора, благодаря ви, че прочетохте тази статия — надявам се, че сте намерили тази статия за полезна.

Можете също така да ме следвате 👍 в моя акаунт в Linkedin 😄

Имаш ли нужда от помощ?

Ние сме готови да ви изслушаме. Ако имате нужда от помощ при създаването на следващото голямо нещо, можете да се свържете с нашия екип на нашия уебсайт или на [email protected]