Недавно у нас возникла необходимость транскрибировать ряд аудиофайлов в текст с таймкодами и точным разбитием по фразам.
Задача даже на сегодняшний день нетривиальная, особенно если вам нужен качественный результат. Бесплатные сервисы либо ограничены по времени, либо сильно страдают по качеству.
Поэтому самое время обратиться к достижениям ИИ, а именно Whisper мощной модели для автоматического распознавания речи (ASR) с открытым исходным кодом, разработанная OpenAI.
Вы можете использовать ее через API, но платно, либо установить на собственном ПК – бесплатно, но вам понадобится ПК уровнем от среднего и выше, наличие быстрого ускорителя NVIDIA приветствуется, но не является обязательным требованием.
На самом деле Whisper – это не одна, а целый набор моделей, предлагающий разное качество распознавания речи и разные требования к ресурсам.
На практике имеет смысл использовать модели:
▫️medium – хорошая скорость, среднее качество, 3-5 ГБ ОЗУ
▫️large – профессиональное качество при небольшой скорости и самых больших требованиях к ОЗУ – 10-12 ГБ.
▫️ turbo – то же самое, что и large, но только быстрее, за счет упрощения модели, требует 6-8 ГБ.
В нашем случае требовалось транскрибировать запись судебного заседания и medium не всегда нормально справлялся с юридическими терминами, large и turbo делали это гораздо лучше, при этом turbo сильно заметно быстрее.
Но так как в юридических делах наиболее важна точность, то мы предпочли модель large, предпочитая качество скорости. На CPU Ryzen 9 5900X скорость ее работы составила примерно 0,25, т.е. на часовую запись у вас уйдет примерно 4 часа времени.
Попробовать Whisper можно совсем не сложно на своем оборудовании, после чего самостоятельно сделать выводы о его пригодности в конкретной ситуации. Для работы нам понадобится Python и FFmpeg.
Установим их при помощи пакетного менеджера Winget:
winget install -e --id Python.Python.3.12
winget install -e --id Gyan.FFmpeg
Так как мы имеем дело с Python, то, чтобы избежать возможных проблем с зависимостями и библиотеками хорошим тоном является запуск проекта в отдельном виртуальном окружении (ENV), для этого перейдем в папку проекта, скажем
F:\Wishper и откроем там терминал с консолью PowerShell, после чего создадим виртуальное окружение:py -m venv whisper-env
И активируем его:
.\whisper-env\Scripts\Activate.ps1
Впоследствии, когда вы захотите поработать с проектом еще раз, вам потребуется только заново активировать окружение командой, указанной выше.
Установим Whisper:
pip install -U openai-whisper
После чего просто запускаем распознавание речи командой:
whisper "audio.mp3" --language ru --model medium --output_format srt
Путь к файлу укажите в двойных кавычках, в пути используйте прямые слеши
/ или обратные удвоенные \\, например:"C:/Users/Имя/audio.mp3"
"C:\\Users\\Имя\\audio.mp3"
Далее указываем язык, модель и формат вывода, если вам нужны точные таймкоды, то используйте стандартный формат субтитров – SRT.
Для использования ускорения на GPU вам потребуется заменить некоторые библиотеки, в этом же ENV выполните:
pip uninstall torch torchvision torchaudio -y
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
Затем к строке запуска добавьте дополнительный ключ для использования CUDA:
whisper "audio.mp3" --language ru --model medium --output_format srt --device cuda
Если вам нужно дополнительно распознавание спикеров (диаризация), то установите модуль WhisperX:
pip install whisperx
И добавьте ключ
–diarize, например:whisperx "audio.mp3" --language ru --model medium –diarize --output_format srt
Теперь вывод кроме таймкодов будет размечаться метками SPEAKER_00, SPEAKER_01 и т.д Но качество такого распознавания не всегда уверенное, особенно если вы транскрибируете прения или дискуссию, где спикеры могут перебивать друг друга.
