Skip to main content
Voice Design crée des voix naturelles et réalistes à partir d’une description textuelle. Décrivez le personnage que vous souhaitez pour votre agent vocal ou votre produit, et Gradium génère quelques candidats. Vous les écoutez, puis vous convertissez celui qui vous plaît en voix permanente. Elle fonctionne dès lors comme n’importe quel autre voice_id : REST, WebSocket et Speech-to-Speech. Aucun audio de référence n’est nécessaire.

Vous avez plutôt un enregistrement ?

Les voix personnalisées clonent un locuteur à partir d’un court échantillon audio.

Fonctionnement

1. Générer

Envoyez une description et recevez des voix candidates en quelques secondes.

2. Écouter

Écoutez chaque candidat sur une courte phrase en synthèse vocale (TTS).

3. Convertir

Transformez votre choix en voice_id permanent.

4. Utiliser

La synthèse vocale, le streaming et le Speech-to-Speech l’acceptent tous.
Décrivez la voix en une ou deux phrases, jusqu’à 500 caractères, en anglais, français, espagnol, portugais ou allemand. Gradium développe la description en une spécification plus complète et en échantillonne de 1 à 5 voix complètes, prêtes en quelques secondes. Écoutez chacune sur une courte phrase, puis convertissez celle que vous voulez. Tant qu’il n’est pas converti, un candidat ne peut pas être utilisé en production. Deux points à connaître. Le modèle échantillonne une nouvelle voix à chaque requête : si un candidat vous plaît, convertissez-le, car relancer la requête ne le fera pas revenir. Par ailleurs, les candidats d’une même requête sont des variations d’un même personnage. Pour un personnage différent, modifiez la description.

Accès

URL de base https://api.gradium.ai/api, clé API dans l’en-tête x-api-key.

Démarrage rapide

Les étapes s’enchaînent en une seule séquence, en conservant les identifiants dans des variables shell ou des noms Python.
1

Générer des candidats

201 Created
La génération s’exécute en arrière-plan : les identifiants sont donc renvoyés avec ready: false.
Chaque requête crée de nouveaux identifiants. Conservez-les. Pour retrouver des identifiants que vous n’avez pas conservés, listez vos candidats avec GET /voice-generator/embeddings.
2

Attendre qu'ils soient prêts

200 OK
Trois candidats prennent généralement de trois à cinq secondes. Limitez la boucle à environ deux minutes et proposez de réessayer.Un identifiant inconnu renvoie 200 avec une liste embeddings vide, et non 404 : vérifiez donc la liste avant d’y accéder par index. Les horodatages sont en UTC, avec ou sans Z final.
3

Écouter un candidat

Passez l’identifiant du candidat comme voice_id sur l’endpoint de synthèse vocale habituel. Le préfixe vox_emb_ permet à l’API de distinguer un candidat d’une voix convertie.
Le corps de la réponse est l’audio, en 48 kHz mono. Répétez l’opération pour les autres candidats.Les candidats sont soumis à trois restrictions qui ne s’appliquent pas aux voix converties :
  • Le texte est limité à 100 caractères (400 input text too long).
  • REST uniquement. Le WebSocket TTS et le Speech-to-Speech rejettent les identifiants de candidats avec l’erreur 1011.
  • Un candidat qui n’est pas prêt, inconnu ou appartenant à un autre compte renvoie 404 Embedding not found.
Écoutez les candidats avec le model_name et le json_config que vous utiliserez en production : la voix que vous validez sera ainsi celle que vous obtiendrez.
4

Convertir le candidat en voix

