Seed Speech 2.0 lit une voix prédéfinie par requête : une conversation entre deux personnages adultes, c'est donc une tâche par réplique, assemblées dans un court montage audio. Chaque tâche coûte 0,072 $ pour 1 000 caractères de texte prononcé, sans minimum, et la note de jeu est gratuite.
Il convient aux messages vocaux de personnages, à la narration de livres audio et aux dialogues où vous voulez refaire une réplique sans toucher à l'autre. Si vous voulez les deux voix et un fond sonore dans un seul fichier, utilisez plutôt Seed Audio 1.0.
Ce que donne une requête
| Élément | Seed Speech 2.0 |
|---|---|
| Champ obligatoire | text, 1 à 5 000 caractères |
| Voix | Un voice_id parmi 41 voix prédéfinies ; stokie_en par défaut |
| Note de jeu | instructions, jusqu'à 1 000 caractères ; non prononcée, non facturée |
| Sortie | Un MP3 mono à 24 kHz, ou Ogg Opus (opus) ; pas de minutage des mots ni de sous-titres |
| Durée et vitesse | Environ 11 caractères par seconde de parole ; environ 8 secondes pour générer 300 caractères |
| Stockage | Conservé 14 jours, pensez à le télécharger |
| Coût | 0,072 $ pour 1 000 caractères ; 5 000 caractères coûtent 0,36 $ ; une tâche expirée n'est pas facturée |
| Non disponible | Import d'une voix de référence, tableau multi-locuteurs |
Choisissez une voix prédéfinie et essayez une réplique sur la page de la tâche Seed Speech 2.0. Le clonage de voix, le streaming et la reconnaissance vocale de la famille Seed Speech plus large de BytePlus ne font pas partie de cette tâche. Pour entendre d'abord la voix, écoutez le message vocal de fin de soirée publié ; il utilise stokie_en avec une note de jeu douce et intime.
Essayez d'abord les deux répliques dans le Playground
Sur cette page, ouvrez l'onglet Playground. Pour chaque réplique de deux adultes fictifs après un rendez-vous :
- Collez dans Text uniquement les mots à entendre. N'écrivez ni noms de locuteurs (« Anna : ») ni didascalies (« elle sourit ») : ils sont lus à voix haute, et si vous mettez les deux personnages dans une seule requête, une seule voix lit les deux répliques et les noms.
- Choisissez un nom dans Voice (Stokie · English par défaut).
- Décrivez le jeu dans Delivery instructions ; ce texte n'est ni prononcé ni facturé.
- Laissez Language sur Auto, lancez la tâche, écoutez le résultat et téléchargez le MP3.
Les répliques et les instructions restent en anglais, car Stokie et Tim sont des voix prédéfinies anglaises.
| Réplique | Voix | Text | Delivery instructions |
|---|---|---|---|
| 1 | Stokie (stokie_en) | "You don't have to go yet. Stay for another coffee? I like talking to you when we're not watching the clock." | Warm and slightly playful. Speak quietly to one adult listener, with a natural question rather than a sales pitch. |
| 2 | Tim (tim_en) | "Then I'll stay. I was hoping you would give me a reason." | Low, relaxed and amused. Answer an invitation naturally; do not sound like an announcer. |
Assemblez les deux téléchargements dans n'importe quel éditeur audio, en laissant un court silence. Pour automatiser l'assemblage, utilisez le script ci-dessous.
Ensuite, scriptez tout l'échange
Installez le SDK Python (pip install spicyapi) et ffmpeg, définissez SPICY_API_KEY, puis lancez ceci. Le script envoie une tâche par réplique, télécharge chaque MP3, puis les assemble avec 0,35 seconde de silence après chaque réplique et des niveaux harmonisés.
import subprocess, urllib.request
from spicyapi import SpicyClient, output_assets
client = SpicyClient() # reads SPICY_API_KEY from the environment
GAP = 0.35 # seconds of silence after each turn
TURNS = [
{"text": "You don't have to go yet. Stay for another coffee? I like talking to you when we're not watching the clock.",
"voice_id": "stokie_en",
"instructions": "Warm and slightly playful. Quiet, to one adult listener."},
{"text": "Then I'll stay. I was hoping you would give me a reason.",
"voice_id": "tim_en",
"instructions": "Low, relaxed and amused. Answer naturally, not like an announcer."},
]
files = []
for i, turn in enumerate(TURNS, 1):
task = client.create_task(
model="bytedance/seed-speech-2.0/text-to-speech",
input_data=dict(turn, language="en", output_format="mp3"),
idempotency_key=f"dialogue-take-1-turn-{i}", # new keys for a new take
)
final = client.wait_for_terminal(task["taskId"])
if final["state"] != "succeeded":
raise RuntimeError(f"Turn {i} ended as {final['state']}")
files.append(f"turn-{i:02d}.mp3")
urllib.request.urlretrieve(output_assets(final)[0]["url"], files[-1])
cmd = ["ffmpeg", "-y"] + [x for f in files for x in ("-i", f)]
chains = [f"[{i}:a]loudnorm=I=-18,apad=pad_dur={GAP}[a{i}]" for i in range(len(files))]
graph = ";".join(chains) + ";" + "".join(f"[a{i}]" for i in range(len(files))) + f"concat=n={len(files)}:v=0:a=1"
subprocess.run(cmd + ["-filter_complex", graph, "-ar", "24000", "-b:a", "128k", "dialogue.mp3"], check=True)Ajustez GAP jusqu'à ce que la réponse tombe naturellement. Si une réplique démarre mal, régénérez la phrase entière plutôt que de rafistoler un mot, puis reconstruisez le fichier. L'attente, les nouvelles tentatives et les erreurs sont décrites dans la référence du SDK Python et dans le guide des tâches asynchrones ; la reprise à grande échelle fait l'objet de l'article du blog sur le polling face aux webhooks.
Ou laissez un agent s'en charger
Si un assistant doit mettre le script en voix, donnez-lui la CLI ou le serveur MCP. Les deux affichent le prix et demandent votre confirmation avant un appel payant. Le Skill ajoute des instructions par-dessus l'un ou l'autre.
- CLI.
spicyapiexécute une réplique par appel (npx @spicyapi/clifonctionne sans installation). Placez l'objetinputde la réplique dansturn-1.json:
``bash spicyapi tasks create --model bytedance/seed-speech-2.0/text-to-speech \ --input-file turn-1.json --idempotency-key dialogue-take-1-turn-1 --wait ``
- Serveur MCP. Ajoutez le serveur MCP à votre assistant et demandez : « Read these two lines with Seed Speech 2.0, stokieen then timen, and join them with a short gap. » Il appelle
spicyapi_task_create(qui s'arrête pour que vous confirmiez le prix) etspicyapi_task_waitpour chaque réplique. - Skill.
npx skills add spicyapi-ai/spicy-skillinstalle l'Agent Skill, qui apprend à un assistant de code à lire le schéma en vigueur et à réutiliser les clés d'idempotence. Il ne peut pas exécuter de tâches seul : utilisez-le avec la CLI ou MCP.
Choisir voix et langue ensemble
Le suffixe de chaque ID de voix indique les langues pour lesquelles elle est conçue. Les voix anglaises incluent stokie_en, dacey_en et tim_en. D'autres couvrent le japonais (minimi_ja), l'allemand (sven_de), le français (usseau_fr), le coréen (shane_ko) et l'espagnol (felipe_es) ; jess_ja_es_id_pt_en_zh parle six langues. La liste ne précise pas quelles voix sont masculines ou féminines : faites donc des essais. La même réplique de 100 caractères passée par cinq candidates coûte environ 0,036 $ au total. Gardez le voice_id et les instructions gagnants pour toutes les répliques suivantes de ce personnage.
language accepte zh, en, ja, es-mx, id, pt-br, ko, it, de et fr. Omettez-le pour la détection automatique, et renseignez-le quand une réplique courte ou multilingue est lue dans la mauvaise langue. L'espagnol est es-mx et le portugais pt-br. Le champ ne traduit pas : écrivez la réplique dans la langue cible.
Scripts pour adultes et sons non verbaux
D'après nos tests de septembre 2026, SpicyAPI n'ajoute aucun filtre de contenu à ce modèle, et des passages pour adultes, directs ou dans un style de livre audio, sont revenus mot pour mot, sans que le texte des instructions soit jamais prononcé. Un passage riche en indications a conservé son vocabulaire mais a ajouté de lui-même des vocalisations sans paroles. La tâche n'a pas de champ pour des balises sonores : écrivez un son comme un mot (« Mm... », « Ah... ») et décrivez la respiration ou le ton dans instructions. Si une scène repose sur des souffles et des gémissements joués, Gemini 3.8 Flash, Grok et MiniMax jouent des indications intégrées au texte sous forme de sons ; Seed Speech, non.
Réglages qui résolvent un vrai problème
| Réglage | Plage | À utiliser quand |
|---|---|---|
speed | 0,5-2, 1 par défaut | Une réplique est précipitée : essayez 0,9. Si seule une expression l'est, raccourcissez la phrase ou ajoutez un point |
pitch | -12 à +12 demi-tons | Pour un petit ajustement après le casting ; pour un autre personnage, changez de voix prédéfinie |
volume | 0,5-2, 1 par défaut | Une réplique de remplacement est plus forte ou plus faible que ses voisines |
sample_rate | 8 000 à 48 000 Hz | Votre projet de montage exige une fréquence autre que 24 kHz |
output_format | mp3 ou opus | Opus pour des fichiers plus légers si votre lecteur gère l'Ogg Opus ; le WAV n'est pas proposé, convertissez en local |
Une réplique qui sonne théâtrale a généralement une instruction trop longue : remplacez-la par « Quiet, natural conversational delivery. » Une voix au caractère de fond inadapté demande une autre voix prédéfinie avant tout changement de hauteur. Un nom inhabituel est parfois mal prononcé, et il n'existe pas de dictionnaire de prononciation : écrivez-le dans text tel qu'il sonne.
Pour les sous-titres, il faut aligner le texte sur le fichier terminé, car la tâche ne renvoie aucun horodatage.
Budgétez le script, révisions comprises
Le prix suit les caractères de text, espaces, ponctuation et sauts de ligne compris ; instructions est gratuit et le devis affiché avant un lancement est définitif. Une réplique de 200 caractères coûte 0,0144 $ et représente environ 18 secondes de parole ; une scène de 2 000 caractères entre les deux locuteurs coûte 0,144 $, et trois prises complètes coûtent 0,432 $. Deux locuteurs n'entraînent aucun supplément. Remplacer une réponse de 200 caractères coûte 0,0144 $, bien moins que de régénérer la scène : gardez donc la même voix prédéfinie et les mêmes réglages pour la reprise.
Choisissez Seed Speech pour des voix prédéfinies abordables et des répliques que vous pouvez refaire une à une ; choisissez Seed Audio 1.0 quand vous voulez les deux voix et l'ambiance dans un seul fichier.






