Сегодняшний пост подготовлен доктором Мехди Аллахьяри. Исходный пост вы можете найти здесь.

Задумывались ли вы когда-нибудь о "Как составить резюме аудиофайла?". Примерами аудиофайлов могут быть запись встречи или эпизод подкаста, и это лишь некоторые из них. Есть два основных этапа, которые показаны на диаграмме ниже:

  1. Автоматическое распознавание речи. На этом шаге создается расшифровка или текстовая версия аудиофайла.
  2. Модель суммирования. Он суммирует стенограмму с использованием модели суммирования машинного обучения.

Подведение итогов конвейера аудиофайлов

В этом посте мы сосредоточимся на первом шаге и посмотрим, как создать расшифровку аудиофайла. Кроме того, для этой задачи мы будем использовать библиотеки с открытым исходным кодом. Некоторые из библиотек с открытым исходным кодом включают:

Автоматическое распознавание речи с помощью NeMo

Первый шаг — установить пакет NeMo:

apt-get update && apt-get install -y libsndfile1 ffmpeg
pip install Cython
pip install nemo_toolkit['all']

Затем нам нужно создать экземпляры моделей, которые мы хотели бы использовать. Посмотреть все доступные модели можно здесь. Мы загрузим audio_file и преобразуем его в текст (также известный как расшифровка) с помощью модели QuartzNetASR. Примечание. аудиофайлы должны быть в формате .wav.

Audio_file = "path/to/your/file.wav"
# Speech Recognition model - QuartzNet
quartznet = nemo_asr.models.EncDecCTCModel.from_pretrained(model_name="stt_en_quartznet15x5").cuda()
# Punctuation and capitalization model
punctuation = nemo_nlp.models.PunctuationCapitalizationModel.from_pretrained(model_name='punctuation_en_distilbert').cuda()

from_pretrained(…) API загружает и инициализирует модель прямо из облака.

Следующим шагом является использование модели:

# Convert our audio sample to text
files = [Audio_file]
raw_text = ''
text = ''
for fname, transcription in zip(files, quartznet.transcribe(paths2audio_files=files)):
  raw_text = transcription
# Add capitalization and punctuation
res = punctuation.add_punctuation_capitalization(queries=[raw_text])
text = res[0]
print(f'\nRaw recognized text: {raw_text}. \nText with capitalization and punctuation: {text}')

Вот и все! Переменная text содержит стенограмму вашего аудиофайла. Вы можете найти еще несколько уроков возможностей NeMo.

Следующие шаги

Теперь, когда у нас есть стенограмма, мы можем составить из нее резюме. Подсказка: множество вариантов и примеров можно найти здесь. Было бы неплохо разработать демонстрационное приложение, предоставляющее API для этих задач, следовательно, у нас было бы полноценное приложение!

Удачной практики!

Спасибо, что читаете мою рассылку. Вы можете подписаться на меня в Linkedin или Twitter @Angelina_Magr!