Un candidat est un brouillon, supprimé 30 jours après sa génération. Le convertir crée une voix permanente dans votre bibliothèque.
201 Created
uid est votre voice_id permanent. C’est celui-ci qu’il faut conserver. Il s’agit de la même valeur que voxium_embedding_id dans la requête et que voice_id partout ailleurs.
  • La conversion est gratuite. La voix occupe un emplacement de voix personnalisée, partagé avec les clones de voix. Au-delà de votre quota : 409 Custom voice limit reached.
  • Elle supprime la date d’expiration du candidat.
  • Convertir deux fois le même candidat : 409 A voice was already created from this embedding: <voice_id>. Conservez vous-même la correspondance entre candidat et voix plutôt que d’analyser ce message.
  • Candidat pas prêt ou inconnu : 409 Embedding is not ready yet.
5

Utiliser la voix

Aucune limite de longueur ici. Le même voice_id fonctionne avec le SDK Python, le WebSocket TTS et le Speech-to-Speech.
6

Faire le ménage

Les candidats que vous ne convertissez pas sont supprimés au bout de 30 jours. Pour en supprimer un plus tôt :
cURL
Sans risque à tout moment : une voix convertie conserve sa propre copie. Un identifiant déjà supprimé renvoie 404.

Exemple complet

L’ensemble du processus dans un seul fichier. Définissez GRADIUM_API_KEY et exécutez-le. Il crée une vraie voix dans votre compte.
L’audio est diffusé en streaming : les en-têtes WAV contiennent donc des longueurs fictives. Les lecteurs qui se fient à l’en-tête, comme le module wave de Python, indiquent une durée erronée. Réécrivez les tailles RIFF et data après l’enregistrement si cela compte pour vous.

Rédiger une description

La description est la seule entrée dont dispose le modèle. Il réagit aux attributs que contiendrait une fiche de casting, et plus vous en nommez, plus le résultat est précis. Terminez par l’usage prévu. Il oriente l’interprétation et le registre, pas seulement la couleur de la voix.
A British female voice, 20 to 30, glossy and confident, with girly chatter, high pitch, fast pacing, high energy and bright sparkling resonance. Ideal for a friendly receptionist or assistant.

Règles empiriques

  • Utilisez l’espace disponible. Jusqu’à 500 caractères, tous utilisables. Des phrases complètes valent mieux qu’une liste d’adjectifs.
  • Décrivez la voix, pas le script. Les mots à prononcer vont dans la phrase d’écoute.
  • Définissez language sur la langue que parlera la voix. Ce paramètre façonne l’accent et l’interprétation, pas seulement les mots. Les accents régionaux restent à préciser dans la description : « de Bristol » ou « parisien » doit être écrit explicitement.
  • Le concret l’emporte sur l’appréciation. « Voix grave, débit lent, timbre rocailleux » en dit plus au modèle que « une super voix de narrateur ».

Exemples

Les descriptions telles qu’envoyées : Pirate
A gruff Bristolian English male pirate voice, 45 to 60, for game and character narration: weathered low pitch, gravelly timbre with heavy vocal fry, strong projection, at a steady, unhurried pace, boisterous and commanding energy.
Fionn
An Irish English male voice, 40 to 55, for customer service: calm and crisp, with mid-low pitch, steady natural pacing, medium energy and warm rounded resonance. Ideal for reassuring walkthroughs, empathic de-escalation and complex IT support.
Freya
A British female voice, 20 to 30, glossy and confident, with girly chatter, high pitch, fast pacing, high energy and bright sparkling resonance. Ideal for a friendly receptionist or assistant.
Desmond
An American English male voice, 55 to 65: clean, deliberate and precise, with low pitch, slow pacing and low-to-mid energy, resonant timbre and a gentle low-to-high flow. Ideal for projecting academic authority.

Itérer

Modifiez l’attribut qui ne convient pas plutôt que de réécrire la description.

Intégrer Voice Design dans un produit

Si vous proposez la conception de voix à vos propres utilisateurs, préremplissez un formulaire avec les attributs ci-dessus et composez la phrase à partir de celui-ci, avec une zone de texte libre comme solution de repli. Affichez la limite de 500 caractères. Proposez « garder celle-ci » comme moyen de conserver une voix, et faites en sorte que « régénérer » envoie une nouvelle description plutôt que davantage d’échantillons.

