Перейти к содержанию

stt-ru

stt-ru

stt-ru - инструмент распознавания русской речи: библиотека Python, команда stt-ru, веб-интерфейс с REST API и Docker-образ. Речь распознает модель GigaAM-v3 через onnx-asr: текст получается с пунктуацией и числами, каналы стереозаписи распознаются как отдельные говорящие, результат сохраняется в субтитры и таблицы.

Возможности

  • распознавать файлы и каталоги из командной строки: текст в консоль или результаты каждого файла в каталог, общий файл на весь пакет, мониторинг папки с новыми записями
  • сохранять результат в форматах TXT, JSON, JSONL, SRT, VTT, ASS и CSV
  • распознавать записи из файлов и из памяти в программе на Python
  • выбирать модель onnx-asr, устройство и параметры поиска речи
  • оценивать качество моделей на своей разметке: доля ошибок слов (WER) и символов (CER), скорость
  • запускать веб-интерфейс и REST API для себя или команды
  • запускать все это в Docker, в том числе на GPU NVIDIA

Установка

Требуется Python 3.11 или новее.

pip install stt-ru

Дополнения для форматов через ffmpeg, веб-сервиса и оценки качества, GPU и кэш моделей описаны на странице Установка.

Быстрый старт

stt-ru transcribe call.wav                     # текст в консоль
stt-ru transcribe calls/ -o out/ -f srt,csv    # результаты каждого файла в out/
stt-ru serve                                   # веб-интерфейс на http://127.0.0.1:8000
>>> from stt_ru import Transcriber

>>> result = Transcriber().transcribe("call.wav")
>>> for segment in result.segments:
...     print(segment.speaker, segment.start, segment.end, segment.text)
Канал 1 0.994 9.054 Наталья, благодарю вас за ожидание. По данному вопросу я сейчас ваш звонок переведу на специалиста профильного подразделения. Оставайтесь, пожалуйста, на линии.
Канал 0 3.49 3.934 Угу
Канал 0 7.682 8.222 Угу
Канал 1 9.634 12.638 Я в свою очередь с вами прощаюсь. Всего доброго, до свидания.
Канал 0 12.994 13.662 До свидания.

>>> result.save("call.srt")
PosixPath('call.srt')

При первом запуске модель (около 230 МБ) скачивается с Hugging Face. Больше примеров - в ноутбуках.

Как это работает

  1. Файл читается целиком: WAV, FLAC, OGG, MP3 и другие несжатые форматы - библиотекой soundfile, M4A, AAC, AMR, WMA и звук из видео - программой ffmpeg.
  2. Каналы стереозаписи распознаются по отдельности: в записи разговора каждый канал - свой говорящий («Канал 0», «Канал 1»). Каналы, которые отличаются только громкостью и небольшим сдвигом, распознаются один раз.
  3. Поиск речи Silero VAD режет запись на фрагменты речи не длиннее 20 с, модель распознает каждый фрагмент.
  4. Результат - фрагменты с началом, концом, каналом и текстом по времени начала. Записи длиннее 10 минут распознаются окнами около 10 минут с границей в паузе: так распознаванию нужно меньше памяти.

Версия 0.2

Прежняя версия на Kaldi больше не развивается. Ее код остался в истории репозитория.