Pour un chapitre d'audiolibre adulte ou un message vocal de personnage, choisissez Gemini 3.8 Flash TTS pour les indications jouées ou sa couverture linguistique plus large, et Flash-Lite TTS pour la narration simple et finie, les messages courts et les lignes en grand volume. Les deux lisent le vocabulaire adulte explicite tel qu'il est écrit. Flash joue les indications entre crochets comme [whispers] (généralement ; essayez d'abord) et couvre 130 langues contre 101 pour Lite. Lite ne joue pas de façon fiable les indications entre crochets et les lit parfois à voix haute, il lui faut donc des scripts simples. Flash coûte $0.00032 par seconde audio renvoyée et Lite $0.00021. L'écart est de $0.066 par dix minutes d'audio, soit $6.60 sur 1.000 minutes. D'après nos tests de septembre 2026.

Illustration du couple adulte fictif des exemples ; ce n'est pas un résultat audio.
Quel modèle pour quelle tâche
| Flash TTS | Flash-Lite TTS | |
|---|---|---|
| 10 minutes d'audio | $0.192 | $0.126 |
Indications entre crochets ([whispers], [sighs]) | Jouées la plupart du temps ; le mot de la balise est parfois prononcé | Jouées de façon peu fiable ; les mots des balises sont parfois lus à voix haute, écrivez donc les sons en toutes lettres |
| Langues | 130 | 101 (pas de thaï, suédois, finnois, swahili ni somali) |
| Deux locuteurs dans une requête | Oui (speakers + dialogue) | Oui, même structure |
| Voix / sortie | 30 voix prédéfinies, un WAV mono 24 kHz 16 bits | Identique |
| À utiliser pour | Scènes d'audiolibre jouées, sons vocaux, dialogue dense, couverture linguistique plus large | Narration simple et finie et messages, brouillons, essais de voix, lignes en grand volume |
Utilisez Flash TTS quand un rire, un soupir ou un chuchotement doit tomber au bon endroit, et Flash-Lite TTS pour la parole simple. Testez d'abord les lignes simples sur Lite et gardez une prise satisfaisante ; il n'est pas nécessaire de la régénérer sur Flash. Passez à Flash quand la scène demande des indications jouées ou une langue que Lite ne prend pas en charge. Les deux acceptent les mêmes champs, changer de modèle ne demande donc que de changer le nom du modèle.
Créez un message vocal de personnage
Essayez d'abord dans le Playground. Ouvrez Flash TTS ou Flash-Lite TTS, utilisez l'onglet Playground avec la vue Form, puis :
- Ne mettez dans Text que les mots que l'auditeur doit entendre (jusqu'à 5.000 caractères). Sur Flash, les raccourcis de Cues insèrent
[whispers],[sighs],[laughs],[gasps]et[pause]; Lite affiche un avertissement indiquant que ces balises sont lues à voix haute. - Choisissez une Voice (la valeur par défaut est
Kore) et, si vous le souhaitez, un Style et un Pace. - Ajoutez des notes de diction dans Delivery instructions (jusqu'à 1.000 caractères) et Scene (jusqu'à 500). Rien de tout cela n'est prononcé.
- Vérifiez l'estimation de durée, appuyez sur Run model et lisez ou téléchargez le WAV dans Output.
Puis la même requête depuis le code (pip install spicyapi, SPICY_API_KEY défini). Elle crée la tâche, attend et affiche le lien du WAV ; pour Lite, changez le modèle en google/gemini-3.8-flash-lite-tts/text-to-speech et écrivez les sons en toutes lettres au lieu d'utiliser des crochets :
import uuid
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
task = client.create_task(
model="google/gemini-3.8-flash-tts/text-to-speech",
input_data={
"text": "You made it. I was starting to think you had changed your mind. Stay a little longer; I like having you here.",
"voice_id": "Kore",
"instructions": "Quiet, warm and intimate. Speak to one adult listener, with a natural pause after the first sentence.",
"pace": "natural",
},
idempotency_key=str(uuid.uuid4()), # new key per new request; reuse only to retry the same one
)
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise RuntimeError(f"Task {task['taskId']} ended as {final['state']}")
print(output_assets(final)[0]["url"]) # 24 kHz 16-bit mono WAV; copy it to your own storageL'attente, les nouvelles tentatives et la gestion des erreurs se trouvent dans la référence du SDK Python et dans la documentation des tâches.
Gardez les étiquettes Character:, les numéros de prise et les descriptions de scène hors de text ; le modèle le lit comme une transcription. Limitez instructions à une ou deux phrases sur l'ambiance et la distance au microphone, et choisissez une autre voix plutôt que d'y décrire l'âge ou le genre ; réglez l'accent avec le champ accent.
Sur Flash, placez une indication juste avant la ligne qu'elle dirige : [whispers] You made it. La page du modèle liste aussi [sighs], [laughing] et [gasping], et ses exemples utilisent [softly] et [teasing] ; les pauses viennent de la ponctuation (virgules, points de suspension, points), pas d'une balise. Utilisez des crochets carrés, pas les balises en chevrons de la documentation de l'API directe de Google. Si une balise est prononcée au lieu d'être jouée, régénérez ou déplacez cette ligne dans instructions.
Sur Lite, orthographiez les sons en mots : Mmm... you made it. ou Ha... of course you did. Laissez complètement les crochets de côté et portez l'ambiance par instructions, la ponctuation et des phrases courtes.
Ou laissez un agent s'en charger. Donnez à un assistant la CLI ou le serveur MCP ; les deux affichent le prix et vous demandent de confirmer avant un appel payant, et le Skill ajoute des instructions par-dessus l'un ou l'autre.
- CLI :
spicyapi(npx @spicyapi/clifonctionne sans installation) ;input.jsoncontient l'objetinputci-dessus :
``bash spicyapi tasks create --model google/gemini-3.8-flash-tts/text-to-speech \ --input-file input.json --wait ``
- Serveur MCP : ajoutez le serveur MCP et demandez « Lis cette ligne chaleureusement avec Gemini 3.8 Flash TTS. » Il appelle
spicyapi_task_create(qui s'arrête pour votre confirmation de prix), puisspicyapi_task_wait. - Skill :
npx skills add spicyapi-ai/spicy-skillinstalle l'Agent Skill ; il apprend à l'assistant à lire le schéma en direct et ne peut pas lancer de tâche lui-même, associez-le donc à la CLI ou au MCP.
Choisissez une voix
Les identifiants de voix sont sensibles à la casse et Kore (ferme) est la valeur par défaut. Les options plus chaudes ou plus douces comprennent Sulafat (chaude), Achernar (douce) et Enceladus (soufflée) ; Charon (informative) convient à la narration, Gacrux est mature, Algenib est rauque et Puck est animé. Testez les mêmes deux lignes avec trois voix sur Lite, puis gardez cette voix pour tout le livre. Une voix conserve son caractère d'une langue à l'autre. Ces préréglages sont les seules voix disponibles : pas de clonage, pas de référence téléchargée.

Illustration ; ce n'est pas un résultat audio.
Deux adultes dans une requête
Les étiquettes de locuteur dans text ne créent pas deux voix. Utilisez dialogue à la place de text et donnez à chaque ligne un nom de locuteur qui figure dans speakers.
{
"speakers": [
{"name": "Mara", "voice_id": "Kore", "style": "vocal_smile"},
{"name": "Eli", "voice_id": "Charon", "pace": "natural"}
],
"dialogue": [
{"speaker": "Mara", "text": "You can stay, if you want to."},
{"speaker": "Eli", "text": "I was hoping you would ask."}
],
"scene": "Two fictional adults speaking quietly after a dinner date."
}Limites : deux locuteurs, 20 lignes, 250 caractères par ligne. Vous obtenez un seul WAV mélangé, pas un fichier par acteur ; pour modifier les voix séparément, générez les lignes de chaque locuteur comme des tâches séparées à une seule voix. Chaque locuteur peut porter son propre style, pace, accent et un profile (non lu à voix haute).
Transformez un chapitre en requêtes
Une requête accepte jusqu'à 5.000 caractères. En pratique, un paragraphe de 270 caractères revient en 20 à 26 secondes environ, donc six à huit minutes est une estimation approximative pour une requête complète de 5.000 caractères, pas une limite de durée. Cette plage coûte de $0.1152 à $0.1536 sur Flash ou de $0.0756 à $0.1008 sur Lite (environ $0.12–$0.15 et $0.08–$0.10 respectivement). Un chapitre de 20 minutes représente donc trois ou quatre requêtes : $0.384 sur Flash, $0.252 sur Lite.
- Coupez aux changements de scène ou aux longues pauses, pas au milieu d'une phrase ; une couture à l'intérieur d'une scène est l'endroit où un changement de timbre s'entend le plus.
- Réutilisez exactement la même voix, les mêmes
instructionset les mêmes réglages pour chaque morceau, sinon un seul narrateur commencera à sonner comme deux. - Budgétez avec une marge : vous payez les secondes renvoyées, et les réglages de
paceplus lents en renvoient davantage. - Conservez le WAV pendant 14 jours. Il n'y a ni horodatages ni sous-titres ; alignez une transcription dans votre éditeur si vous en avez besoin.
- Attendez-vous à une blocage temporaire : une tâche en cours réserve une provision de 660 secondes et libère la partie inutilisée à la fin.
- Pas de MP3, pas de pistes musicales, pas de curseurs de hauteur ou de vitesse, pas d'appels en direct. Convertissez le WAV localement, ajoutez une ambiance dans un éditeur et utilisez une intégration temps réel pour la voix en direct.
Les réglages qui changent le résultat
pace propose natural, rapid_fire, the_drift (lent, traînant) et staccato. Commencez par natural ; si une ligne paraît précipitée, corrigez d'abord la ponctuation. style propose whisper, empathetic, vocal_smile, newscaster, promo_hype et deadpan ; pour une scène intime, essayez whisper ou vocal_smile. accent propose huit accents anglais (neutre, trois américains, deux britanniques, transatlantique, australien). temperature va de 0 à 2 et contrôle la variation entre les prises ; laissez-le non défini pour la première prise.
Quand quelque chose sonne mal
| Ce que vous entendez | Ce qu'il faut changer |
|---|---|
| Lite lit à voix haute une indication entre crochets | Retirez les crochets et orthographiez le son, ou déplacez cette ligne vers Flash |
| Flash prononce un mot d'indication au lieu de la jouer | Régénérez ; si cela se répète, reformulez l'indication ou utilisez instructions |
| Une ligne sonne comme une annonce | Retirez promo_hype ou newscaster ; essayez une instruction conversationnelle courte |
| Votre langue n'est pas prise en charge ou est mal lue sur Lite | Utilisez Flash (130 langues) |
| Les notes de direction sont prononcées au début | Vérifiez qu'elles ne sont pas dans text ; si c'est le cas, signalez l'identifiant de tâche au support |
Pour un exemple d'écoute, voici l'échantillon Flash publié de confession murmurée. La documentation du modèle de Google ne couvre que l'API directe.
En bref : narration simple, brouillons et lignes en grand volume sur Lite ; indications jouées ou langue manquante sur Flash. Dans tous les cas, lancez d'abord un court passage dans la voix voulue avant de vous engager sur un chapitre entier, puis réutilisez cette voix et cette direction pour chaque morceau.
Autres options audio : le comparatif des API de synthèse vocale sans censure (article en anglais) et Gemini 2.5 Pro TTS pour l'audio NSFW.







