Westin-AI växte från TTS-endpoint till en riktig produktionsmotor för radioprat.
Westin-AI är min separata tjänst för att producera röstklipp. Kontrollcenter skickar färdigt manus, önskad röstprofil och leveransstil. Westin-AI returnerar en ljudfil som kan gå vidare till Broadcast.
Det enkla API-kontraktet döljer flera funktioner:
- Health: Kontrollcenter kan kontrollera att röstmotorn är redo.
- Warmup: tung modell kan laddas innan ett tidskritiskt segment.
- Style control: samma röstidentitet kan levereras neutral, varm, torr, upbeat, energisk, självsäker eller late-night.
- Formatkontroll: ljudet måste komma tillbaka i ett format som Broadcast kan behandla.
- Timeout: sent tal är i vissa fall lika oanvändbart som misslyckat tal.
- Felisolering: om röstmotorn går ner ska musiken fortsätta.
Jag gjorde också många tester med pauser och prosodi. Om röstmotorn får en textmassa utan tydliga pauser kan den rabbla. Punkt, komma, styckeindelning och kortare segment påverkar mer än man först tror.
Jag separerade dessutom röstens leveransstil från textens innehåll. Det gör att jag kan förbättra style-planeringen utan att röra prompts för Gemma 3.
POST /speak
{
"text": "Alice Deejay, Will I Ever.",
"style": "warm",
"format": "wav"
}Westin-AI måste vara förutsägbart för nästa lager
Broadcast ska inte behöva specialfall för varje röstgeneration. Därför försöker jag få Westin-AI att lämna ett konsekvent outputformat och tydliga fel. Ett timeout-fel är något annat än “motorn är nere” och något annat än “filen blev genererad men kunde inte valideras”.
Ju bättre de felen är klassificerade, desto bättre fallback kan Kontrollcenter välja.
Jag började se Westin-AI som en realtidstjänst, inte ett renderverktyg
En vanlig renderuppgift får gärna bli klar “sen”. Radio har ofta en deadline. Om en stationsident som skulle ligga mellan två specifika låtar blir färdig efter att seam redan passerat måste systemet kunna avgöra om den fortfarande är relevant.
Det innebär att Westin-AI inte bara behöver vara snabbt. Kontrollcenter behöver veta ungefär vad det kan förvänta sig. Warmupstatus, queue och timeout blir därför en del av den redaktionella logiken.
Jag vill på sikt kunna modellera uppskattad produktionstid per typ. Ett kort ident kanske kan produceras sent. Ett långt showintro behöver startas tidigare. När den informationen finns kan Show Engine planera bakåt på riktigt.