NL ▾
stableaudio.top

Ongecensureerde tekst-API voor je audiopipeline

API-sleutel aanvragen

Tekst-naar-audio LLM: wat het wel en niet kan

Een tekst-naar-audio LLM bestaat meestal uit twee gereedschappen die samenwerken: een taalmodel dat de prompt schrijft, en een audiomodel dat het omzet in geluid. Deze API dekt de eerste helft.

Isometrische illustratie van tekstpanelen die omgezet worden in geluidsgolven, met een LLM die prompts schrijft voor audiogereedschap

Bijgewerkt

Belangrijkste punten

  1. Deze service is alleen tekst en genereert geen audio, beelden of video.

  2. De taak binnen een audioworkflow is het schrijven van prompts, teksten, scriptscènes en metadata.

  3. Het koppelen aan een audiogereedschap vereist een kort script en JSON-output.

  4. 1.000 prompts van ongeveer 600 tokens in en 300 tokens uit kosten ongeveer $0,24.

Kort antwoord: een LLM schrijft de instructies, niet het geluid

Wanneer mensen zoeken naar een tekst-naar-audio LLM, zien ze vaak één model voor zich dat een zin leest en een geluidsbestand teruggeeft. Grote taalmodellen doen dat niet. Ze lezen en schrijven tekst. Geluid komt van een apart model dat voor audio is gebouwd, en dat een tekstbeschrijving als invoer neemt.

Die verdeling is handig, want de kwaliteit van de beschrijving doet er echt toe. Een vaag verzoek zoals "ontspannende muziek" geeft een audiogereedschap weinig te doen. Een specifiek verzoek dat genre, tempo, instrumenten, sfeer, structuur en lengte noemt, geeft veel meer. Het schrijven van die specifieke beschrijvingen in grote hoeveelheden, in een consistente indeling, is een goede taak voor een taalmodel.

Deze site biedt precies dat deel: een OpenAI-compatibele tekst-API. Het heeft geen audiogeneratie, geen embeddings en geen fine-tuning. Als je het geluid zelf nodig hebt, combineer je het met een tool die geluid maakt en gebruik je dit endpoint als de schrijfstap ervoor. We zijn niet gelieerd aan een audioleverancier, dus raadpleeg de documentatie van elke tool voor de invoerregels.

Waar een tekstmodel helpt in een audiopijplijn

De taken die passen zijn die waarbij de uitvoer woorden zijn:

  • Prompt-schrijven. Zet een ruw idee om in een gedetailleerde beschrijving met genre, tempo, instrumentatie en stemming.
  • Teksten en scripts. Strofen en een refrein voor een nummer, of een voice-over script voor een podcastintro of een luisterboekhoofdstuk.
  • Variaties. Tien alternatieve prompts vanuit één concept, zodat je verschillende richtingen kunt uitproberen.
  • Metadata. Titels, beschrijvingen, tags en tracknotities zodra de audio bestaat.
  • Herziening. Een prompt herschrijven nadat een resultaat de maat miste, gebruikmakend van je notities over wat er misging.

Het model hier is afgestemd om te antwoorden zonder inhoudelijke weigeringen voor wettelijk volwassen gebruik, wat belangrijk is voor fictie-rijke audio zoals donker verhaalvertellen, horror-drama's of volwassen spel-dialogen, waar een strikter model een volkomen redelijk verzoek kan weigeren. De ene harde lijn is dat niets wat minderjarigen in een seksuele context betreft is toegestaan, en de sleutels zijn daar niet voor.

Onze videoprompt-pagina behandelt hetzelfde idee voor videogereedschap; het patroon van eerst een gestructureerde beschrijving schrijven en die dan aan een generator overdragen, geldt voor alle media.

Een werkvoorbeeld: één idee erin, één gestructureerde prompt eruit

De meest betrouwbare manier om een downstream-tool te voeden is gestructureerde output. JSON-modus (response_format: {"type":"json_object"}) zorgt ervoor dat het model een JSON-object retourneert, zodat je script benoemde velden kan lezen in plaats van alinea's te parseren. Hier is een Python-script dat de OpenAI SDK gebruikt tegen dit endpoint.

import json, os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.stableaudio.top/v1",
    api_key=os.environ["UNCENSORED_API_KEY"],
)

