Voir la partition devenir rendu
La partition est compilée en direct à l'écran. Chaque segment affiche l'état de voix résolu et la consigne française qui sera envoyée à OpenAI.
Partition
compilation en directLa compilation et le rendu local sont ouverts à tous, gratuitement. Pour le rendu OpenAI, renseignez votre clé : gpt-4o-mini-tts est appelé depuis votre navigateur, une fois par segment.
Le rendu local est produit par Piper sur nos serveurs, sans sortie de données, avec ambiances, bruitages, musique et effets réellement mixés. Il accepte n'importe quelle partition.
Plan de compilation
Compilation…
Cette clé reste dans votre navigateur, le temps de l'onglet : les appels partent de votre poste directement vers api.openai.com, sans passer par ce serveur, qui ne la reçoit ni ne la stocke. Sans clé, tout reste utilisable — la compilation, le rendu local et le rendu OpenAI de référence.
Aucun endpoint public de cette page n'appelle d'API facturable. Votre clé OpenAI reste dans votre navigateur et n'est jamais transmise à nos serveurs.
Le problème des contrôles de voix
Chaque moteur de synthèse impose son format de contrôle. SSML est verbeux, les « audio tags » sont souvent propriétaires, et certains moteurs n'acceptent aucun balisage dans le texte.
L'API audio d'OpenAI n'interprète ni SSML ni balisage inline. Avec gpt-4o-mini-tts, le seul levier est le champ instructions : une consigne en langage naturel, globale à toute la requête.
Sans partition, il est impossible d'indiquer localement un changement de débit, un chuchotement, une prononciation forcée ou une voix de personnage. Il faut découper le texte et reconstruire soi-même la séquence d'appels.
Comment SSM utilise l'API OpenAI
Un modèle de langage OpenAI peut écrire la partition à partir d'un texte brut et du registre SSM. Trois niveaux d'annotation sont proposés : sobre, riche et studio.
Le compilateur lit ensuite la partition, résout l'état de voix de chaque segment et le traduit en instructions françaises pour gpt-4o-mini-tts. Par exemple, une nuance pianissimo devient une indication de parole à peine audible et presque soufflée ; une joie marquée et un personnage deviennent des consignes distinctes.
Les directives [pause=700ms] ne sont pas envoyées à l'API : elles deviennent des silences planifiés entre les segments audio. Les ambiances et bruitages sont affichés, mais ignorés par OpenAI, qui ne rend pas la couche de production.
| Partition SSM | Ce que reçoit gpt-4o-mini-tts |
|---|---|
[pp]« Encore une nuit. »[/pp] |
input : « Encore une nuit. »instructions : … Parle à peine audible, presque soufflé. |
[lent]Le gardien gravit l'escalier.[/lent] |
instructions : … Parle lentement. |
[perso=Marie][joie=1.4]…[/joie][/perso] |
instructions : … Ce passage est dit par le personnage Marie : garde un timbre stable et reconnaissable pour lui. Colore la voix d'une intention de joie très marquée. |
[lang=en]I told you.[/lang] |
instructions : … Ce passage est en anglais : prononce-le avec l'accent correspondant. |
[dis:Païpeur]Piper[/dis] |
input réécrit : « Païpeur » — le texte affiché reste « Piper ». |
[pause=700ms] |
Aucun appel : silence planifié entre deux segments. |
[ambiance=mer] |
Ignoré par ce moteur, mixé par le moteur local. |
// Ce que le compilateur produit, appel par appel. const plan = compile(partition); // SSM → segments + états résolus for (const step of plan) { if (step.kind === 'silence') { schedule(step.duration); continue; } await openai.audio.speech.create({ model: 'gpt-4o-mini-tts', voice: 'cedar', input: step.text, // le texte, sans les crochets instructions: step.instructions, // l'état SSM, traduit en français }); }
Deux moteurs, une partition
SSM reste neutre vis-à-vis du moteur. La même partition peut être compilée pour OpenAI ou pour Piper, un moteur neuronal local fondé sur des modèles ONNX, sans transmettre le texte à un tiers.
Piper rend aussi la couche production : la voix peut être mixée avec ambiances, bruitages, musique et effets. Lorsqu'un moteur ne connaît pas une directive, il l'ignore silencieusement : la lecture reste possible sans erreur.
OpenAI cloud
- Modèle
gpt-4o-mini-tts, 13 voix - Un appel par état de voix résolu
- Couche performance restituée par
instructions - Couche production ignorée proprement
- Silences enchaînés côté navigateur
Piper local
- Modèles ONNX open-source, exécution sur nos serveurs
- Aucun texte transmis à un tiers
- Couche production réellement mixée : ambiances, bruitages, musique, effets
- Un seul MP3 en sortie, mis en cache
- Dictionnaire de prononciation française
Le registre en un coup d'œil
| Axe | Directives | Couche |
|---|---|---|
| Dynamique | [pp] [p] [mf] [ff] [crescendo] [accent] [staccato] [volume=-6dB] | performance |
| Tempo | [tres-lent] [lent] [rapide] [presto] [accelerer] [vitesse=1.2] | performance |
| Hauteur | [grave] [aigu] [ton+2] [ton=-3st] [plage=large] | performance |
| Prosodie | [pause=500ms] [respiration] [soupir] [hesitation] [silence=2s] | performance |
| Émotions | [joie=1.4] [tristesse] [colere] [mystere] [ironie] [documentaire] — une centaine d'entrées | expressive |
| Narration | [narrateur] [perso=Alice] [dialogue] [aparte] [pensee] [annonce] | expressive |
| Voix & langues | [voix=conteur] [voix=robot] [lang=en] [accent=québécois] | production |
| Prononciation | [dis:Païpeur] [alias:"kilogrammes"] [ipa:pipɛʁ] [epeler] [sigle] | performance |
| Studio | [sfx=tonnerre] [ambiance=café] [music=suspense] [fx=telephone] [pan=L70] | production |
La spécification
Le registre SSM v1.0 couvre la dynamique, le tempo, la hauteur en demi-tons, une centaine d'émotions et de registres de jeu, la narration, les personnages, les langues et la prononciation forcée. Sa couche production inclut une sonothèque de bruitages, d'ambiances, de musiques et d'effets.
La spécification est publique et conçue pour être implémentée par un tiers. Ses formes bornées, ouvrantes et événementielles, ainsi que les combinaisons de directives, suivent une grammaire régulière afin qu'un modèle de langage puisse produire du SSM valide.
Lisez la spécification et consultez le client de référence sur GitHub.