Нельзя просто так взять и транскрибировать аудио-файл

Как всё началось

В 23м году я поступил на онлайн-магистратуру ВШЭ "Управление организациями и проектами". Онлайн-магистратура - это лекции онлайн и записи для тех, кто не может присутствовать. Мой опыт говорил о том, что не только многие вещи требуют повторного изучения, но и видео - не мой любимый формат потребления информации.

Поэтому было принято решение транскрибировать записи лекций и делать очищенный текст с помощью LLM.

Пайплайн выглядел примерно так:

  1. транскрибировать текст лекции

  2. очистить от технических моментов

  3. выделить ключевые темы

  4. реструктурировать текст в более последовательный формат с полным сохранением информации по ключевым темам

Изначально я использовал локальную библиотеку 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 рублей.

Что вызывает пролетарский гнев - для организаций ценник вдвое ниже. Для сравнения у Яндекса цены сопоставимы с ценником для организаций.

Комментарии (3)


  1. pol_pot
    10.09.2025 00:20

    Тут дают почти безлимитный, суперскоростной виспер https://console.groq.com/home

    Тут дают 1млн токенов в день к суперскоростным мощным ллм https://www.cerebras.ai/

    А тут и то и другое но не так быстро и красиво, но зато почти совсем безлимитно, и русских пускает без впн https://console.mistral.ai

    Переделывай.


    1. digtatordigtatorov
      10.09.2025 00:20

      Да просто взять whisper.cpp на куде, не поверю, что 3 часа обработки видео занимают 8 часов, либо парень на цпу пускает, либо что-то не так делает


      1. AleGen
        10.09.2025 00:20

        Так отнюдь не у всех есть Cuda. Приходится на CPU мучаться.