LLM de texte vers audio : ce qu’il peut et ne peut pas faire
Un LLM texte vers audio est généralement composé de deux outils travaillant ensemble : un modèle de langage qui rédige le prompt, et un modèle audio qui le transforme en son. Cette API couvre la première partie.

Mis à jour le
Points clés
Ce service est textuel uniquement et ne génère pas d’audio, d’images ou de vidéo.
Son rôle dans un workflow audio est de rédiger des prompts, des paroles, des scripts de scènes et des métadonnées.
Le chaînage à un outil audio nécessite un court script et une sortie JSON.
1 000 prompts d'environ 600 tokens en entrée et 300 en sortie coûtent environ $0.24.
Réponse courte : un LLM rédige les instructions, pas le son
Lorsque les gens recherchent un LLM de texte vers audio, ils imaginent souvent un seul modèle qui lit une phrase et retourne un fichier audio. Les grands modèles de langage ne font pas cela. Ils lisent et écrivent du texte. Le son provient d’un modèle distinct conçu pour l’audio, qui prend une description textuelle en entrée.
Cette séparation est utile, car la qualité de la description est cruciale. Une demande vague comme « musique relaxante » laisse peu de matière à un modèle audio. Une demande précise qui nomme le genre, le tempo, les instruments, l’ambiance, la structure et la durée lui fournit beaucoup plus d’éléments. Rédiger cette description précise à grande échelle, dans un format cohérent, est une tâche idéale pour un modèle de langage.
Ce site propose exactement cette moitié : une API texte compatible OpenAI. Elle ne génère pas d’audio, ne propose pas d’embeddings ni de fine-tuning. Si vous avez besoin du son lui-même, associez-y un outil qui en produit et utilisez cet endpoint comme étape de rédaction en amont. Nous ne sommes affiliés à aucun fournisseur audio ; consultez la documentation de chaque outil pour ses règles d’entrée.
Où un modèle texte aide dans un pipeline audio
Les tâches adaptées sont celles où la sortie est du texte :
- Rédaction de prompts. Transformez une idée brute en description détaillée avec genre, tempo, instrumentation et ambiance.
- Paroles et scripts. Des couplets et un refrain pour une chanson, ou un script de narration pour l’introduction d’un podcast ou un chapitre d’audiolivre.
- Variations. Dix prompts alternatifs à partir d’un concept, pour tester plusieurs directions.
- Métadonnées. Titres, descriptions, tags et notes de piste une fois l’audio créé.
- Révision. Réécriture d'un prompt après qu'un résultat ait manqué sa cible, en utilisant vos notes sur ce qui s'est mal passé.
Le modèle est ajusté pour répondre sans refus de contenu pour un usage adulte légal, ce qui compte pour l’audio à forte charge narrative comme le storytelling sombre, les drames d’horreur ou les dialogues de jeux pour adultes, où un modèle plus strict pourrait refuser une demande parfaitement raisonnable. La seule limite stricte est l’interdiction de tout contenu impliquant des mineurs dans un contexte sexuel, et les clés ne sont pas destinées à cela.
Notre page dédiée aux prompts vidéo couvre la même idée pour les outils vidéo ; le schéma de rédaction d’une description structurée en premier lieu et sa transmission à un générateur en second s’applique à tous les médias.
Exemple concret : une idée en entrée, un prompt structuré en sortie
La méthode la plus fiable pour alimenter un outil en aval est la sortie structurée. Le mode JSON (response_format: {"type":"json_object"}) fait retourner au modèle un objet JSON, afin que votre script puisse lire des champs nommés au lieu d’analyser des paragraphes. Voici un script Python utilisant le SDK OpenAI via cet 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"])
Conservez le mot JSON dans votre message système et listez les clés souhaitées. Le modèle a alors une cible claire. Validez le résultat avant de le transmettre : vérifiez que tempo_bpm est un nombre et que instruments est une liste, et réessayez une fois si ce n’est pas le cas.
La même requête en curl, pratique pour un test rapide, ressemble à ceci :
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."}
]
}'Rédiger des prompts exploitables par le modèle audio
Un modèle de langage rédigera toute forme de prompt que vous lui demanderez, le vrai travail consiste donc à définir la forme. Quelques règles s’appliquent à la plupart des outils audio.
Dites ce que l’outil attend, dans l’ordre attendu
Lisez la documentation de l’outil audio et copiez son vocabulaire. S’il répond à des balises de sections entre crochets ou à une ligne de style avec des descripteurs séparés par des virgules, incluez un exemple de ce format exact dans votre message système. Les modèles imitent étroitement les exemples.
Donnez des noms concrets
"Piano épuré, batterie brossée, contrebasse acoustique, crépitement vinyle" vaut mieux que « ambiance jazz agréable ». Dites au modèle de nommer les instruments, la plage de tempo et la texture, et d’éviter les adjectifs superflus.
Définissez des limites de longueur dans l’instruction
De nombreux outils audio limitent la longueur du prompt. Indiquez cette limite dans le message système (« pas plus de 60 mots ») et appliquez-la également dans le code. Les modèles dérivent sur les nombres de mots, donc tronquez ou relancez lorsque la vérification échoue.
Conservez une boucle de rétroaction
Après avoir entendu un résultat, renvoyez votre note : « Trop chargé dans la seconde moitié, tambours trop forts, gardez la tonalité. » Un deuxième appel peut réviser le prompt précédent avec cette note en contexte. La fenêtre de 100 000 tokens permet de conserver un long historique de tentatives si vous souhaitez que le modèle apprenne ce que vous continuez à rejeter.
Chainer le modèle à un générateur audio
Le code de liaison est court. Générez la spécification, validez-la, puis transmettez le champ prompt au service audio que vous utilisez. L’appel audio est présenté comme un espace réservé car l’interface de chaque fournisseur diffère ; prenez ses paramètres dans leur documentation.
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])
Si vous traitez cette liste en parallèle, respectez les limites. Une clé complète permet 8 requêtes simultanées et 300 par minute ; la clé d'essai en permet 2 et 60. Une erreur 429 avec concurrency signifie trop de requêtes à la fois, rate_limited signifie trop de requêtes par minute, et un en-tête Retry-After: 5 signifie attendre cinq secondes et réessayer. Un pool de threads de petite taille adapté à votre limite, associé à un réessai, suffit.
La documentation API liste les paramètres pris en charge, y compris temperature, top_p, stop et seed. Un seed fixe aide lorsque vous souhaitez des prompts reproductibles pendant le réglage du message système.
Paroles, narration et métadonnées à grande échelle
Les prompts ne sont qu’un type de texte dont un projet audio a besoin. Une fois le pipeline en marche, le même endpoint peut rédiger les autres éléments autour, et vous pouvez réutiliser l’objet client du script précédent.
Scripts de narration
Pour l’audio parlé, demandez un script avec des indications scéniques dans une notation fixe, comme un marqueur de pause entre les paragraphes et une note quand l’orateur doit ralentir. Indiquez au modèle le temps de lecture cible. Une règle courante est qu’un narrateur lit environ 150 mots par minute, donc un morceau de deux minutes nécessite environ 300 mots ; demandez ce chiffre puis comptez les mots dans le code.
Paroles avec une structure fixe
Demandez des sections nommées, une structure de rimes et une plage de syllabes par ligne. Un modèle suit « quatre lignes, ABAB, huit à dix syllabes chacune » bien mieux que « un beau vers rimé ». Exécutez une vérification dans le code ensuite et demandez une réécriture uniquement de la section qui a échoué.
Titres, tags et descriptions
Une fois l'audio généré, renvoyez le prompt final et les paroles au modèle et demandez trois options de titre, cinq tags et une description en deux phrases. C'est un travail répétitif et peu coûteux qui convient bien à un modèle textuel.
Histoires et jeux
Les fictions audio, telles qu'une série d'horreur, une histoire interactive ou les dialogues d'un jeu, comportent souvent des thèmes sombres ou destinés aux adultes. Le modèle est ajusté pour répondre sans refus de contenu pour une utilisation légale par les adultes, de sorte qu'une requête conforme au genre ne soit pas suivie d'un cours magistral. La règle interdisant le contenu sexuel impliquant des mineurs reste absolue.
Si vous diffusez de longs scripts vers un écran, définissez stream: true et lisez les blocs à mesure qu'ils arrivent ; l'utilisation est rapportée à la fin du flux.
Ce que coûte l'écriture de mille prompts
Le texte est bon marché par rapport à l'étape audio. Le tarif est de 0,15 $ par 1M de tokens d'entrée et de 0,50 $ par 1M de tokens de sortie, facturé à partir du crédit prépayé sans abonnement.
Supposons que chaque requête envoie environ 600 tokens (message système plus idée) et reçoive environ 300 tokens de JSON. Pour 1 000 requêtes :
- Entrée : 600 000 tokens x 0,15 $ / 1M = 0,09 $
- Sortie : 300 000 tokens x 0,50 $ / 1M = 0,15 $
- Total : 0,24 $
Ainsi, mille prompts terminés coûtent environ vingt-quatre centimes, et les requêtes qui échouent ou sont refusées ne sont pas facturées. Un nouveau compte peut obtenir 0,50 $ de crédit d'essai gratuit en un clic sur la page de la clé, sans carte, valable 7 jours, ce qui représente environ deux mille prompts à la taille ci-dessus. Ensuite, les recharges démarrent à 20 $ ; consultez tarifs pour les paliers de bonus et les options de paiement. Les prompts ne sont pas utilisés pour l'entraînement.
Plus de guides
Questions et réponses
Un modèle LLM textuel peut-il générer de l'audio ?
Non. Un modèle de langage produit du texte. L'audio provient d'un modèle audio distinct, et le rôle du LLM est d'écrire le prompt, les paroles ou le script dont ce modèle a besoin.
Cette API génère-t-elle de la musique ou de la parole ?
Non. Elle est textuelle uniquement, sans génération audio, image ou vidéo. Elle est conçue comme l'étape d'écriture en amont d'un outil audio.
Comment obtenir des prompts structurés que je puisse alimenter dans un script ?
Utilisez le mode JSON avec response_format défini sur json_object, nommez les clés dans votre message système, et validez le résultat analysé dans votre code.
Combien coûte la génération de nombreux prompts ?
À $0,15 par 1M de tokens d'entrée et $0,50 par 1M de tokens de sortie, 1 000 prompts d'environ 600 tokens en entrée et 300 en sortie coûtent environ $0,24.
Existe-t-il un moyen gratuit de l'essayer ?
Les nouveaux utilisateurs peuvent réclamer $0,50 de crédit d'essai en un clic après l'inscription. Aucune carte n'est nécessaire et il est valable 7 jours.
Votre clé est à un formulaire de vous
Créez un compte, copiez la clé, modifiez l'URL de base. C'est toute la configuration.