Когда команда из Китая вызывает Whisper API, проблема обычно не в модели, а в канале: нестабильная трансграничная сеть, медленная загрузка, тайм-ауты на длинных аудио, ограничения на размер файла, общий ключ на несколько проектов, по которому невозможно сверить расходы. Релей и прокси как раз собирают эти сложности в один слой доступа.

Но релей — это не просто «другой адрес». Аудио относится к чувствительным данным, а транскрибация — длинный запрос. При выборе нужно смотреть на лимиты загрузки, тайм-ауты, повторы, биллинг и управление ключами. Ниже разбираем эти пункты и даём практический чек-лист проверки и миграции.

Примечание: OpenAI и Whisper — товарные знаки соответствующих правообладателей. Статья носит технический характер и не подразумевает аффилированность или агентские отношения с этими компаниями. Ограничения интерфейса, коды ошибок и правила тарификации могут меняться; ориентируйтесь на официальную документацию и материалы на сайте.

1. Что именно передаёт релей

Голосовой релей обычно делает четыре вещи: пересылает запрос в upstream, подставляет или хранит upstream-ключ, фиксирует расход и журналы, а при сбое повторяет запрос или переключает канал. Для бизнеса всё остаётся тем же: вы отправляете multipart-запрос на /v1/audio/transcriptions, меняются только base URL и ключ.

Распространены три формы:

  • Собственный обратный прокси: решает только сеть и выход, ключи и данные остаются под вашим контролем, но стабильность зависит от вашей инфраструктуры.
  • Агрегирующий шлюз: объединяет несколько upstream, даёт квоты, журналы, лимиты и резервные каналы; подходит командам с несколькими проектами.
  • Перепродажа или пополнение через посредника: запросы отправляются с чужого аккаунта; цены и условия сильно различаются, отдельно смотрите на данные и комплаенс.

Границы ответственности у этих схем разные. За собственный прокси отвечаете вы; у агрегирующего шлюза смотрите SLA и порядок уведомления о сбоях; при перепродаже проверьте, допускают ли условия upstream такое использование.

2. Лимиты загрузки: три уровня

У интерфейса Whisper есть ограничение на размер одного файла; в официальной документации сейчас указано 25 МБ, единого ограничения по длительности нет. Сколько реально можно передать, зависит от кодека:

  • WAV 16 кГц, моно, 16 бит — около 1,9 МБ в минуту, то есть 25 МБ хватает примерно на десять с лишним минут.
  • MP3 32 кбит/с, моно — около 240 КБ в минуту, 25 МБ может вместить более часа.
  • Релей, обратный прокси и serverless-платформы могут задавать меньший лимит на тело запроса.

Поэтому при ошибке 413 или сбое загрузки проверяйте сразу три уровня: upstream, шлюз и клиент. Сжатие обычно проще нарезки: для речи не нужна высокая частота дискретизации, достаточно 16 кГц моно, а MP3 или Opus заметно уменьшают объём.

3. Нарезка, транскрибация и сборка

Аудио сверх лимита нужно нарезать. Желательно резать по паузам, чтобы не разрывать фразу; если это невозможно, подойдёт фиксированная длительность, но оставьте небольшое перекрытие.

ffmpeg -i input.wav -ar 16000 -ac 1 -c:a libmp3lame -b:a 32k \
  -f segment -segment_time 600 -reset_timestamps 1 chunk_%03d.mp3

Процесс можно зафиксировать так:

  1. Привести всё к 16 кГц моно, чтобы уменьшить объём и различия форматов.
  2. Резать на фрагменты по 5–10 минут, по возможности по паузам.
  3. По очереди вызывать транскрибацию, передавая язык и короткий контекст.
  4. Собирать текст и добавлять к тайм-кодам смещение по номеру фрагмента.
  5. Проверять стыки на повторы и пропуски; при необходимости выравнивать по перекрытию.

С тайм-кодами будьте внимательны: к тайм-кодам каждого фрагмента нужно прибавить «номер фрагмента × длительность фрагмента», иначе после сборки всё вернётся к началу. Если используются тайм-коды на уровне слов, отдельно обработайте слова, разрезанные на границе фрагментов.

4. Тайм-ауты и повторы

Транскрибация длинного аудио — не мгновенный запрос. Клиентский тайм-аут чтения, тайм-аут простоя обратного прокси, тайм-аут upstream на шлюзе — любой слишком короткий лимит приведёт к сбою. Сначала выставьте тайм-ауты по худшему сценарию, затем ограничьте параллелизм очередью.

Сбой Типичное проявление Что делать
429, лимит запросов Массовые сбои в пиковые часы Экспоненциальная задержка со случайным разбросом, снизить параллелизм
5xx или ошибка шлюза Периодические сбои Ограниченное число повторов, переключение на резервный канал
Тайм-аут чтения Длинное аудио обрывается на середине Увеличить тайм-аут, перейти на отправку фрагментами
413, слишком большой запрос Сбой сразу при загрузке Сжать или нарезать, проверить лимит прокси
401/403 Ключ недействителен или нет прав Остановить повторы, проверить ключ и квоту
400, ошибка параметров Формат, язык или поле не поддерживаются Исправить запрос, не повторять вслепую

