Dublagem

Duble um vídeo para outro idioma pela Direct API com dub_media no Morphic Dub, orce antes, acompanhe a geração e leia a cobrança acertada.

dub_media dubla uma gravação para outro idioma nas vozes dos próprios falantes. No Morphic Dub (mdl_h2z5a7af7y50), ela recebe um vídeo de até 10 minutos e devolve o mesmo vídeo, com a mesma duração, com cada falante regravado na própria voz e os close-ups com os lábios sincronizados com a nova fala. É uma geração longa, de até cerca de 13 minutos por minuto de vídeo, e a cobrança dela é uma estimativa no início, acertada pelo que a execução gastou.

Escolha o modelo

Modelomodel_idRecebeDevolve
Morphic Dubmdl_h2z5a7af7y50um vídeo, de até 10 minutoso vídeo, dublado e com os lábios sincronizados
ElevenLabs Dubbingveja o catálogoum arquivo de áudio ou vídeo, de até 30 minutosum arquivo de áudio, com a duração da origem

Omita model_id e um vídeo roda no modelo de dublagem padrão da sua organização, que é o Morphic Dub nos planos pagos. Informe mdl_h2z5a7af7y50 para fixá-lo. Um arquivo de áudio, ou um vídeo com mais de 10 minutos, é recusado no Morphic Dub com 422 citando o limite; envie esses para o ElevenLabs Dubbing.

Entradas

CampoObrigatório
media_asset_idsimo vídeo a dublar: um id de ativo de list_assets, o ativo de uma geração concluída ou uma URL HTTPS pública (veja Como passar sua própria mídia)
target_languagesimuma tag BCP-47, como hi, es ou pt-BR. Um idioma por chamada; para vários mercados, faça uma chamada por idioma. O Morphic Dub dubla uma variante regional no idioma principal dela e avisa isso no notice da resposta
source_languagenãoo idioma falado, como tag BCP-47. Omita para que ele seja detectado; defina-o quando o áudio tiver ruído ou misturar idiomas
keytermsnãonomes, lugares e marcas que a tradução mantém como falados, cada um com até 5 palavras
voice_modenãooriginal (o padrão) mantém a própria voz de cada falante; assigned faz cada pessoa falar com uma voz do catálogo. Apenas no Morphic Dub
voicesnãoquem fala com qual voz, até 20 entradas; exige voice_mode: "assigned". Veja Atribua vozes
source_transcript_asset_idnãoseu próprio SRT com tempos da fala, no idioma falado, usado no lugar da transcrição; no Morphic Dub exige voice_mode: "assigned", no ElevenLabs Dubbing exige source_language
translation_asset_idnãoseu próprio SRT com tempos das falas no idioma de destino, usado no lugar da tradução; no Morphic Dub exige voice_mode: "assigned", no ElevenLabs Dubbing vai apenas junto com source_transcript_asset_id
model_idnãomdl_h2z5a7af7y50 para o Morphic Dub. Uma chamada com voice_mode: "assigned", voices ou um dos SRTs sem modelo informado roda no Morphic Dub; informar outro modelo com eles é recusado
project_idsimo projeto onde a dublagem vai ficar, de list_projects

Um vídeo sem faixa de áudio, ou uma target_language igual à source_language que você definiu, é recusado antes de qualquer cobrança.

Atribua vozes, traga a sua própria transcrição ou tradução

Por padrão, cada falante mantém a própria voz e o Morphic transcreve e traduz a fala. Com voice_mode: "assigned", cada pessoa fala com uma voz do catálogo de vozes do Morphic, e você pode entregar o seu próprio texto. No Morphic Dub, uma transcrição ou tradução sua exige assigned: as vozes originais são dubladas em uma única passagem que não recebe elenco nem texto, e uma chamada que envia qualquer um dos dois com original é recusada com 422 citando o campo.

  1. Liste as vozes que uma dublagem pode atribuir: list_voices com model_id: "mdl_h2z5a7af7y50". Não exige escopo e devolve o voice_id de cada voz. Apenas vozes do catálogo; uma voz da sua organização é recusada
  2. Para um falante identificado por uma imagem do rosto ou um clipe, passe o id do ativo ou a URL HTTPS dele como speaker_asset_id; caso contrário, descreva-o em speaker_description (até 120 caracteres, sem ;, = nem "). Exatamente um dos dois por entrada, e cada falante uma única vez; os falantes que você deixar de fora recebem uma voz adequada do catálogo
  3. Para o seu próprio SRT, passe a URL HTTPS dele ou o id de um documento SRT que já está na sua biblioteca (list_assets o mostra) como source_transcript_asset_id (idioma falado) ou translation_asset_id (idioma de destino); uma URL é adicionada ao projeto como documento antes de a dublagem começar, como qualquer outro arquivo por URL. Os dois campos recebem dois arquivos diferentes
{
  "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-…"
  }
}