system = (
    "You write prompts for text-to-audio tools. Return a JSON object with keys: "
    "genre, tempo_bpm, instruments (list), mood, structure, duration_seconds, prompt. "
    "The prompt field is one paragraph, no more than 60 words."
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": system},
        {"role": "user", "content": "A tense chase scene in a rain-soaked neon city."},
    ],
    response_format={"type": "json_object"},
    temperature=0.8,
)

spec = json.loads(resp.choices[0].message.content)
print(spec["prompt"])

Houd het woord JSON in je systeembericht en vermeld de sleutels die je wilt. Het model heeft dan een duidelijk doel. Valideer het resultaat voordat je het verder stuurt: controleer of tempo_bpm een nummer is en of instruments een lijst is, en probeer het opnieuw als dat niet zo is.

Hetzelfde verzoek in curl, handig voor een snelle check, ziet er zo uit:

curl https://api.stableaudio.top/v1/chat/completions \
  -H "Authorization: Bearer $UNCENSORED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "uncensored",
    "response_format": {"type": "json_object"},
    "messages": [
      {"role": "system", "content": "Return JSON with keys mood and prompt for a text-to-audio tool."},
      {"role": "user", "content": "A quiet morning in a mountain village."}
    ]
  }'

Prompts schrijven die het audiomodel kan gebruiken

Een taalmodel schrijft elke vorm van prompt die je vraagt, dus het echte werk is het bepalen van de vorm. Een paar regels houden stand bij de meeste audiogereedschappen.

Zeg wat het gereedschap wil, in de volgorde die het wil

Lees de documentatie van het audiogereedschap en kopier de vocabulaire. Als het reageert op haakjes-sectietags of een stijlregel van komma-gescheiden beschrijvers, zet dan een voorbeeld van dat exacte formaat in je systeembericht. Modellen imiteren voorbeelden nauwkeurig.

Geef concrete zelfstandige naamwoorden

"Sparse piano, brushed drums, upright bass, vinyl crackle" is beter dan "nice jazzy feel". Vertel het model om instrumenten, temporebereik en textuur te benoemen, en vulselbijvoeglijke naamwoorden te vermijden.

Stel lengtelimieten in de instructie in

Veel audiogereedschappen beperken de promptlengte. Zet de limiet in het systeembericht ("niet meer dan 60 woorden") en dwing het ook af in code. Modellen drijven af op woordtellingen, dus truncate of probeer opnieuw als de check faalt.

Houd een feedbacklus aan

Nadat je een resultaat hebt gehoord, geef je notitie terug: "Te druk in de tweede helft, drums te hard, houd de toon." Een tweede aanroep kan de eerdere prompt herzien met die notitie in context. Het contextvenster van 100.000 tokens betekent dat je een lange geschiedenis van pogingen kunt meenemen als je wilt dat het model leert wat je blijft afwijzen.

Het model koppelen aan een audiogenerator

De lijmcode is kort. Genereer de specificatie, valideer hem, en geef het prompt veld dan door aan welke audioservice je ook gebruikt. De audiocall wordt als een placeholder weergegeven omdat de interface van elke leverancier verschilt; neem de parameters uit hun documentatie.

def make_spec(idea: str) -> dict:
    r = client.chat.completions.create(
        model="uncensored",
        messages=[
            {"role": "system", "content": system},
            {"role": "user", "content": idea},
        ],
        response_format={"type": "json_object"},
    )
    return json.loads(r.choices[0].message.content)

ideas = ["Lo-fi study beat", "Epic orchestral trailer hit", "Haunted music box"]
for idea in ideas:
    spec = make_spec(idea)
    # send spec["prompt"] to your audio generator here
    print(idea, "->", spec["prompt"][:80])

Als je dit parallel over een lijst uitvoert, houd dan rekening met de limieten. Een volledige sleutel staat 8 gelijktijdige verzoeken en 300 per minuut toe; de proefsleutel staat 2 en 60 toe. Een 429 met concurrency betekent te veel in één keer, rate_limited betekent te veel per minuut, en een Retry-After: 5 header betekent vijf seconden wachten en het opnieuw proberen. Een kleine thread pool die is afgestemd op je limiet, plus een retry, is genoeg.

De API-documentatie somt de ondersteunde parameters op, waaronder temperature, top_p, stop en seed. Een vaste seed helpt wanneer je herhaalbare prompts wilt terwijl je het systeembericht afstelt.

Teksten, voice-over en metadata op schaal

