Когда команда из Китая вызывает 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
Процесс можно зафиксировать так:
- Привести всё к 16 кГц моно, чтобы уменьшить объём и различия форматов.
- Резать на фрагменты по 5–10 минут, по возможности по паузам.
- По очереди вызывать транскрибацию, передавая язык и короткий контекст.
- Собирать текст и добавлять к тайм-кодам смещение по номеру фрагмента.
- Проверять стыки на повторы и пропуски; при необходимости выравнивать по перекрытию.
С тайм-кодами будьте внимательны: к тайм-кодам каждого фрагмента нужно прибавить «номер фрагмента × длительность фрагмента», иначе после сборки всё вернётся к началу. Если используются тайм-коды на уровне слов, отдельно обработайте слова, разрезанные на границе фрагментов.
4. Тайм-ауты и повторы
Транскрибация длинного аудио — не мгновенный запрос. Клиентский тайм-аут чтения, тайм-аут простоя обратного прокси, тайм-аут upstream на шлюзе — любой слишком короткий лимит приведёт к сбою. Сначала выставьте тайм-ауты по худшему сценарию, затем ограничьте параллелизм очередью.
| Сбой | Типичное проявление | Что делать |
|---|---|---|
| 429, лимит запросов | Массовые сбои в пиковые часы | Экспоненциальная задержка со случайным разбросом, снизить параллелизм |
| 5xx или ошибка шлюза | Периодические сбои | Ограниченное число повторов, переключение на резервный канал |
| Тайм-аут чтения | Длинное аудио обрывается на середине | Увеличить тайм-аут, перейти на отправку фрагментами |
| 413, слишком большой запрос | Сбой сразу при загрузке | Сжать или нарезать, проверить лимит прокси |
| 401/403 | Ключ недействителен или нет прав | Остановить повторы, проверить ключ и квоту |
| 400, ошибка параметров | Формат, язык или поле не поддерживаются | Исправить запрос, не повторять вслепую |
Повторы имеют смысл только при лимитах, тайм-аутах и 5xx. Повторять 4xx из-за ошибки параметров — только тратить квоту. Каждый повтор фиксируйте с request ID, чтобы один и тот же фрагмент не был списан дважды; пакетные задачи лучше ставить в очередь, а неудачные фрагменты — в очередь для ручной проверки.
5. Прозрачность биллинга
Транскрибация часто тарифицируется по длительности аудио, но встречается и расчёт по токенам. При сверке счёта смотрите: округляются ли минуты вверх, есть ли минимальная длительность, платные ли неудачные запросы, не списываются ли повторы дважды, есть ли минимальный расход.
Простой подход: считайте суммарные минуты отправленного аудио локально и сверяйте с минутами в счёте; разберите один день по запросам; для сбоев и повторов заведите отдельные метки. Если расхождение устойчиво превышает несколько процентов, запросите у поставщика детализацию. Конкретные цены и тарифные ступени — на странице тарифов; цены меняются, не планируйте бюджет по старым скриншотам.
6. Ключи и риски для данных
Релей видит ваше аудио и текст транскрибации. При выборе уточните: сохраняются ли запросы и ответы на диск, как долго, используются ли для обучения, кто субподрядчики, в каком регионе хранятся данные, как работает удаление.
В инженерии как минимум: отдельный ключ на проект, лимит квоты, регулярная ротация, ключ не во фронтенде, в журналах — без полного текста транскрибации. Если речь о записях клиентов, медицине, финансах и других чувствительных материалах, выбирайте поставщика, готового подписать соглашение об обработке данных, или переходите на self-hosted транскрибацию.
7. Как проверить релей
- Прогоните аудио с известным текстом и сверьте результат и долю ошибок.
- Проверьте поля ответа: имя модели, язык, длительность, сегменты.
- Загрузите файл близко к лимиту и убедитесь, что его не обрезают молча.
- Смоделируйте длинное аудио и посмотрите, понятны ли настройки тайм-аута и сообщения о сбое.
- Вызовите лимит или неверный параметр и проверьте, прозрачны ли коды ошибок и нет ли лишних списаний.
- Несколько дней сверяйте расход и счёт, чтобы убедиться в единой методике.
Не ограничивайтесь короткими роликами. Реальные проблемы чаще проявляются на длинных совещаниях, телефонных записях и в шумной среде.
8. Чек-лист миграции
- Инвентаризируйте интерфейсы, модели, форматы аудио, среднюю длительность и пиковый параллелизм.
- Зафиксируйте тестовое аудио и выверенный вручную текст как базу для сравнения до и после.
- Уточните поддерживаемые лимиты загрузки, тайм-ауты, параллелизм и стратегию повторов.
- Вынесите base URL, ключ и тайм-ауты в конфигурацию, уберите хардкод.
- Дополните систему нарезкой, сборкой, смещением тайм-кодов и очередью сбоев.
- Настройте сверку счёта и оповещения о расходе, задайте лимит бюджета.
- Сначала переведите около 10% трафика, наблюдайте за ошибками и P95, затем расширяйте.
- Сохраните старый канал и переключатель отката; отключайте его после подтверждения стабильности.
Командам с уже готовым OpenAI-совместимым кодом обычно достаточно поменять конфигурацию; начать можно с регистрации и проверки на небольшом трафике.
9. Частые вопросы
Чем релей Whisper API отличается от VPN и обратного прокси?
VPN меняет только сетевой путь; обратный прокси пересылает запросы; агрегирующий шлюз дополнительно отвечает за ключи, биллинг, лимиты и повторы. Задачи разные — выбирайте соответствующий слой.
Ограничение 25 МБ задаёт релей?
Не обязательно. У upstream-интерфейса есть собственный лимит на файл, а релей и прокси могут задавать более низкий. Проверяйте каждый уровень, а не только ошибку клиента.
На сколько резать длинное аудио?
Обычно на фрагменты по 5–10 минут, по паузам. Слишком мелкие фрагменты увеличивают число запросов и стоимость, слишком крупные чаще упираются в тайм-аут; ориентируйтесь на замеры.
Повторы приводят к двойному списанию?
Зависит от правил поставщика. Повтор после успешного ответа или тайм-аут, когда upstream уже обработал запрос, могут дать двойное списание. Используйте request ID для дедупликации и сверяйте счёт.
Как понять, что релей подменил модель?
Смотрите на поле модели, язык и структуру сегментов, сравнивайте транскрибацию на фиксированном наборе. Если стиль результата резко изменился или поля пропали, запросите объяснение у поставщика.
Что читать дальше:
