Нельзя просто так взять и транскрибировать аудио-файл
Как всё началось
В 23м году я поступил на онлайн-магистратуру ВШЭ "Управление организациями и проектами". Онлайн-магистратура - это лекции онлайн и записи для тех, кто не может присутствовать. Мой опыт говорил о том, что не только многие вещи требуют повторного изучения, но и видео - не мой любимый формат потребления информации.
Поэтому было принято решение транскрибировать записи лекций и делать очищенный текст с помощью LLM.
Пайплайн выглядел примерно так:
транскрибировать текст лекции
очистить от технических моментов
выделить ключевые темы
реструктурировать текст в более последовательный формат с полным сохранением информации по ключевым темам
Изначально я использовал локальную библиотеку OpenAI Whisper, но мой не самый мощный компьютер распознавал 3х-часовое видео в текст за 8 часов(модель large v3).
С ростом частоты лекций стало понятно, что такой подход не масштабируется, и необходимо иметь возможность ускориться с транскрибацией - привет платные сервисы!
Сервис OpenAI требует приседаний с картами зарубежных банков. Я знал о Yandex SpeechKit, но когда-то API оставил не лучшее впечатление. Решил попробовать Sber SaluteSpeech — на тот момент была серия публикаций о сервисе, и он показался достаточно адекватным.
Когда я открыл документацию и GitHub-репозиторий SaluteSpeech, понял, что скучно не будет: множество деталей протокола, асинхронные пайплайны, работа с сертификатами Минцифры.
Умный в гору не пойдёт, но в наших краях ценится слабоумие и отвага. Я взял за пример API Whisper, где транскрибация выглядит максимально просто, и за один вечер написал свою библиотеку, которая:
упрощает процесс транскрибации,
прячет сертификаты внутри пакета,
делает использование сервиса доступным для простых людей.
Теперь весь процесс — «передал аудио → получил текст (или сегменты текста)» — стал проще.
Что такое salute_speech в моей инкарнации
salute_speech
— это лёгкий клиент для Sber SaluteSpeech с асинхронным API, CLI и готовыми настройками по умолчанию. Он избавляет от сложностей с сертификатами, токенами авторизации и пошаговым процессом транскрибации аудио. Библиотека особенно полезна, если:
нужно быстро интегрировать транскрибацию в сервис,
вам леньвы хотите простой интерфейс в духе сервисов OpenAI.
Что вы получаете
-
Простой API, знакомый по Whisper:
client.audio.transcriptions.create(file=..., language="ru-RU")
Асинхронность — сознательное отступление от API OpenAI, продиктованное особенностями моего восприятия.
CLI из коробки — транскрибация подготовленного аудио одной командой.
Сертификаты Минцифры — «под капотом», без ручной возни.
Токены авторизации — запрашиваются и продляются без вашего участия.
Установка
pip install salute_speech
Каждый канал транскрибируется API SaluteSpeech отдельно, поэтому для своих целей я конвертировал звук в моно 16 кГц, что рекомендую и вам.
Перед началом работы
Для работы с сервисом вам понадобится Ключ Авторизации. Официальная документация безупречна, у меня проблем с получением ключа не возникло.
Быстрый старт: CLI
export SBER_SPEECH_API_KEY=ваш_ключ
ffmpeg -i лекция.mp4 -ac 1 -ar 16000 lecture.wav
# Получаем текст
salute_speech transcribe-audio lecture.wav -o transcript.txt
# WebVTT субтитры
salute_speech transcribe-audio lecture.wav -o subtitles.vtt
# SRT субтитры
salute_speech transcribe-audio lecture.wav -o subtitles.srt
# JSON с сегментами
salute_speech transcribe-audio lecture.wav -o transcript.js
Быстрый старт: Python
import asyncio, os
from salute_speech.speech_recognition import SaluteSpeechClient
async def main():
client = SaluteSpeechClient(client_credentials=os.getenv("SBER_SPEECH_API_KEY"))
with open("meeting.mp3", "rb") as f:
result = await client.audio.transcriptions.create(file=f, language="ru-RU")
print(result.text)
asyncio.run(main()
Применение
Субтитры для видео (VTT/SRT) и сегменты для ручного редактирования.
Конспект лекций и встреч, далее — генерация заметок с помощью LLM.
Интеграция в сервисы — простой асинхронный интерфейс.
Почему это важно
Официальный SDK мощный, но слишком детализированный для простых задач.
Сертификаты Минцифры не поддерживаются в основных дистрибутивах Linux — библиотека маскирует эту сложность.
Работа с временными токенами авторизации требуется для безопасности, но не интересна в бизнес-сценариях — я реализовал её за вас и спрятал «под капотом».
Когда вам нужен полный контроль, используйте официальный репозиторий. Когда хочется просто сделать задачу и не тратить день на интеграцию — попробуйте salute_speech
.
Немного о грустном
SaluteSpeech ежемесячно предоставляет 100 бесплатных минут распознавания аудио. Этого достаточно для простых задач и экспериментов, но дальше становится больно.
Как я говорил, я использовал распознавание речи для обработки лекций - 5-6 дней в неделю по 3 часа очень быстро исчерпывают пакеты из 1000 минут за 1200 рублей.
Что вызывает пролетарский гнев - для организаций ценник вдвое ниже. Для сравнения у Яндекса цены сопоставимы с ценником для организаций.
pol_pot
Тут дают почти безлимитный, суперскоростной виспер https://console.groq.com/home
Тут дают 1млн токенов в день к суперскоростным мощным ллм https://www.cerebras.ai/
А тут и то и другое но не так быстро и красиво, но зато почти совсем безлимитно, и русских пускает без впн https://console.mistral.ai
Переделывай.
digtatordigtatorov
Да просто взять whisper.cpp на куде, не поверю, что 3 часа обработки видео занимают 8 часов, либо парень на цпу пускает, либо что-то не так делает
AleGen
Так отнюдь не у всех есть Cuda. Приходится на CPU мучаться.