Share This
Связаться со мной
Крути в низ
Categories
//🗣️ Преобразование, транскрибация и расшифровка аудио в текст с помощью Python и Vosk. Перевод русской речи в текст.

🗣️ Преобразование, транскрибация и расшифровка аудио в текст с помощью Python и Vosk. Перевод русской речи в текст.

preobrazovanie transkribacija i rasshifrovka audio v tekst s pomoshhju python i vosk perevod russkoj rechi v tekst 0715c80 - 🗣️ Преобразование, транскрибация и расшифровка аудио в текст с помощью Python и Vosk. Перевод русской речи в текст.

Телеграм @Andrey_Totshin В статье научимся конвертировать русскую речь в текст (транскрибация) с помощью Python и библиотеки Vosk с её ML-моделями.

preobrazovanie transkribacija i rasshifrovka audio v tekst s pomoshhju python i vosk perevod russkoj rechi v tekst 2cf5631 - 🗣️ Преобразование, транскрибация и расшифровка аудио в текст с помощью Python и Vosk. Перевод русской речи в текст.

Продолжаем серию статей по практическому применению Python. Попробуем решить задачу транскрибации записи речи из аудио в текст. Это не rocket science 🙂 Такие задачи уже решаются продуктами на рынке и довольно неплохо (Сбер, Yandex). Моя цель – не конкурировать, а показать, что такие серьезные задачи можно начать решать с минимальным порогом входа: достаточно базовых знаний в программировании на Python.

Направление естественного анализа речи – целая область в NLP (Natural Language Processing). Дело в том, что компьютер очень быстро считает, но вот с пониманием смысла у него проблемы. Программа может быстро подсчитать количество слов в произведении «Война и мир», но с анализом смысла будут проблемы. А вот NLP пытается докопаться до смыслов.

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

Для работы нам понадобится Python 3.8+, библиотека для распознавания речи – Vosk. Немного про библиотеку Vosk:

  • Поддерживает 20+ языков и диалектов.
  • Работает без доступа к сети даже на мобильных устройствах – Raspberry Pi, Android, iOS.
  • Устанавливается с помощью простой команды pip3 install vosk без дополнительных шагов.
  • Сделана для потоковой обработки звука, что позволяет реализовать мгновенную реакцию на команды.
  • Поддерживает несколько популярных языков программирования – Java, C#, Javascript, Python.
  • Позволяет быстро настраивать словарь распознавания для улучшения точности распознавания.
  • Позволяет идентифицировать говорящего.
  • Библиотека активно контрибьютится и поддерживается.

Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека data scientist’а» Интересно, перейти к каналу

Перевод аудио в текст

Чтобы реализовать транскрибацию из аудио в текст, нам необходимо решить следующие задачи:

  1. Вытащить части речи из аудио.
  2. Расставить пробелы на паузах между частями речи.
  3. Добавить пунктуацию в текст.

Все действия буду делать на машине с Ubuntu 20 (Python 3.8) со следующей конфигурацией:

  • CPU 2vCPU.
  • RAM 12GB.
  • HDD 20GB.

Причина использования такого количества RAM в том, что мы делаем распознавание на универсальной модели, то есть модели размером 50 Мб, которая требует в разы меньше оперативной памяти в работе, чем полноценная модель. Правда, качество распознавания в этом случае уменьшится.

Создаем директорию speech:

         mkdir speech cd speech     

Далее необходимо поставить зависимости для Python:

         apt install python3-pip pip3 install ffmpeg pip3 install pydub pip3 install vosk pip3 install torch pip3 install transformers     

Также скачиваем и распаковываем модель для распознавания русской речи, выполнив команды:

         curl -o ./model.zip https://alphacephei.com/vosk/models/vosk-model-ru-0.22.zip unzip model.zip mv vosk-model-ru-0.22/ model rm -rf model.zip     

В результате этих действий мы скопировали к себе модель, разархивировали ее и переименовали директорию. Также удалили скачанный архив. Всё-таки он весит 1.5 Гб. Для расстановки пунктуации делаем похожие действия: скачиваем еще одну модель весом 1.5 Гб.

         curl -o recasepunc.zip https://alphacephei.com/vosk/models/vosk-recasepunc-ru-0.22.zip unzip recasepunc.zip mv vosk-recasepunc-ru-0.22/ recasepunc rm -rf recasepunc.zip     

Код файла app.py, который выполняет перевод аудио в текст.

         from vosk import Model, KaldiRecognizer, SetLogLevel from pydub import AudioSegment import subprocess import json import os  SetLogLevel(0)  # Проверяем наличие модели if not os.path.exists("model"):     print ("Please download the model from https://alphacephei.com/vosk/models and unpack as 'model' in the current folder.")     exit (1)  # Устанавливаем Frame Rate FRAME_RATE = 16000 CHANNELS=1  model = Model("model") rec = KaldiRecognizer(model, FRAME_RATE) rec.SetWords(True)  # Используя библиотеку pydub делаем предобработку аудио mp3 = AudioSegment.from_mp3('Song.mp3') mp3 = mp3.set_channels(CHANNELS) mp3 = mp3.set_frame_rate(FRAME_RATE)  # Преобразуем вывод в json rec.AcceptWaveform(mp3.raw_data) result = rec.Result() text = json.loads(result)["text"]  # Добавляем пунктуацию cased = subprocess.check_output('python3 recasepunc/recasepunc.py predict recasepunc/checkpoint', shell=True, text=True, input=text)  # Записываем результат в файл "data.txt" with open('data.txt', 'w') as f:     json.dump(cased, f, ensure_ascii=False, indent=4)     

Последний штрих – разместить файл Song.mp3 в нашей директории с исполняемым файлом app.py. Затем запускаем app.py. В результате наша программа обработает файл .mp3 и на основе натренированных моделей из библиотеки Vosk сделает транскрибацию аудио в текст с сохранением результата в файл data.txt.

***

Наша реализация решает поставленные задачи в начале статьи. Но это скорее MVP, чем продуманное решение для продакшена. Если мы начнем углубляться, то перед нами встанут задачи обработки больших аудио (от часа и более), организации многопоточности, балансировки и горизонтального масштабирования и много чего интересного. Библиотека VOSK позволяет со всем этим справиться. Но это уже другая история 🙂

Материалы по теме

  • 📊 NLP и визуализация текста на примере твитов о президентских выборах в США
  • 🤖 Практическое руководство по NLP: изучаем классификацию текстов с помощью библиотеки fastText
  • Обзор четырёх популярных NLP-моделей 🙊 💬
  • NLP – это весело! Обработка естественного языка на Python

  • 29 views
  • 0 Comment

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.

Свежие комментарии

    Рубрики

    About Author 01.

    blank
    Roman Spiridonov

    Моя специальность - Back-end Developer, Software Engineer Python. Мне 39 лет, я работаю в области информационных технологий более 5 лет. Опыт программирования на Python более 3 лет. На Django более 2 лет.

    Categories 05.

    © Speccy 2022 / All rights reserved

    Связаться со мной
    Close