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

  • 1 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