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