Skip to main content
Doubler le projet

Doubler le projet

Générez les voix et mixez la sortie d’un projet existant à partir d’un SRT traduit que vous fournissez. VoiceCheap ne traduit rien sur ce point de terminaison : pas de moteur de traduction, pas de reformulation SmartSync, pas de glossaire. Chaque réplique est lue telle quelle sur le segment correspondant de la transcription du projet, puis mixée avec l’arrière-plan d’origine, les sous-titres et la synchronisation labiale facultative, exactement comme une traduction classique. Utilisez-le lorsque la traduction est produite ailleurs (un traducteur humain, vos propres outils, un flux d’automatisation) et que vous n’avez besoin de VoiceCheap que pour générer les voix. L’exécution est asynchrone : interrogez Obtenir le statut de la traduction ou écoutez les Webhooks.

Prérequis

  • Le projet doit exister et sa transcription doit être terminée : créez-le avec Créer un projet (transcription seule) ou Démarrer la traduction, puis attendez transcriptionStatus: "success".
  • Votre SRT doit couvrir la transcription du projet : chaque segment a besoin d’au moins une réplique, et chaque réplique doit tomber sur un segment. Exportez la transcription avec Exporter la transcription du projet et traduisez-la réplique par réplique pour conserver les codes temporels.
  • La requête est facturée comme une traduction du même média, avec le même contrôle de crédits. Les modes de synchronisation labiale ajoutent leurs crédits supplémentaires habituels.

Limite de concurrence

La création de projets, la traduction et le doublage vérifient tous la limite de traductions actives de votre compte (10 au maximum, parfois moins). Seules les traductions ou les opérations de doublage en cours occupent des places ; les projets limités à la transcription n’en occupent pas. Lorsque cette limite est atteinte, l’API renvoie CONCURRENT_TRANSLATION_LIMIT_REACHED (HTTP 429). La limite appliquée figure dans details.limit. Une seconde exécution pour le même projet et la même langue cible est aussi refusée tant qu’une autre est en cours (TRANSLATION_ALREADY_IN_PROGRESS, HTTP 409).

Requête

Ce point de terminaison accepte un corps JSON (Content-Type: application/json). Les options booléennes et numériques sont envoyées comme valeurs JSON, pas comme des chaînes.

En-têtes

string
requis
Votre clé API VoiceCheap. Obtenez-en une sur app.voicecheap.ai/page-api.

Paramètres de chemin

string
requis
L’identifiant du projet renvoyé par Créer un projet ou Démarrer la traduction.

Paramètres du corps de la requête

string
requis
La langue de translatedSrt, en minuscules, dans la même liste que Démarrer la traduction. Si le projet n’a pas encore de travail pour cette langue, un travail est créé et la langue est ajoutée au projet.
string
requis
Le contenu SRT final dans la langue cible (numéro de réplique, ligne de temps, texte). Maximum 1 000 000 caractères. Les répliques sont associées aux segments de transcription par les horodatages : une réplique qui commence à moins de 50 ms du début d’un segment lui est attribuée, sinon au segment qu’elle chevauche le plus. Plusieurs répliques sur un même segment sont jointes par une espace. Le minutage, le locuteur et l’ordre de chaque segment lu viennent toujours de la transcription du projet ; vos codes temporels servent uniquement à l’association.
string
Un point de terminaison https qui reçoit désormais les événements webhook de ce projet et remplace le point de terminaison configuré sur le compte.Par défaut : Le point de terminaison déjà enregistré sur le projet, puis le point de terminaison webhook du compte.
boolean
Conserver l’audio d’arrière-plan d’origine (musique, ambiance) sous les voix générées.Par défaut : true
boolean
Conserver la voix d’origine discrètement sous la voix générée.Par défaut : false
number
Volume de la voix d’origine de 1 à 70 lorsque keepOriginalVoice est activé.Par défaut : 30
string
Stratégie vocale : cloning (cloner les voix des intervenants du projet) ou custom (utiliser une voix du catalogue ou votre voix personnalisée enregistrée).Par défaut : cloning
string
Requis lorsque voiceMode est custom. Utilisez un identifiant de dubbing_voices_list : une voix du catalogue ou une voix personnalisée enregistrée par le compte authentifié. La facturation en équipe ne donne pas accès aux voix enregistrées des autres membres.
string
Mode d’isolation de la voix lorsque keepBackgroundMusic est activé : studio ou realistic.Par défaut : studio
boolean
Incruster les sous-titres dans la vidéo de sortie. Nécessite un projet vidéo.Par défaut : false
string
Texte des sous-titres lorsque subtitles est activé : translated (votre SRT) ou original (la transcription source).Par défaut : translated
string
Lancer la synchronisation labiale une fois le doublage prêt : standard, pro ou studio. Les règles de forfait, de durée et de crédits sont les mêmes que sur Démarrer la traduction. Nécessite un projet vidéo.Par défaut : omettez le champ pour ignorer la synchronisation labiale.
boolean
Activer la détection du locuteur actif pour l’exécution de synchronisation labiale demandée.Par défaut : false
object
Réglage fin du clonage de voix, sous forme d’objet JSON avec stability et similarity entre 0 et 1. Uniquement avec voiceMode: "cloning". Voir Démarrer la traduction pour le rôle de chaque valeur.
array
Plages du temps source à laisser dans la langue d’origine, sous la forme [{ "startTime": 10.2, "endTime": 12.8 }]. Nécessite un projet vidéo et keepBackgroundMusic: true, ne peut pas être combiné avec keepOriginalVoice et ne peut pas chevaucher des segments de transcription.

