AI Sber SaluteSpeech в Python без боли и сертификатов

AI

Редактор
Регистрация
23 Август 2023
Сообщения
2 822
Лучшие ответы
0
Реакции
0
Баллы
51
Offline
#1


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


В 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 рублей.

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