Prompts zijn slechts één soort tekst die een audioproject nodig heeft. Zodra de pijplijn draait, kan hetzelfde endpoint de andere stukken eromheen schrijven, en kun je het client-object uit het eerdere script hergebruiken.

Voice-over scripts

Voor gesproken audio, vraag om een script met regie-aanwijzingen in een vaste notatie, zoals een pauzemarker tussen alinea's en een notitie wanneer de spreker langzamer moet praten. Vertel het model de doel-leestijd. Een veelgebruikte vuistregel is dat een voice-over-artiest ongeveer 150 woorden per minuut leest, dus een stuk van twee minuten heeft ongeveer 300 woorden nodig; vraag dat cijfer en tel daarna de woorden in code.

Teksten met een vaste structuur

Vraag om benoemde secties, een rijmschema en een syllabebereik per regel. Een model volgt "vier regels, ABAB, acht tot tien syllaben elk" veel beter dan "een mooi rijmend vers". Voer een check uit in code daarna en vraag om een herschrijving van alleen de sectie die faalde.

Titels, tags en beschrijvingen

Nadat de audio bestaat, stuur de definitieve prompt en teksten terug naar het model en vraag om drie titelopties, vijf tags en een tweezinige beschrijving. Dit is goedkoop, repetitief werk dat goed past bij een tekstmodel.

Verhalen en games

Fictie-audio, zoals een horrorserie, een interactief verhaal of de dialogen voor een game, bevat vaak donkere of volwassen thema's. Het model is afgestemd om zonder inhoudelijke weigeringen te antwoorden voor wettelijk volwassen gebruik, zodat een verzoek dat binnen het genre past niet wordt beantwoord met een moraliserend betoog. De regel tegen seksuele inhoud met minderjarigen blijft absoluut.

Als je lange scripts naar een scherm streamt, stel je stream: true in en lees de chunks zodra ze binnenkomen; het verbruik wordt aan het einde van de stream gerapporteerd.

Wat het kost om duizend prompts te schrijven

Tekst is goedkoop in vergelijking met de audiostap. Het tarief is $0,15 per 1M input tokens en $0,50 per 1M output tokens, gefactureerd van prepaid tegoed zonder abonnement.

Stel dat elk verzoek ongeveer 600 tokens verstuurt (systeembericht plus idee) en ongeveer 300 tokens aan JSON terugkrijgt. Voor 1.000 verzoeken:

  • Input: 600.000 tokens x $0,15 / 1M = $0,09
  • Output: 300.000 tokens x $0,50 / 1M = $0,15
  • Totaal: $0,24

Dus een duizend voltooide prompts kosten ongeveer vierentwintig cent, en verzoeken die falen of worden geweigerd, worden niet in rekening gebracht. Een nieuw account kan met één klik op de sleutelpagina $0,50 aan proeftegoed claimen, zonder creditcard, geldig voor 7 dagen, wat ongeveer twee duizend prompts is bij de bovenstaande grootte. Daarna beginnen opwaarderingen bij $20; zie prijzen voor de bonusniveaus en betaalopties. Prompts worden niet gebruikt voor training.

Vragen en antwoorden

Kan een tekst-LLM audio genereren?

Nee. Een taalmodel produceert tekst. Audio komt van een apart audio model, en de rol van de LLM is het schrijven van de prompt, de tekst of het script dat dat model nodig heeft.

Genereert deze API muziek of spraak?

Nee. Het is alleen tekst, zonder audio-, beeld- of videogeneratie. Het is bedoeld als de schrijfstap voorafgaand aan een audiogereedschap.

Hoe krijg ik gestructureerde prompts die ik aan een script kan voeren?

Gebruik JSON-modus met response_format ingesteld op json_object, noem de sleutels in je systeembericht en valideer het verwerkte resultaat in code.

Wat kost het om veel prompts te genereren?

Bij $0,15 per 1M input tokens en $0,50 per 1M output tokens kosten 1.000 prompts van ongeveer 600 tokens input en 300 output ongeveer $0,24.

Is er een gratis manier om het te proberen?

Nieuwe gebruikers kunnen met één klik na het inloggen $0,50 aan proeftegoed claimen. Er is geen creditcard nodig en het is 7 dagen geldig.

Je sleutel is nog maar één formulier verwijderd

Maak een account aan, kopieer de sleutel, pas de base URL aan. Dat is de hele setup.

API-sleutel aanvragen