Главная → Блог → Как перейти с OpenAI Whisper API на альтернативный сервис
Как перейти с OpenAI Whisper API на альтернативный сервис
Команды переходят с публичного Whisper API по разным причинам: стоимость на больших объёмах, требования к обработке данных, недоступность сервиса в регионе. Хорошая новость — если API совместим по протоколу, миграция сводится к замене двух строк и занимает вечер.
Что именно меняется в коде
Ровно две вещи: адрес и ключ. Всё остальное — имена полей, форматы ответов, обработка ошибок — остаётся прежним.
# было
client = OpenAI(api_key="sk-…")
# стало
client = OpenAI(base_url="https://voicesscribe.com/v1", api_key="vs_live_…")
Вызов распознавания не трогаем вовсе:
result = client.audio.transcriptions.create(model="whisper-1", file=f)
Параметр model сохраняем для совместимости: сервис принимает привычное значение и использует свою модель.
Совместимость по деталям
| Что | Совпадает |
|---|---|
Эндпоинт POST /v1/audio/transcriptions | да |
Поле файла file, multipart-запрос | да |
Параметры language, prompt, temperature, response_format | да |
| Форматы ответа: json, text, verbose_json, srt, vtt | да |
Структура ошибки {"error": {"message", "type", …}} | да |
Последний пункт важнее, чем кажется: официальные SDK разбирают ошибки в типизированные исключения. Если сервер отвечает своим форматом, клиентский код падает не там, где ожидается, — совместимость по ошибкам избавляет от переписывания обработчиков.
Как сравнить качество перед переключением
Не переключайте продакшн вслепую. Разумный порядок:
- Соберите выборку. 20–50 реальных записей: чистые, шумные, короткие, на разных языках — как в бою.
- Прогоните через оба сервиса одним скриптом, сохранив результаты рядом.
- Сравните на своих критериях. Важны не абстрактные проценты, а ваши сценарии: правильно ли распознаются артикулы, имена, суммы.
- Переключайте частями. Направьте на новый сервис 10% трафика, через несколько дней — весь.
for path in samples:
with open(path, "rb") as f:
a = old_client.audio.transcriptions.create(model="whisper-1", file=f).text
with open(path, "rb") as f:
b = new_client.audio.transcriptions.create(model="whisper-1", file=f).text
print(path, "\n было:", a, "\n стало:", b)Что стоит проверить отдельно
- Таймауты клиента. Стандартные 100 секунд подходят для голосовых и коротких звонков; для часовых записей увеличьте.
- Ограничение размера. Файлы больше 25 МБ нужно сжимать или резать — как и в оригинальном API.
- Повторные попытки. Добавьте один-два ретрая на ошибки 5xx: это стандартная практика для любого внешнего сервиса.
- Хранение расшифровок. Уточните политику: здесь записи и тексты удаляются автоматически через сутки.
Когда миграция оправдана
Смена провайдера имеет смысл, если выполняется хотя бы одно условие:
- объёмы выросли настолько, что оплата за минуты стала заметной статьёй расходов;
- есть требования к тому, где и как долго хранятся записи;
- нужен предсказуемый доступ без региональных ограничений и блокировок карт;
- нужна поддержка форматов и параметров, которых нет у текущего поставщика.
Если ничего из перечисленного не актуально, работающую интеграцию трогать незачем — совместимость всё равно позволит переехать позже за один вечер.
Попробуйте на своих записях. Регистрация занимает минуту, бесплатных минут хватает, чтобы оценить качество.
Получить ключ бесплатноЧастые вопросы
Придётся ли переписывать код при переходе?
Нет, если вы используете официальный openai-sdk: меняются только базовый адрес и ключ. Вызовы, параметры и разбор ответа остаются прежними.
Работают ли форматы srt и vtt?
Да, поддерживаются все привычные значения response_format: json, text, verbose_json, srt и vtt.
Что с обработкой ошибок в SDK?
Ошибки возвращаются в том же формате, что у OpenAI, поэтому SDK превращает их в типизированные исключения — существующие обработчики продолжат работать.
Можно ли работать с двумя сервисами одновременно?
Да. Создайте два клиента с разными base_url и направьте на новый сервис часть трафика — это удобный способ сравнить качество на реальных данных.
Нужно ли менять значение model?
Нет. Привычное значение принимается для совместимости, сервис использует собственную модель распознавания.
Читайте также
- Как расшифровать запись звонка в текст — Пошаговое руководство: как перевести аудиозапись телефонного разговора в текст через API за несколько минут. Примеры кода на Python и C#, разбор ошибок.
- Автоматические субтитры SRT и VTT из видео и вебинаров — Как получить готовые субтитры с таймкодами из записи вебинара или ролика: извлечение звука, форматы SRT и VTT, примеры кода и разбор частых проблем.