Os dois modos de voz são cobrados pela mesma tarifa.

Pelo MCP, os dois campos de SRT funcionam também no ElevenLabs Dubbing, com model_name: "ElevenLabs Dubbing" e sem vozes: cada falante mantém a própria voz, source_language é obrigatório, já que o motor não consegue detectar o idioma a partir de uma transcrição, e translation_asset_id vai apenas ao lado de source_transcript_asset_id, com uma marcação traduzida sobre cada marcação da transcrição. Quando a maioria das marcações começa com um rótulo de falante, como Mira: …, os rótulos decidem quem fala quando, uma voz por falante. O ElevenLabs Dubbing não tem model_id, então, pela Direct API, uma dublagem com o seu próprio texto roda no Morphic Dub.

Orce antes

Uma dublagem é cobrada pela duração da origem, por idioma. plan_media calcula o preço da chamada sem iniciá-la; no Morphic Dub, o orçamento é a estimativa que o início vai cobrar, e que o acerto pode mover depois.

{
  "input": {
    "steps": [
      { "id": "dub", "tool_name": "dub_media", "arguments_json": "{\"media_asset_id\":\"01928f4e-…\",\"target_language\":\"hi\",\"model_id\":\"mdl_h2z5a7af7y50\"}" }
    ]
  }
}

Veja Orce antes de gastar para a chamada completa.

Inicie a dublagem

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-…"
        }
      }'

A resposta é 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 é a estimativa cobrada agora; credits_settle_on_output_duration: true indica que ela será acertada.

Acompanhe a geração

Uma dublagem no Morphic Dub leva até cerca de 13 minutos por minuto de vídeo, e um clipe curto leva mais do que essa proporção sugere, já que as etapas fixas custam o mesmo seja qual for a duração: um clipe de 50 segundos levou 17 minutos. Não consulte desde o início. Espere cerca de 13 vezes a duração do clipe, depois leia com uma espera longa e vá espaçando as consultas a partir do poll_after_seconds que cada leitura traz.

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"

Um webhook dispensa o loop: passe um webhook_id registrado no corpo da chamada e o Morphic chama o seu endpoint quando a dublagem for final. Use o webhook como sinal principal e uma consulta ocasional como rede de segurança.

Quando a geração estiver succeeded, os assets dela contêm o vídeo dublado. O notice da resposta é preenchido quando a dublagem rodou com uma entrada diferente da informada, como uma variante regional dublada no idioma principal dela.

Quanto custa

O Morphic Dub é cobrado pela duração da origem, nas tarifas de API da sua organização, por idioma:

  1. No início, a estimativa é cobrada: estimated_credits, também em billing.credits_charged
  2. Quando a dublagem termina, a cobrança é acertada pelo que a execução realmente gastou. O valor acertado pode ficar abaixo ou acima da estimativa, mas nunca mais de três vezes ela; acima disso, o Morphic absorve o restante
  3. Quando a geração é final, billing.credits_charged é o valor líquido acertado e credits_are_final é true. Uma dublagem que falha ou é cancelada é reembolsada por inteiro

Leia a geração de novo quando ela for final para ver o valor acertado; um webhook só é enviado quando ela é. Veja Créditos e uso para o extrato.


Se você tiver algum problema ou alguma dúvida, entre em contato. Teremos prazer em ajudar. Escreva para nós em support@morphic.com.

Nesta página