Модели¶
Модель по умолчанию¶
Речь распознает GigaAM-v3 E2E RNN-T (gigaam-v3-e2e-rnnt) - открытая модель распознавания русской речи от SberDevices под лицензией MIT. Она сразу пишет текст с пунктуацией, заглавными буквами и числами цифрами. Модель работает через onnx-asr и ONNX Runtime, без PyTorch, по умолчанию - с весами int8.
Другие модели¶
Любую модель onnx-asr можно выбрать по имени параметром -m или аргументом model у Transcriber; при первом запуске она скачивается с Hugging Face. Модели, которые распознают русский:
| Модель | Особенности |
|---|---|
gigaam-v3-e2e-rnnt, gigaam-v3-e2e-ctc |
Пунктуация, заглавные буквы и числа цифрами; CTC обычно быстрее RNN-T |
gigaam-v3-rnnt, gigaam-v3-ctc |
Строчные буквы без пунктуации, числа словами |
gigaam-v2-rnnt, gigaam-v2-ctc |
Предыдущая версия GigaAM |
t-tech/t-one |
Модель Т-Банка для телефонной речи |
nemo-fastconformer-ru-rnnt, nemo-fastconformer-ru-ctc |
NVIDIA NeMo FastConformer для русского с пунктуацией |
alphacep/vosk-model-ru, alphacep/vosk-model-small-ru |
Модели Vosk; small - для слабых компьютеров |
onnx-community/whisper-large-v3-turbo |
Многоязычная модель OpenAI Whisper; заметно тяжелее остальных |
nemo-parakeet-tdt-0.6b-v3 |
Многоязычная модель NVIDIA |
Полный список и форматы файлов моделей - в документации onnx-asr. Какая модель лучше для ваших записей, покажет оценка качества на своей разметке:
stt-ru evaluate eval.csv -m gigaam-v3-e2e-rnnt -m t-tech/t-one -m alphacep/vosk-model-ru
Параметры¶
Параметры модели, устройства и поиска речи общие для команд transcribe, evaluate и serve.
| Параметр | По умолчанию | Описание |
|---|---|---|
-m, --model |
gigaam-v3-e2e-rnnt |
Модель onnx-asr; у evaluate можно повторить |
--quantization |
int8 |
Квантизация весов: int8 или none - исходные веса |
--model-dir |
- | Каталог с файлами модели; у evaluate - только для одной модели |
--device |
auto |
Устройство: auto, cpu, cuda, coreml, directml (см. Установка) |
--mono |
выключен | Сводить каналы в один |
--ffmpeg |
- | Путь к программе ffmpeg |
--vad-threshold, --min-speech-ms, --max-speech-s, --min-silence-ms, --speech-pad-ms |
см. ниже | Параметры поиска речи |
Квантизация¶
Веса int8 примерно вчетверо меньше исходных и обычно быстрее на CPU. --quantization none берет исходные веса; разницу в качестве на своих записях покажет оценка качества с тем и другим значением. Если у модели нет весов int8, загружаются исходные с предупреждением.
Файлы модели на диске¶
--model-dir (аргумент model_dir) берет файлы модели распознавания из каталога: например, модель, скачанную вручную. Если каталога нет, модель скачивается в него. Silero VAD при этом берется из кэша Hugging Face, поэтому на компьютере без интернета проще скопировать кэш целиком и указать его в HF_HOME (см. Установка).
stt-ru transcribe call.wav -m gigaam-v3-e2e-rnnt --model-dir /models/gigaam-v3-e2e-rnnt
Поиск речи¶
stt_ru.vad.VadOptions
Перед распознаванием запись режется на фрагменты речи: модели принимают фрагменты не длиннее 20-30 с. Речь ищет Silero VAD, значения по умолчанию - его и onnx-asr.
| Параметр команды | Поле VadOptions |
По умолчанию | Описание |
|---|---|---|---|
--vad-threshold |
threshold |
0.5 |
Вероятность речи, с которой начинается фрагмент, от 0 до 1 |
| - | neg_threshold |
threshold - 0.15 |
Вероятность, ниже которой фрагмент заканчивается |
--min-speech-ms |
min_speech_duration_ms |
250 |
Наименьшая длительность фрагмента, мс: короткие отбрасываются |
--max-speech-s |
max_speech_duration_s |
20 |
Наибольшая длительность фрагмента, с: длинные режутся |
--min-silence-ms |
min_silence_duration_ms |
100 |
Наименьшая пауза, которая разделяет фрагменты, мс |
--speech-pad-ms |
speech_pad_ms |
30 |
Запас по краям фрагмента, мс |
- Шумная запись дает фрагменты из шума - поднимите
--vad-threshold, например до 0.6. - Тихую речь модель пропускает - опустите порог до 0.35-0.4.
- Реплики делятся на слишком короткие фрагменты - увеличьте
--min-silence-ms, например до 300: фрагменты станут длиннее, субтитры - реже. max_speech_duration_sдолжна быть хотя бы на секунду больше двухspeech_pad_ms.
>>> from stt_ru import Transcriber
>>> from stt_ru.vad import VadOptions
>>> transcriber = Transcriber(vad=VadOptions(threshold=0.6, min_silence_duration_ms=300))