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. Больше примеров - в ноутбуках.
Как это работает¶
- Файл читается целиком: WAV, FLAC, OGG, MP3 и другие несжатые форматы - библиотекой soundfile, M4A, AAC, AMR, WMA и звук из видео - программой ffmpeg.
- Каналы стереозаписи распознаются по отдельности: в записи разговора каждый канал - свой говорящий («Канал 0», «Канал 1»). Каналы, которые отличаются только громкостью и небольшим сдвигом, распознаются один раз.
- Поиск речи Silero VAD режет запись на фрагменты речи не длиннее 20 с, модель распознает каждый фрагмент.
- Результат - фрагменты с началом, концом, каналом и текстом по времени начала. Записи длиннее 10 минут распознаются окнами около 10 минут с границей в паузе: так распознаванию нужно меньше памяти.
Версия 0.2
Прежняя версия на Kaldi больше не развивается. Ее код остался в истории репозитория.