Réponse

boolean
requis
Toujours true pour les requêtes réussies.
string
requis
Une confirmation lisible.
string
requis
Le projet en cours de doublage.
string
requis
Le travail de traduction utilisé pour targetLanguage. Il correspond à workId dans les points de terminaison de statut, de détails et de transcription.
number
requis
Estimation approximative du traitement en minutes : cinq minutes de traitement par minute entamée du média source.
Response

Suivre l’exécution

Le projet passe au flux translation dès que le doublage démarre, donc Obtenir le statut de la traduction suit la nouvelle exécution : status passe de processing à success (avec translatedVideoUrl et translatedAudioUrl) ou à failed (avec error). Les webhooks project.translation.completed et project.translation.failed sont envoyés avec le même targetLanguage. Dans Obtenir les détails du projet, la version traduite indique settings.dubbingMode: "dub-only" et settings.smartSync: false. Les échecs d’alignement apparaissent après l’acceptation de la requête POST. Le point de terminaison de statut renvoie status: "failed" avec error.code et error.message ; le webhook project.translation.failed porte le même code et le même message. TRANSLATED_SRT_UNMATCHED_CUES indique dans le message les numéros de répliques sans correspondance, et TRANSLATED_SRT_MISSING_SEGMENTS les index des segments sans réplique. Ces réponses asynchrones ne contiennent pas de champ details structuré. Corrigez le SRT et rappelez le point de terminaison : la version en échec reste dans l’historique et une nouvelle est créée.

Vérifier le rythme

Exportez la transcription traduite en JSON avec Exporter la transcription du projet. Chaque segment porte finalSpeedFactor, le rapport entre la voix générée et la fenêtre du segment. Raccourcissez les répliques qui dépassent environ 1.3, puis relancez le doublage avec le SRT révisé.

Exemple de flux

Une automatisation typique (par exemple un scénario n8n ou Make) enchaîne les points de terminaison comme suit :
  1. POST /v1/projects avec le média, targetLanguage et une originalLanguage explicite (transcription seule).
  2. Interrogez GET /v1/translate/{projectId}/status jusqu’à ce que transcriptionStatus vaille success, ou attendez le webhook project.created.
  3. POST /v1/projects/{projectId}/transcript avec { "source": "original", "outputFormat": "srt" } et traduisez les répliques en conservant la numérotation et les codes temporels.
  4. POST /v1/projects/{projectId}/dub avec le SRT traduit.
  5. Interrogez le point de terminaison de statut jusqu’à ce que status vaille success, ou attendez project.translation.completed.
  6. Téléchargez translatedVideoUrl (ou lipSync.videoUrl si une synchronisation labiale a été demandée).
  7. DELETE /v1/translate/{projectId} une fois les sorties stockées de votre côté.

Erreurs

Les échecs d’alignement détectés pendant l’exécution (TRANSLATED_SRT_UNMATCHED_CUES, TRANSLATED_SRT_MISSING_SEGMENTS) sont renvoyés par le point de terminaison de statut et le webhook d’échec, pas par cette requête.