Paramètres de génération

Les paramètres de génération façonnent la voix et se placent dans json_config sur POST /voice-generator/generate. Les paramètres de synthèse façonnent chaque énoncé et se placent dans json_config sur la requête TTS. Voice Design prend toujours en charge cfg_scale pour contrôler à quel point la voix suit littéralement votre description. Tous les paramètres de génération sont facultatifs. Les valeurs par défaut sont optimisées : n’envoyez que les clés que vous avez une raison de modifier.

cfg_scale

  • 5.0, la valeur par défaut, pour explorer avec 3 à 5 candidats lorsque vous voulez qu’ils diffèrent.
  • 8.0 à 12.0 lorsque les candidats s’éloignent de la description, ou lorsque vous générez un seul candidat à la fois. Les assistants de conception conversationnels qui génèrent un candidat par tour utilisent généralement 10.0.
  • Au-delà de 12.0, la voix suit la description de plus en plus littéralement au détriment du naturel, et les candidats convergent les uns vers les autres.
cfg_scale ne peut pas ajouter un attribut que la description ne mentionne pas. Corrigez d’abord la description.

La liste des clés autorisées dans json_config

N’envoyez que cfg_scale. Une clé inconnue ou une valeur hors plage n’est pas rejetée. La requête renvoie 201 et les candidats ne passent jamais à ready. Limitez votre boucle d’interrogation et traitez un dépassement de délai comme une requête invalide.Causes habituelles : un paramètre de synthèse comme temp, ou un cfg_scale hors de sa plage.

Paramètres de synthèse

Écouter un candidat ou synthétiser avec une voix convertie est une requête TTS ordinaire : tout ce qui figure dans Paramètres de voix s’applique donc. Consultez Choix du modèle pour l’accès aux modèles TTS.
Obsolète : cfg_coef pour le TTSLe nouveau modèle TTS ignore cfg_coef lors de la synthèse avec une voix conçue. Supprimez-le de vos requêtes TTS. cfg_scale s’applique toujours lors de la génération de la voix.

Température (temp)

0.0 à 1.4, valeur par défaut 0.7.
  • Écoutez les candidats avec la valeur par défaut. 0.0 rend une voix vive plus plate qu’elle ne le sera en production.
  • 0.3 à 0.5 pour une production scénarisée à fort volume où les prises doivent être identiques : messages de SVI, annonces fixes.
  • Valeur par défaut ou légèrement au-dessus pour les agents conversationnels et la narration.

Balises prises en charge

Les modèles lisent du texte brut. Deux balises en ligne sont reconnues, aussi bien sur les candidats que sur les voix converties. Tout le reste est prononcé à voix haute comme du texte. Sur un candidat, les balises comptent dans la limite de 100 caractères.

Non pris en charge

Le SSML n’est pas interprété. <speak><prosody rate="slow">Hello there.</prosody></speak> produit une voix qui dit « speak prosody rate slow, hello there, slash prosody, slash speak ». Utilisez plutôt : Le Markdown et le HTML sont eux aussi lus comme du texte. Retirez la mise en forme avant l’envoi.

Cycle de vie des candidats

Limites

Erreurs

Les erreurs ont la forme {"detail": "..."}, sauf 422, qui contient une liste d’erreurs par champ. Un candidat qui ne devient jamais prêt est presque toujours dû à une valeur de json_config hors plage ou à une clé que l’API ne reconnaît pas. Consultez la liste des clés autorisées.

Étapes suivantes

Voice Localization

Faites parler un candidat ou une voix convertie dans une autre langue ou avec un autre accent.

Gérer les voix

Listez, modifiez et supprimez les voix que vous convertissez.

Paramètres de voix

Vitesse, température et autres options de synthèse.

Synthèse vocale en streaming

Utilisez votre nouvelle voix sur le WebSocket à faible latence.

Référence de l'API

Tous les endpoints de Voice Design en détail.