Повторы имеют смысл только при лимитах, тайм-аутах и 5xx. Повторять 4xx из-за ошибки параметров — только тратить квоту. Каждый повтор фиксируйте с request ID, чтобы один и тот же фрагмент не был списан дважды; пакетные задачи лучше ставить в очередь, а неудачные фрагменты — в очередь для ручной проверки.

5. Прозрачность биллинга

Транскрибация часто тарифицируется по длительности аудио, но встречается и расчёт по токенам. При сверке счёта смотрите: округляются ли минуты вверх, есть ли минимальная длительность, платные ли неудачные запросы, не списываются ли повторы дважды, есть ли минимальный расход.

Простой подход: считайте суммарные минуты отправленного аудио локально и сверяйте с минутами в счёте; разберите один день по запросам; для сбоев и повторов заведите отдельные метки. Если расхождение устойчиво превышает несколько процентов, запросите у поставщика детализацию. Конкретные цены и тарифные ступени — на странице тарифов; цены меняются, не планируйте бюджет по старым скриншотам.

6. Ключи и риски для данных

Релей видит ваше аудио и текст транскрибации. При выборе уточните: сохраняются ли запросы и ответы на диск, как долго, используются ли для обучения, кто субподрядчики, в каком регионе хранятся данные, как работает удаление.

В инженерии как минимум: отдельный ключ на проект, лимит квоты, регулярная ротация, ключ не во фронтенде, в журналах — без полного текста транскрибации. Если речь о записях клиентов, медицине, финансах и других чувствительных материалах, выбирайте поставщика, готового подписать соглашение об обработке данных, или переходите на self-hosted транскрибацию.

7. Как проверить релей

  • Прогоните аудио с известным текстом и сверьте результат и долю ошибок.
  • Проверьте поля ответа: имя модели, язык, длительность, сегменты.
  • Загрузите файл близко к лимиту и убедитесь, что его не обрезают молча.
  • Смоделируйте длинное аудио и посмотрите, понятны ли настройки тайм-аута и сообщения о сбое.
  • Вызовите лимит или неверный параметр и проверьте, прозрачны ли коды ошибок и нет ли лишних списаний.
  • Несколько дней сверяйте расход и счёт, чтобы убедиться в единой методике.

Не ограничивайтесь короткими роликами. Реальные проблемы чаще проявляются на длинных совещаниях, телефонных записях и в шумной среде.

8. Чек-лист миграции

  1. Инвентаризируйте интерфейсы, модели, форматы аудио, среднюю длительность и пиковый параллелизм.
  2. Зафиксируйте тестовое аудио и выверенный вручную текст как базу для сравнения до и после.
  3. Уточните поддерживаемые лимиты загрузки, тайм-ауты, параллелизм и стратегию повторов.
  4. Вынесите base URL, ключ и тайм-ауты в конфигурацию, уберите хардкод.
  5. Дополните систему нарезкой, сборкой, смещением тайм-кодов и очередью сбоев.
  6. Настройте сверку счёта и оповещения о расходе, задайте лимит бюджета.
  7. Сначала переведите около 10% трафика, наблюдайте за ошибками и P95, затем расширяйте.
  8. Сохраните старый канал и переключатель отката; отключайте его после подтверждения стабильности.

Командам с уже готовым OpenAI-совместимым кодом обычно достаточно поменять конфигурацию; начать можно с регистрации и проверки на небольшом трафике.

9. Частые вопросы

Чем релей Whisper API отличается от VPN и обратного прокси?

VPN меняет только сетевой путь; обратный прокси пересылает запросы; агрегирующий шлюз дополнительно отвечает за ключи, биллинг, лимиты и повторы. Задачи разные — выбирайте соответствующий слой.

Ограничение 25 МБ задаёт релей?

Не обязательно. У upstream-интерфейса есть собственный лимит на файл, а релей и прокси могут задавать более низкий. Проверяйте каждый уровень, а не только ошибку клиента.

На сколько резать длинное аудио?

Обычно на фрагменты по 5–10 минут, по паузам. Слишком мелкие фрагменты увеличивают число запросов и стоимость, слишком крупные чаще упираются в тайм-аут; ориентируйтесь на замеры.

Повторы приводят к двойному списанию?

Зависит от правил поставщика. Повтор после успешного ответа или тайм-аут, когда upstream уже обработал запрос, могут дать двойное списание. Используйте request ID для дедупликации и сверяйте счёт.

Как понять, что релей подменил модель?

Смотрите на поле модели, язык и структуру сегментов, сравнивайте транскрибацию на фиксированном наборе. Если стиль результата резко изменился или поля пропали, запросите объяснение у поставщика.

Что читать дальше: