Этот репозиторий содержит утилиты для быстрой транскрипции русскоязычных WAV-файлов с помощью Vosk и подготовки данных в формате, совместимом с Kaldi/Vosk для дальнейшего дообучения/исследований.
Проект подходит для:
- пакетной транскрипции большого количества файлов;
- подготовки
wav.scp,text,utt2spk,spk2uttдля Kaldi-пайплайнов; - первичной подготовки к дообучению (acoustic model) — далее потребуется Kaldi и GPU.
transcribe.py— транскрипция всех WAV в папкеwav/, выводит.txtи.jsonв папкуtranscripts/.prepare_kaldi_data.py— генерация Kaldi-styledata/(wav.scp, text, utt2spk, spk2utt) из пар WAV+transcript или CSV.requirements.txt— Python-зависимости для утилит.vosk-model-ru-0.42/— (опционально) прикреплённый Kaldi/Vosk модельный пакет (если вы распаковали модель сюда).
- Создайте виртуальное окружение и установите зависимости:
cd /Users/pro/Downloads/ASR_vosk
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtЕсли возникнут проблемы с soundfile, установите системную библиотеку:
brew install libsndfile
pip install soundfile- Установите
ffmpeg(для конвертации/ресемплинга аудио):
brew install ffmpeg- Модель Vosk (пример)
Скачайте русскую модель с: https://alphacep.github.io/vosk/models
В репозитории может быть уже распакована модель, например vosk-model-ru-0.42.
- Транскрипция
# при условии, что модель в ./vosk-model-ru-0.42
python3 transcribe.py --model vosk-model-ru-0.42 --wavdir wav --outdir transcripts
# или явные пути
python3 transcribe.py --model /Users/pro/Downloads/ASR_vosk/vosk-model-ru-0.42 \
--wavdir /Users/pro/Downloads/ASR_vosk/wav \
--outdir /Users/pro/Downloads/ASR_vosk/transcriptsРезультат: для каждого WAV создаются transcripts/<basename>.txt (читаемый текст) и transcripts/<basename>.json (подробный результат/сегменты).
Пример содержимого transcripts/<basename>.json (файл в UTF-8):
{
"text": "теле дроид поднять тумблер двадцать три",
"segments": [
{
"text": "теле дроид поднять тумблер двадцать три"
}
]
}Пример соответствующего transcripts/<basename>.txt:
теле дроид поднять тумблер двадцать три
Если у вас есть тексты (транскрипты) для WAV-файлов, вы можете подготовить Kaldi-данные:
Вариант A — .txt рядом с .wav (один файл с тем же именем, расширение .txt):
python3 prepare_kaldi_data.py --wavdir wav --outdir dataВариант B — CSV wav|transcript|speaker:
python3 prepare_kaldi_data.py --csv corpus.csv --outdir dataВ результате появятся data/wav.scp, data/text, data/utt2spk, data/spk2utt.
Полное дообучение акустической модели Vosk — это Kaldi-репозитории и рецепты, обычно выполняемые на Linux с GPU. Ключевые шаги:
- подготовка
data/(см. выше); - подготовка lexicon, phoneme set и language model (LM);
- запуск Kaldi-скриптов обучения (см. документацию модели/рецепта);
Ресурсы:
- Vosk training guide: https://alphacephei.com/vosk/training
- Kaldi: http://kaldi-asr.org/doc/
Если у вас мало данных
- вместо полного дообучения рассмотрите адаптацию LM/лексикона или использование небольших RNNLM/фразовых подсказок.
wav/— каталог с вашими аудиофайлами (.wav)transcripts/— выход транскрипции (txt + json)data/— (послеprepare_kaldi_data.py) Kaldi-style файлыvosk-model-ru-0.42/— прикреплённая модель (если есть)
- Создать виртуenv и установить:
python3 -m venv .venv; source .venv/bin/activate; pip install -r requirements.txt
- Проверить ffmpeg:
which ffmpeg; ffmpeg -version - Транскрибировать всё в
wav/:python3 transcribe.py --model vosk-model-ru-0.42 --wavdir wav --outdir transcripts
- Подготовить Kaldi-данные:
python3 prepare_kaldi_data.py --wavdir wav --outdir data
- Ошибка "Model path does not exist": укажите корректный путь к распакованной модели (папка с
am/,graph/,conf/). - Ошибка импорта
vosk/soundfile: убедитесь, что вы установили зависимости в активном виртуальном окружении (pip install -r requirements.txt) и установлена системнаяlibsndfile. - Проблемы с конвертацией audio: убедитесь, что
ffmpegдоступен в PATH.
Этот репозиторий — пользовательский набор вспомогательных скриптов. Модели Vosk распространяются по своим условиям (см. README внутри vosk-model-*).