Doublage
Doublez une vidéo dans une autre langue via la Direct API avec dub_media sur Morphic Dub, obtenez d’abord un devis, suivez la génération et lisez le montant régularisé.
dub_media double un enregistrement dans une autre langue avec la propre voix de ses locuteurs. Sur Morphic Dub (mdl_h2z5a7af7y50), il prend une vidéo de 10 minutes au plus et renvoie la même vidéo, de la même durée, avec chaque locuteur redoublé avec sa propre voix et ses gros plans synchronisés sur la nouvelle voix. C’est une génération longue, jusqu’à environ 13 minutes par minute de vidéo, et son montant facturé est une estimation au lancement, régularisée d’après ce que l’exécution a dépensé.
Choisir le modèle
| Modèle | model_id | Entrée | Résultat |
|---|---|---|---|
| Morphic Dub | mdl_h2z5a7af7y50 | une vidéo, jusqu’à 10 minutes | la vidéo, doublée et aux lèvres synchronisées |
| ElevenLabs Dubbing | voir le catalogue | un fichier audio ou vidéo, jusqu’à 30 minutes | un fichier audio, de la durée de la source |
Omettez model_id et une vidéo s’exécute sur le modèle de doublage par défaut de votre organisation, qui est Morphic Dub sur les forfaits payants. Nommez mdl_h2z5a7af7y50 pour l’imposer. Un fichier audio, ou une vidéo de plus de 10 minutes, est refusé sur Morphic Dub avec un 422 qui nomme la limite ; envoyez-les à ElevenLabs Dubbing.
Entrées
| Champ | Obligatoire | |
|---|---|---|
media_asset_id | oui | la vidéo à doubler : un identifiant d’asset issu de list_assets, l’asset d’une génération terminée, ou une URL HTTPS publique (voir Transmettre vos propres médias) |
target_language | oui | une étiquette BCP-47, comme hi, es ou pt-BR. Une langue par appel ; pour plusieurs marchés, faites un appel par langue. Morphic Dub double une variante régionale dans sa langue principale et le signale dans le notice de la réponse |
source_language | non | la langue parlée, sous forme d’étiquette BCP-47. Omettez-la pour qu’elle soit détectée ; définissez-la quand l’audio est bruité ou mélange des langues |
keyterms | non | noms, lieux et marques que la traduction garde tels quels, jusqu’à 5 mots chacun |
voice_mode | non | original (le réglage par défaut) garde la propre voix de chaque locuteur ; assigned fait parler chaque personne avec une voix du catalogue. Morphic Dub uniquement |
voices | non | qui parle avec quelle voix, jusqu’à 20 entrées ; nécessite voice_mode: "assigned". Voir Attribuer des voix |
source_transcript_asset_id | non | votre propre SRT minuté de la parole, dans la langue parlée, utilisé au lieu de transcrire ; sur Morphic Dub nécessite voice_mode: "assigned", sur ElevenLabs Dubbing nécessite source_language |
translation_asset_id | non | votre propre SRT minuté des lignes dans la langue cible, utilisé au lieu de traduire ; sur Morphic Dub nécessite voice_mode: "assigned", sur ElevenLabs Dubbing ne va qu’avec source_transcript_asset_id |
model_id | non | mdl_h2z5a7af7y50 pour Morphic Dub. Un appel portant voice_mode: "assigned", voices ou l’un des deux SRT sans modèle nommé s’exécute sur Morphic Dub ; nommer un autre modèle avec eux est refusé |
project_id | oui | le projet dans lequel le doublage est enregistré, issu de list_projects |
Une vidéo sans piste audio, ou une target_language identique à la source_language que vous avez définie, est refusée avant que quoi que ce soit ne soit facturé.
Attribuer des voix, apporter votre propre transcription ou traduction
Par défaut, chaque locuteur garde sa propre voix et Morphic transcrit et traduit la parole. Avec voice_mode: "assigned", chaque personne parle plutôt avec une voix du catalogue de voix de Morphic, et vous pouvez fournir votre propre texte. Sur Morphic Dub, une transcription ou une traduction de votre part nécessite assigned : les voix originales sont doublées en une seule passe qui ne prend ni distribution ni texte, et un appel qui envoie l’une des deux avec original est refusé avec un 422 qui nomme le champ.
- Listez les voix qu’un doublage peut attribuer :
list_voicesavecmodel_id: "mdl_h2z5a7af7y50". Il ne nécessite aucune autorisation et renvoie levoice_idde chaque voix. Voix du catalogue uniquement ; une voix de votre organisation est refusée - Pour un locuteur désigné par une image de son visage ou un extrait, passez l’identifiant de l’asset ou son URL HTTPS dans
speaker_asset_id; sinon, décrivez-le dansspeaker_description(jusqu’à 120 caractères, sans;,=ni"). Exactement l’un des deux par entrée, et chaque locuteur une seule fois ; les locuteurs que vous omettez reçoivent une voix du catalogue qui leur convient - Pour votre propre SRT, passez son URL HTTPS ou l’identifiant d’un document SRT déjà dans votre bibliothèque (
list_assetsl’affiche) danssource_transcript_asset_id(langue parlée) outranslation_asset_id(langue cible) ; une URL est ajoutée au projet comme document avant le lancement du doublage, comme tout autre fichier par URL. Les deux champs prennent deux fichiers différents
{
"input": {
"media_asset_id": "01928f4e-…",
"target_language": "es",
"voice_mode": "assigned",
"voices": [
{ "speaker_asset_id": "https://cdn.example.com/host-face.jpg", "voice_id": "0192b1c0-…" },
{ "speaker_description": "the narrator", "voice_id": "0192b1c1-…" }
],
"source_transcript_asset_id": "https://cdn.example.com/interview.en.srt",
"translation_asset_id": "https://cdn.example.com/interview.es.srt",
"model_id": "mdl_h2z5a7af7y50",
"project_id": "01928f4e-…"
}
}Les deux modes de voix sont facturés au même tarif.
Via MCP, les deux champs SRT fonctionnent aussi sur ElevenLabs Dubbing, avec model_name: "ElevenLabs Dubbing" et sans voix : chaque locuteur garde sa propre voix, source_language est obligatoire, puisque le moteur ne peut pas détecter la langue à partir d’une transcription, et translation_asset_id ne va qu’à côté de source_transcript_asset_id, avec un repère traduit en face de chaque repère de la transcription. Quand la plupart des repères commencent par une étiquette de locuteur, comme Mira: …, les étiquettes décident qui parle quand, une voix par locuteur. ElevenLabs Dubbing n’a pas de model_id, donc via la Direct API un doublage avec votre propre texte s’exécute sur Morphic Dub.
Obtenir d’abord un devis
Un doublage est tarifé sur la durée de la source, par langue. plan_media chiffre l’appel sans le lancer ; sur Morphic Dub, le devis est l’estimation que le lancement facturera, que la régularisation peut ensuite faire évoluer.
{
"input": {
"steps": [
{ "id": "dub", "tool_name": "dub_media", "arguments_json": "{\"media_asset_id\":\"01928f4e-…\",\"target_language\":\"hi\",\"model_id\":\"mdl_h2z5a7af7y50\"}" }
]
}
}Voir Obtenir un devis avant de dépenser pour l’appel complet.
Lancer le doublage
curl -s https://mcp.morphic.com/v1/direct/tools/dub_media \
-H "Authorization: Bearer $MORPHIC_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: dub-interview-hi-1" \
-d '{
"input": {
"media_asset_id": "https://cdn.example.com/interview.mp4",
"target_language": "hi",
"keyterms": ["Arjun", "Meera"],
"model_id": "mdl_h2z5a7af7y50",
"project_id": "01928f4e-…"
}
}'La réponse est 202 Accepted :
{
"result": {
"generation_id": "0192a7b3-a1c4-7e02-8f9d-1a2b3c4d5e6f",
"status": "queued",
"model_id": "mdl_h2z5a7af7y50",
"estimated_credits": 580,
"credits_settle_on_output_duration": true
},
"billing": { "credits_charged": 580, "credits_are_final": false }
}estimated_credits est l’estimation facturée maintenant ; credits_settle_on_output_duration: true indique qu’elle sera régularisée.
Suivre la génération
Un doublage sur Morphic Dub prend jusqu’à environ 13 minutes par minute de vidéo, et un clip court prend plus longtemps que ce ratio ne le suggère, puisque les étapes fixes coûtent le même temps quelle que soit la durée : un clip de 50 secondes a pris 17 minutes. N’interrogez pas dès le début. Attendez environ 13 fois la durée du clip, puis lisez avec une longue attente et espacez d’après le poll_after_seconds que porte chaque lecture.
sleep 660 # a 50 s clip: about 13 times its length
curl -s "https://mcp.morphic.com/v1/direct/generations/$GENERATION_ID?wait=45" \
-H "Authorization: Bearer $MORPHIC_API_KEY"Un webhook vous épargne la boucle : passez un webhook_id enregistré dans le corps de l’appel et Morphic appelle votre point de terminaison quand le doublage est final. Utilisez le webhook comme signal principal et un sondage occasionnel comme filet de sécurité.
Quand la génération est succeeded, ses assets contiennent la vidéo doublée. Le notice de la réponse est renseigné quand le doublage a été fait sur une autre entrée que celle donnée, comme une variante régionale doublée dans sa langue principale.
Ce que ça coûte
Morphic Dub est facturé sur la durée de la source aux tarifs API de votre organisation, par langue :
- Au lancement, l’estimation est facturée :
estimated_credits, aussi dansbilling.credits_charged - À la fin du doublage, le montant facturé est régularisé d’après ce que l’exécution a réellement dépensé. Le montant régularisé peut être inférieur ou supérieur à l’estimation, mais jamais plus de trois fois celle-ci ; au-delà, Morphic prend le reste à sa charge
- Une fois la génération finale,
billing.credits_chargedest le montant net régularisé etcredits_are_finalvauttrue. Un doublage qui échoue ou est annulé est intégralement remboursé
Relisez la génération une fois finale pour obtenir le montant régularisé ; un webhook n’est envoyé qu’à ce moment-là. Voir Crédits et consommation pour le registre.
Si vous rencontrez le moindre problème ou si vous avez des questions, n’hésitez pas à nous contacter. Nous serons ravis de vous aider. Écrivez-nous à support@morphic.com.
Générations
Suivez une génération de la Direct API jusqu’à son statut final par long-polling, lisez-en plusieurs à la fois et sachez à quel rythme interroger.
Webhooks
Recevez une notification signée lorsqu’une génération de la Direct API se termine, vérifiez-la, puis lisez la génération pour en obtenir le détail.