Перейти к содержимому

Квоты voice API (TTS / STT)

Voice-провайдеры тарифицируют по «количеству секунд / символов в месяц». В отличие от LLM, лимиты тут жёсткие — превышение = 403, и пользователь не получает звук. Считаем сами и алёртим заранее:

import os, requests, json, time
S = "/tmp/voice-quota.json"
LIMITS = { # символов / секунд в месяц
"elevenlabs": 100_000,
"deepgram": 45_000,
"whisper": 60_000,
}
def observe(provider: str, units: int):
s = (json.load(open(S)) if os.path.exists(S) else {})
month = time.strftime("%Y-%m")
s.setdefault(month, {}).setdefault(provider, 0)
s[month][provider] += units
json.dump(s, open(S, "w"))
used = s[month][provider]
limit = LIMITS.get(provider, 1)
for thr in (0.7, 0.9, 0.99):
flag = f"/tmp/voice-{provider}-{month}-{int(thr*100)}.flag"
if used / limit >= thr and not os.path.exists(flag):
push(f"🎙️ {provider}: {int(thr*100)}% квоты",
f"{used:,} / {limit:,}",
9 if thr >= 0.9 else 5)
open(flag, "w").close()
def push(t, m, p):
requests.post(f"{os.environ['NOTIFLY_URL']}/message",
params={"token": os.environ["NOTIFLY_TOKEN"]},
json={"title": t, "message": m, "priority": p}, timeout=5)

Параллельно — HTTP-монитор на api.elevenlabs.io/v1/user, чтобы ловить факт quota_exceeded в их собственном ответе.