feat(costs): Filler-Übersetzung + OpenRouter-TTS kostenerfasst
- fillers.py translate_pool: usage:{include:true} + Ist-Kosten (Kategorie llm).
- OpenRouter-TTS: geschaetzte Kosten (Zeichen × openrouter_tts_usd_per_char,
Kategorie tts) — der Audio-Endpunkt liefert keine inline-usage. Preis (Default
~$15/1M Zeichen) live-setzbar; an Modellpreis anpassbar.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
77f0ec90b5
commit
a1e49dde11
5 changed files with 23 additions and 2 deletions
|
|
@ -2,6 +2,7 @@ import asyncio
|
|||
|
||||
import httpx
|
||||
|
||||
from app.core.costs import add_cost, openrouter_tts_usd
|
||||
from app.providers.tts.base import TTSProvider
|
||||
|
||||
# Preview-TTS-Modelle liefern gelegentlich HTTP 200 mit LEEREM Body oder ein
|
||||
|
|
@ -70,6 +71,9 @@ class OpenRouterTTSProvider(TTSProvider):
|
|||
raise RuntimeError(f"OpenRouter TTS transport error: {exc}") from exc
|
||||
else:
|
||||
if response.content:
|
||||
# Geschätzte TTS-Kosten (Zeichen × Preis); Audio-Endpunkt
|
||||
# liefert keine inline-usage.
|
||||
add_cost(openrouter_tts_usd(len(text.strip())), "tts")
|
||||
return response.content
|
||||
# HTTP 200 mit leerem Body -> transienter Aussetzer, erneut versuchen.
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue