Vídeo com IA: Claude Code, Codex e ElevenLabs · Capítulo 16 de 25 · 24 min
Clonar ou desenhar uma voz com consentimento por escrito e verificação
Escolha entre clone instantâneo e profissional ou voz desenhada por descrição e crie a voz por API só depois de registrar a autorização escrita de quem fala.
Este capítulo faz parte do curso gratuito Vídeo com IA: Claude Code, Codex e ElevenLabs.
Um arquivo de áudio no seu computador não é uma voz liberada para clonagem. Antes de enviar qualquer gravação, três perguntas precisam de resposta registrada: de quem é a voz, o que essa pessoa autorizou e onde a voz vai aparecer. Pular essa etapa transforma um atalho técnico em risco para o canal, para o cliente e para a pessoa clonada.
Não resolver isso custa caro mesmo quando ninguém reclama. A Política de Uso Proibido da ElevenLabs, atualizada em 17/08/2026, proíbe replicar a voz de outra pessoa sem consentimento ou direito legal e proíbe imitar candidatos políticos e autoridades eleitas mesmo com autorização; uma conta suspensa no meio de uma série semanal leva junto todas as vozes do projeto.
Nesta aula você decide entre três caminhos (clone instantâneo, clone profissional e voz desenhada por descrição), registra o consentimento por escrito numa ficha que o script lê antes de enviar o áudio e cria a voz por API. No fim, o voice_id resultante entra no script de narração da aula anterior.
Diferencie clone instantâneo, profissional e voz desenhada
O Instant Voice Clone (IVC) funciona como um retrato rápido: a documentação recomenda de um a dois minutos de áudio limpo e o recurso existe a partir do plano Starter, de US$ 6 por mês em 09/10/2026. O blog de lançamento do v4 fala em alta fidelidade com dez segundos de áudio, mas isso é promessa de anúncio, não a recomendação operacional; grave os dois minutos.
O Professional Voice Clone (PVC) é uma escultura feita com tempo: pede de 30 a 180 minutos de áudio de boa qualidade, um ajuste fino que costuma levar de 3 a 6 horas e pode chegar a 24, e começa no plano Creator, de US$ 22 por mês. A regra que mais surpreende: o PVC só pode ser criado com a sua própria voz, mesmo que outra pessoa tenha assinado autorização. O dono da voz passa pela verificação, lendo frases mostradas na hora (a comunidade chama esse passo de Voice CAPTCHA); a página oficial de PVC, lida em 12/10/2026, diz que depois de falhas você espera 24 horas ou fala com o suporte, e contornar a verificação é proibido.
Voice Design segue outra lógica: você descreve a voz em texto, de 20 a 1.000 caracteres, e o modelo gera prévias de uma identidade original. Os modelos são eleven_ttv_v3, com mais de 70 idiomas incluindo português, e eleven_multilingual_ttv_v2. Se ninguém autorizou a clonagem, este é o caminho. A documentação do v4 avisa que uma voz desenhada pode render menos no modelo novo; por isso a prévia é ouvida no eleven_v4 antes de salvar.
Três caminhos para ter uma voz no projeto
| Caminho e plano | O que pede | Quando usar |
|---|---|---|
| IVC, a partir do Starter | Um a dois minutos de áudio limpo; POST /v1/voices/add | Voz real autorizada por escrito, com teste rápido |
| PVC, a partir do Creator | 30 a 180 minutos de áudio, verificação por leitura de frases, 3 a 6 horas de ajuste (até 24) | Só a sua própria voz, para uso longo e fidelidade máxima |
| Voice Design (eleven_ttv_v3) | Descrição de 20 a 1.000 caracteres; POST /v1/text-to-voice/design | Identidade original, sem clonar ninguém; ouça a prévia no eleven_v4 antes de salvar |
O plano Free não tem licença comercial; o Starter inclui licença comercial e IVC, e o Creator inclui o PVC. Confirme o valor no checkout.
Fonte: ElevenLabs, documentação de clonagem de voz, Voice Design e página de planos, 09/10/2026

Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
Registre o consentimento antes de enviar qualquer áudio
A ficha de consentimento é um arquivo JSON que o seu script lê antes de mandar a gravação. Ela não substitui contrato nem análise jurídica; serve para que nenhuma voz entre no pipeline sem que alguém tenha registrado quem autorizou, para qual finalidade, em quais canais, até quando e onde está o documento assinado. Guarde ficha e documento numa pasta privada, fora do Git. Se a sua empresa ainda não tem regra escrita para isso, comece pela política de uma página que o uso de IA pede.
O consentimento útil é por escrito, específico e revogável: diz “narração dos vídeos do canal no YouTube e no Instagram até 31/12/2027”, não “uso da voz”. Se a pessoa revogar, a ficha muda para revogado: true e o script recusa qualquer geração nova com aquele voice_id; o que fazer com os vídeos já publicados é decisão do responsável, não do agente.
{
"titular": "Rafa, titular do canal Cozinha da Rafa",
"propria_voz_de_quem_opera_a_conta": true,
"finalidade": "Narração de vídeos de receitas do canal Cozinha da Rafa",
"canais_autorizados": ["YouTube", "Instagram", "TikTok"],
"vigencia_ate": "2027-12-31",
"assinado_em": "2026-10-09",
"evidencia_consentimento": "privado/vozes/rafa-autorizacao-assinada.pdf",
"consentimento_confirmado": true,
"revogado": false,
"envolve_figura_politica": false,
"caminho": "IVC",
"audio_de_origem": "midia/raw/rafa_voz_2min.wav",
"voice_id": null,
"observacao": "Ficha operacional do pipeline; não substitui contrato nem análise jurídica."
}Clonar por atalho ou clonar com ficha
Atalho que expõe o canal
Coluna a evitar
- Envia o áudio porque ele já estava na pasta
- Autorização verbal, sem finalidade nem prazo
- Tenta PVC da voz de um cliente que assinou autorização
- Ignora requires_verification e já usa a voz
- Voz revogada continua gerando áudio no lote
Fluxo que o script aplica
Coluna recomendada
- Script lê a ficha e recusa sem evidência anexada
- Finalidade, canais e vigência escritos e assinados
- PVC só com a própria voz; terceiro autorizado fica no IVC
- requires_verification diferente de false interrompe o uso
- revogado: true bloqueia novas gerações com aquele voice_id
Crie o clone instantâneo e a voz desenhada por API
O IVC é criado pela rota POST /v1/voices/add, em multipart, com name, files, remove_background_noise, description e labels. A resposta traz voice_id e requires_verification. Note que a criação do clone não usa model_id: o clone é a voz; o modelo que fala com ela (o eleven_v4, por exemplo) só entra depois, na narração. As duas versões abaixo leem a ficha antes de enviar e param se faltar qualquer peça.
Criar um Instant Voice Clone com a ficha como porteira
Python
Uso, na raiz video-ia: python scripts/clonar_ivc.py privado/vozes/rafa.json. O script valida a ficha, pede confirmação, cria o clone e grava o voice_id de volta na ficha só se a verificação não estiver pendente.
# scripts/clonar_ivc.py: cria um IVC só se a ficha de consentimento permitir (SDK 2.71.0).
import json
import sys
from pathlib import Path
from elevenlabs.client import ElevenLabs
ficha_path = Path(sys.argv[1])
ficha = json.loads(ficha_path.read_text(encoding="utf-8"))
# Porteira: cada condição barra o envio antes de qualquer chamada à API.
problemas = []
if not ficha.get("titular") or not ficha.get("finalidade"):
problemas.append("titular e finalidade são obrigatórios")
if not ficha.get("consentimento_confirmado") or ficha.get("revogado"):
problemas.append("consentimento ausente ou revogado")
if ficha.get("envolve_figura_politica"):
problemas.append("a política de uso veda imitar candidatos políticos e autoridades eleitas")
if not Path(ficha.get("evidencia_consentimento", "")).is_file():
problemas.append("documento de consentimento não encontrado")
if ficha.get("caminho") != "IVC":
problemas.append("esta rotina cria apenas IVC")
if ficha.get("voice_id"):
problemas.append("a ficha já tem voice_id; revise antes de criar outro clone")
audio = Path(ficha.get("audio_de_origem", ""))
if not audio.is_file():
problemas.append("áudio de origem não encontrado")
if problemas:
raise SystemExit("Bloqueado: " + "; ".join(problemas))
if input(f"Enviar {audio.name} à ElevenLabs para clonar? Digite SIM: ").strip() != "SIM":
raise SystemExit("Cancelado.")
cliente = ElevenLabs() # ELEVENLABS_API_KEY no ambiente
with audio.open("rb") as arquivo:
voz = cliente.voices.ivc.create(
name=f"{ficha['titular'][:40]} (IVC)",
files=[arquivo],
remove_background_noise=False, # grave limpo em vez de depender do filtro
description=ficha["finalidade"][:200],
)
# Campo ausente não é dispensa: só seguimos com requires_verification == False.
if voz.requires_verification is not False:
raise SystemExit(f"Voz {voz.voice_id} criada, mas com verificação pendente. Conclua o fluxo oficial.")
ficha["voice_id"] = voz.voice_id
ficha_path.write_text(json.dumps(ficha, ensure_ascii=False, indent=2), encoding="utf-8")
print(f"voice_id {voz.voice_id} gravado na ficha. Gere uma amostra com eleven_v4 antes de usar.")curl
A mesma criação pela API direta. O jq lê a ficha e o --form-string impede que o nome da voz seja interpretado como caminho de arquivo.
#!/usr/bin/env bash
# uso, na raiz video-ia: bash scripts/clonar_ivc.sh privado/vozes/rafa.json
set -euo pipefail
FICHA="$1"
: "$ELEVENLABS_API_KEY"
# Porteira: consentimento confirmado, não revogado, sem figura política, evidência presente.
jq -e '.consentimento_confirmado == true and .revogado == false
and .envolve_figura_politica == false and .caminho == "IVC"
and .voice_id == null' "$FICHA" > /dev/null \
|| { echo "Bloqueado pela ficha."; exit 1; }
EVIDENCIA=$(jq -r '.evidencia_consentimento' "$FICHA")
AUDIO=$(jq -r '.audio_de_origem' "$FICHA")
NOME=$(jq -r '.titular' "$FICHA" | cut -c1-40)
test -f "$EVIDENCIA" && test -f "$AUDIO"
read -rp "Enviar $AUDIO para clonar? Digite SIM: " OK
[ "$OK" = "SIM" ] || exit 1
curl --fail-with-body -sS -X POST "https://api.elevenlabs.io/v1/voices/add" \
-H "xi-api-key: $ELEVENLABS_API_KEY" \
--form-string "name=$NOME (IVC)" \
-F "files=@$AUDIO" \
-F "remove_background_noise=false" \
-o privado/ivc_resposta.json
# Só grava o voice_id se requires_verification vier explicitamente false.
if jq -e '.requires_verification == false' privado/ivc_resposta.json > /dev/null; then
ID=$(jq -r '.voice_id' privado/ivc_resposta.json)
jq --arg id "$ID" '.voice_id = $id' "$FICHA" > "$FICHA.tmp" && mv "$FICHA.tmp" "$FICHA"
echo "voice_id $ID gravado na ficha."
else
echo "Verificação pendente ou não informada. Não use a voz ainda."; exit 2
fiVoice Design trabalha em duas chamadas. A primeira, POST /v1/text-to-voice/design, recebe a descrição e, se você quiser escolher a frase de teste, um text de 100 a 1.000 caracteres, e devolve prévias, cada uma com um generated_voice_id e o áudio de amostra; a segunda, POST /v1/text-to-voice, salva a prévia escolhida como voz da conta. A rota antiga create-previews está marcada como descontinuada. Desde 28/09/2026, pedir uma geração enquanto outra está em andamento devolve o código 409; o script trata esse caso esperando, sem disparar pedidos repetidos.
# scripts/desenhar_voz.py: cria uma voz original por descrição (Voice Design).
# Uso: python scripts/desenhar_voz.py -> gera prévias em audio/previas/
# python scripts/desenhar_voz.py salvar 2 -> salva a prévia de número 2
import base64
import json
import sys
import time
from pathlib import Path
from elevenlabs.client import ElevenLabs
from elevenlabs.core.api_error import ApiError
DESCRICAO = (
"Voz adulta masculina, calorosa e bem-humorada, sotaque nordestino leve, "
"português do Brasil, ritmo de conversa na cozinha, articulação clara. "
"Identidade original, sem imitar nenhuma pessoa real."
)
AMOSTRA = (
"Agora a massa descansa por dez minutos. Enquanto isso, separe a goiabada "
"em cubos pequenos e deixe a frigideira aquecendo em fogo baixo."
)
assert 20 <= len(DESCRICAO) <= 1000, "A descrição precisa ter de 20 a 1.000 caracteres."
assert 100 <= len(AMOSTRA) <= 1000, "O texto da prévia precisa ter de 100 a 1.000 caracteres."
cliente = ElevenLabs()
pasta = Path("audio/previas"); pasta.mkdir(parents=True, exist_ok=True)
estado = Path("audio/previas/previas.json")
if len(sys.argv) == 1:
for tentativa in range(5):
try:
resposta = cliente.text_to_voice.design(
model_id="eleven_ttv_v3",
voice_description=DESCRICAO,
text=AMOSTRA,
)
break
except ApiError as erro:
if erro.status_code != 409:
raise
print("Geração anterior em andamento (409). Aguardando 20 s.")
time.sleep(20)
else:
raise SystemExit("Ainda em andamento depois de cinco esperas. Tente mais tarde.")
ids = []
for i, previa in enumerate(resposta.previews, 1):
(pasta / f"previa_{i}.mp3").write_bytes(base64.b64decode(previa.audio_base_64))
ids.append(previa.generated_voice_id)
estado.write_text(json.dumps(ids, indent=2), encoding="utf-8")
print(f"{len(ids)} prévias em {pasta}. Ouça e rode: python scripts/desenhar_voz.py salvar N")
else:
escolhida = json.loads(estado.read_text(encoding="utf-8"))[int(sys.argv[2]) - 1]
voz = cliente.text_to_voice.create(
voice_name="Assistente da Cozinha (voz desenhada)",
voice_description=DESCRICAO,
generated_voice_id=escolhida,
)
print(f"Voz salva: voice_id {voz.voice_id}. Ouça no eleven_v4 antes do lote: a voz desenhada pode render menos no modelo novo.")Da voz criada à voz em produção
Siga os sete passos
Da autorização à voz testada em sete passos
A ordem importa: nenhum áudio sai da sua máquina antes do passo 3.
Passo 1: Defina se o projeto precisa de uma voz real
Muitas peças pedem só uma identidade consistente, não uma pessoa específica.
Deu certo quando: Está escrito se o caso é clone de alguém ou voz original.
Erro comum: Clonar uma pessoa quando uma voz desenhada resolveria.
Passo 2: Registre a ficha e anexe a autorização assinada
Finalidade, canais, vigência e caminho do documento na pasta privada.
Deu certo quando: O script lê a ficha sem erro e encontra o arquivo de evidência.
Erro comum: Tratar o preenchimento da ficha como se fosse o consentimento da pessoa.
Passo 3: Escolha o caminho e o plano
Starter para IVC, Creator para PVC, qualquer plano pago para Voice Design com uso comercial.
Deu certo quando: O caminho da ficha é compatível com a árvore de decisão.
Erro comum: Tentar PVC da voz de um cliente porque ele assinou uma autorização.
Passo 4: Prepare a gravação ou a descrição
IVC: um a dois minutos sem música nem eco. Voice Design: 20 a 1.000 caracteres.
Deu certo quando: O áudio está limpo e a descrição não cita pessoa real.
Erro comum: Gravar com trilha ao fundo ou descrever uma pessoa famosa para imitá-la.
Passo 5: Crie a voz por API
IVC por POST /v1/voices/add; Voice Design por design e depois text-to-voice.
Deu certo quando: A resposta traz voice_id e requires_verification igual a false.
Erro comum: Passar um model_id de TTS na criação do clone.
Passo 6: Conclua a verificação quando ela for pedida
No PVC, o dono da voz lê as frases da verificação; depois de falhas, espere 24 horas ou fale com o suporte.
Deu certo quando: O fluxo oficial libera a voz sem nenhum contorno.
Erro comum: Usar a voz com requires_verification igual a true.
Passo 7: Gere uma amostra com eleven_v4 e peça aprovação
Clone criado antes do v4: retreine em My Voices primeiro. Depois, scripts/narrar_v4.py da aula 15 com o voice_id.
Deu certo quando: O titular ouve e aprova por escrito o resultado e o uso.
Erro comum: Presumir fidelidade porque a criação terminou sem erro, ou gerar no v4 com um clone que não foi retreinado.
No fim você tem: Um voice_id com ficha, evidência e amostra aprovada, pronto para a narração.
Leve o clone ao v4
Um clone que já falava no v3 não fala no v4 de graça. A página do Eleven v4 diz que IVCs e PVCs existentes precisam de retreino, feito em My Voices, e a documentação de capacidades registrava em 12/10/2026 que o suporte a PVC no v4 ainda estava em distribuição gradual: se o botão do Eleven v4 não aparece no seu PVC, espere a distribuição em vez de abrir chamado. Só então gere a amostra do passo 7. Deu certo quando a amostra no eleven_v4 sai com a mesma identidade da voz no v3; o erro comum é comparar o v4 sem retreino com o v3 e concluir que o modelo novo piorou a voz.
Com o PVC pronto, resta uma decisão por chamada. Desde 28/09/2026, use_pvc_as_ivc existe nas duas rotas, Text to Speech e Text to Dialogue, com padrão false: ligado, a API fala com a versão instantânea do mesmo PVC, que responde mais rápido e perde um pouco da fidelidade. Se a peça é narração de vídeo, deixe false; se é uma prévia para o cliente aprovar o texto, ou um agente de voz em tempo real, ligue. O trecho abaixo mostra o campo na Text to Speech, a chamada mais curta para uma voz só.
# scripts/previa_rapida.py: prévia de texto com a versão instantânea do PVC.
# Uso: python scripts/previa_rapida.py "Hoje tem bolo de rolo na Cozinha da Rafa."
import os
import sys
from pathlib import Path
from elevenlabs.client import ElevenLabs
cliente = ElevenLabs()
audio = cliente.text_to_speech.convert(
voice_id=os.environ["ELEVENLABS_VOICE_ID"], # PVC já retreinado no v4
model_id="eleven_v4",
language_code="pt",
text=sys.argv[1],
output_format="mp3_44100_128",
use_pvc_as_ivc=True, # latência antes da fidelidade; na narração final, deixe False
)
Path("audio").mkdir(exist_ok=True)
Path("audio/previa_rapida.mp3").write_bytes(b"".join(audio))
print("Prévia em audio/previa_rapida.mp3; a narração do lote continua com use_pvc_as_ivc=False.")Se a figura ultrapassar a área visível, deslize para os lados. Pelo teclado, foque a figura e use as setas.
O v4 reproduz o que ouve, inclusive o que você não queria
Grave limpo, num só estilo de fala, e deixe o filtro de ruído desligado: o modelo copia o estalo do microfone com a mesma fidelidade com que copia a voz.
- Ambiente silencioso, sem música, sem eco e sem ventilador ligado.
- Um estilo só por clone: conversa de cozinha ou narração formal, não os dois no mesmo áudio.
- Plosivas e cliques de boca ficam na voz clonada; use filtro anti-pop e grave a 20 cm do microfone.
- Dois minutos limpos valem mais que dez minutos com ruído; o remove_background_noise não substitui a gravação boa.
O teste: Ouça o áudio de origem com fone antes de enviar: tudo o que você percebe, o clone vai repetir.
alexandrecaramaschi.com/educacao/frontends-com-vibecoding
Transforme o fluxo numa skill
Tudo o que esta aula fez à mão cabe numa skill, o manual que o agente lê antes de agir, como visto na aula 08. O acervo do Vibehub Academy, consultado em 12/10/2026, lista entre 481 assistentes de vídeo e voz um assistente de clonagem com ética e consentimento, e a lição que vale copiar em palavras próprias é a forma: a ética não é um aviso no fim, é o contrato de entrada da skill. Escreva a entrada como o que precisa existir antes de qualquer chamada (ficha com titular, finalidade, canais, vigência e evidência; caminho IVC, PVC ou Voice Design; áudio limpo ou descrição sem pessoa real) e a saída como o que a skill devolve (voice_id gravado na ficha, status de verificação, amostra no v4 e o nome de quem aprovou). Entrada incompleta, a skill para e diz o que falta; nunca improvisa.
A segunda regra do mesmo método é de segurança: a chave da ElevenLabs mora num .env que só a máquina lê, carregado pela aula 03, e nunca passa pelo chat, nem colada num prompt, nem mostrada num relatório. Deu certo quando a skill roda a ficha de teste e recusa a ficha sem evidência; o erro comum é pedir a chave ao usuário dentro do fluxo. Os passos abaixo são o contrato, para conferir antes de cada voz nova.
Contrato da skill de clonagem com consentimento
Os quatro primeiros passos são a entrada, que existe antes de qualquer chamada; os quatro últimos são a saída, o que a skill devolve.
Passo 1: Entrada: confira a ficha
Ficha com titular, finalidade, canais, vigência e caminho do documento assinado.
Passo 2: Entrada: confira o caminho escolhido
Caminho escolhido pela árvore de decisão: IVC, PVC só com a própria voz, ou Voice Design.
Passo 3: Entrada: confira o material de origem
Áudio limpo num só estilo, ou descrição de 20 a 1.000 caracteres sem pessoa real.
Passo 4: Entrada: confira onde mora a chave
ELEVENLABS_API_KEY no .env que só a máquina lê; nunca no chat nem no relatório.
Passo 5: Saída: grave o voice_id na ficha
voice_id gravado na ficha só com requires_verification igual a false.
Passo 6: Saída: retreine o clone anterior ao v4
Clone anterior ao v4 retreinado em My Voices antes da amostra.
Passo 7: Saída: registre a amostra aprovada
Amostra de três frases no eleven_v4 com o nome de quem aprovou.
Passo 8: Saída: entregue a tabela final
Tabela final com o primeiro nome do titular, caminho, voice_id e status; sem dado pessoal a mais.
No fim você tem: Entrada incompleta, a skill para e diz o que falta; com a saída completa, a voz entra em produção.
Aprove a voz antes de reutilizá-la
Se a pessoa não autorizou a clonagem, use Voice Design com identidade original. Se o pedido é PVC de terceiro, não execute: a autorização não remove a regra da própria voz. Se a resposta trouxer verificação pendente, interrompa a produção até o fluxo oficial terminar. Se houver revogação, bloqueie novas gerações e leve a decisão sobre o que já foi publicado ao responsável; esse tipo de decisão de governança na adoção de IA não cabe ao agente.
Na Cozinha da Rafa, Rafa autoriza a própria voz para os três vídeos semanais, e a equipe começa pelo IVC com dois minutos gravados na cozinha silenciosa, à noite. Se o canal crescer, ela mesma faz o PVC, passa pela verificação e retreina a voz no v4 antes de trocar o modelo do canal. A voz do “assistente” que lê os tempos de forno é desenhada por descrição, e um chef convidado só entra com ficha própria, IVC e autorização escrita para aquele episódio.
Guia prático: ajustar uma voz sem recomeçar e apagar a que foi revogada
Criada a voz e registrado o consentimento na aula, este guia cuida do que vem depois: o remix muda idade, ritmo ou sotaque de uma voz desenhada sem perder a identidade, a semente (seed) permite gerar de novo a prévia aprovada e uma revogação na ficha vira a exclusão da voz na conta, com data registrada.
Funções, casos de uso e aplicações
Funções
Controles de voz desenhada e de ciclo de vida que a aula não usou
| Função ou recurso | O que faz | Quando usar | Desde |
|---|---|---|---|
| POST /v1/text-to-voice/{voice_id}/remix | Recebe uma voz existente e a descrição da mudança e devolve prévias com generated_voice_id, salvas depois por /v1/text-to-voice | Deixar o assistente da cozinha mais calmo ou mais velho sem desenhar do zero | Código 409 em geração simultânea desde 28/09/2026 |
| seed no design e no remix | Mesma semente com as mesmas entradas gera a mesma voz | Gerar de novo a prévia aprovada numa conta de outro projeto | Referência de 12/10/2026 |
| guidance_scale (padrão 5 no design e 2 no remix) | Quanto o resultado segue a descrição; valor alto pode soar artificial | Descrição longa e detalhada pede valor mais baixo | Referência de 12/10/2026 |
| loudness (de -1 a 1, padrão 0,5; 0 fica perto de -24 LUFS) | Define o volume da voz gerada | Voz que entra muito baixa sob a trilha da aula 18 | Referência de 12/10/2026 |
| should_enhance | A IA expande a descrição antes de gerar | Primeira rodada de ideias, com descrição curta | Referência de 12/10/2026 |
| reference_audio_base64 com prompt_strength (só eleven_ttv_v3) | Parte de um áudio de referência e equilibra o peso dele contra o texto | Só com ficha de consentimento do dono do áudio, como num clone | Referência de 12/10/2026 |
| DELETE /v1/voices/{voice_id} | Apaga a voz da conta | Consentimento revogado ou vigência vencida na ficha | Referência de 12/10/2026 |
Fonte: ElevenLabs, referências Design a voice, Remix a voice e Voices; changelog de 28/09/2026
Casos de uso
Bianca, produtora de uma escola de idiomas online em Florianópolis
Educação
Dor
A voz desenhada do mascote ficou jovem demais para as aulas do nível avançado, e desenhar outra do zero muda toda a identidade do personagem.
Solução
Remix da voz salva com a descrição "mesma voz, dez anos mais velha, ritmo mais pausado", semente fixa e prévia ouvida no eleven_v4 antes de salvar.
Resultado
Peça a três professores que ouçam a voz antiga e a nova lado a lado e digam se é o mesmo personagem; registre a semente da prévia escolhida.
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
Rodrigo, gerente de projetos de uma agência de vídeos institucionais para cooperativas no Paraná
Marketing digital
Dor
Um locutor contratado encerrou o contrato e revogou o uso da voz, mas o clone continuava na conta e qualquer pessoa da equipe podia usá-lo.
Solução
A ficha passa a revogado: true, o script apaga a voz pela API e grava a data na ficha; os vídeos já publicados seguem para a decisão do responsável.
Resultado
Tente uma geração com o voice_id antigo logo depois: ela precisa falhar. Revise as fichas a cada trimestre para achar vigências vencidas.
Cenário construído para fins didáticos. Números não correspondem a cliente específico.
Na prática
Dois scripts para o projeto video-ia. O primeiro faz o remix da voz do assistente da cozinha, criada na aula com scripts/desenhar_voz.py, com semente fixa, e grava as prévias em audio/previas/; salvar a escolhida segue o mesmo text_to_voice.create da aula. O segundo lê a ficha e, se ela estiver revogada, apaga a voz e anota quando.
# Uso, na raiz video-ia: python scripts/remixar_voz.py VOICE_ID_DO_ASSISTENTE
import base64, json, sys, time
from pathlib import Path
from elevenlabs.client import ElevenLabs
from elevenlabs.core.api_error import ApiError
MUDANCA = "Mesma voz, uns dez anos mais velha, ritmo mais pausado, mesma simpatia."
AMOSTRA = ("Agora a massa descansa por dez minutos. Enquanto isso, separe a goiabada "
"em cubos pequenos e deixe a frigideira aquecendo em fogo baixo.")
SEMENTE = 1012
cliente = ElevenLabs()
for tentativa in range(5):
try:
r = cliente.text_to_voice.remix(
voice_id=sys.argv[1], voice_description=MUDANCA, text=AMOSTRA,
seed=SEMENTE, # mesma semente e mesmas entradas, mesma voz
guidance_scale=2, # padrão do remix; alto demais soa artificial
)
break
except ApiError as erro:
if erro.status_code != 409:
raise
print("Geração em andamento (409). Aguardando 20 s."); time.sleep(20)
else:
raise SystemExit("Ainda em andamento depois de cinco esperas.")
pasta = Path("audio/previas"); pasta.mkdir(parents=True, exist_ok=True)
ids = []
for i, previa in enumerate(r.previews, 1):
(pasta / f"remix_{i}.mp3").write_bytes(base64.b64decode(previa.audio_base_64))
ids.append(previa.generated_voice_id)
(pasta / "remix.json").write_text(json.dumps({"seed": SEMENTE, "mudanca": MUDANCA, "ids": ids},
ensure_ascii=False, indent=2), encoding="utf-8")
print(f"{len(ids)} prévias de remix em {pasta}; ouça no eleven_v4 antes de salvar.")#!/usr/bin/env bash
# uso, na raiz video-ia: bash scripts/revogar_voz.sh privado/vozes/convidado.json
set -euo pipefail
FICHA="$1"
: "$ELEVENLABS_API_KEY"
jq -e '.revogado == true and .voice_id != null' "$FICHA" > /dev/null \
|| { echo "Ficha não revogada ou sem voice_id: nada a fazer."; exit 0; }
ID=$(jq -r '.voice_id' "$FICHA")
read -rp "Apagar a voz $ID da conta? Digite SIM: " OK; [ "$OK" = "SIM" ] || exit 1
curl --fail-with-body -sS -X DELETE "https://api.elevenlabs.io/v1/voices/$ID" \
-H "xi-api-key: $ELEVENLABS_API_KEY"
# Registra a exclusão; vídeos já publicados ficam para a decisão do responsável
jq --arg d "$(date +%F)" '.apagada_em = $d' "$FICHA" > "$FICHA.tmp" && mv "$FICHA.tmp" "$FICHA"
echo "Voz $ID apagada e ficha atualizada."Ajustar e encerrar uma voz em quatro passos
Passo 1: Rode o remix na voz desenhada
python scripts/remixar_voz.py <voice_id> com a mudança em uma frase.
Deu certo quando: Prévias em audio/previas/ e a semente gravada em remix.json.
Erro comum: Remixar uma voz clonada de terceiro sem ficha para a nova versão.
Passo 2: Ouça no eleven_v4 e salve a escolhida
Use o generated_voice_id da prévia com o text_to_voice.create da aula.
Deu certo quando: Uma pessoa aprova a nova voz por escrito.
Erro comum: Salvar a prévia sem ouvir no modelo do canal.
Passo 3: Marque a revogação na ficha quando ela chegar
revogado: true, com a data do pedido do titular.
Deu certo quando: O script de narração da aula 15 passa a recusar o voice_id.
Erro comum: Esperar o próximo lote para atualizar a ficha.
Passo 4: Apague a voz e teste
bash scripts/revogar_voz.sh privado/vozes/<titular>.json.
Deu certo quando: A ficha ganha apagada_em e uma geração com o id antigo falha.
Erro comum: Apagar a voz e também os vídeos publicados sem falar com o responsável.
No fim você tem: Vozes ajustáveis sem perder a identidade e vozes revogadas fora da conta, com data na ficha.
Armadilhas
Remix e áudio de referência também pedem ficha
Se a entrada é a voz ou o áudio de alguém, o resultado segue as regras de clonagem da aula.
- Remix de clone de terceiro precisa de autorização para a versão nova.
- reference_audio_base64 com gravação de pessoa real é clonagem na prática.
- A semente reproduz a voz só com as mesmas entradas; guarde descrição e texto.
- guidance_scale alto deixa a voz robótica; prefira descrição mais detalhada.
- Vídeos no ar continuam depois de apagar a voz; retirá-los cabe ao responsável.
O teste: Para cada voz da conta, existe uma ficha com titular, vigência e status.
alexandrecaramaschi.com/educacao/frontends-com-vibecoding
Glossário rápido
Instant Voice Clone (IVC)
Clone de voz feito a partir de um a dois minutos de áudio limpo, disponível a partir do plano Starter, como um retrato rápido da voz.
Professional Voice Clone (PVC)
Clone treinado com 30 a 180 minutos de áudio, a partir do plano Creator, permitido só com a própria voz, como uma escultura feita com tempo.
verificação do PVC
Etapa em que o dono da voz lê frases mostradas na hora e envia a gravação, provando que é ele quem pede o PVC; a comunidade chama de Voice CAPTCHA, a página oficial em 12/10/2026 chama só de verificação.
Voice Design
Criação de uma voz original a partir de uma descrição em texto de 20 a 1.000 caracteres, sem clonar ninguém.
generated_voice_id
Identificador de uma prévia do Voice Design; você escolhe uma prévia e salva a voz a partir desse id.
ficha de consentimento
Registro operacional de quem autorizou o uso da voz, para quê, em quais canais e até quando, com a evidência anexada.
requires_verification
Campo da resposta do IVC; enquanto não vier igual a false, a voz não entra no pipeline.
use_pvc_as_ivc
Opção das rotas Text to Speech e Text to Dialogue, suportada de novo desde 28/09/2026 (padrão false), que fala com a versão instantânea de um PVC quando a latência importa mais que a fidelidade.
retreino no v4
Passo pedido pela ElevenLabs para clones criados antes do Eleven v4: a voz é treinada de novo em My Voices antes de falar no modelo novo.
Preencha agora a ficha da primeira voz do seu projeto, anexe a autorização e rode a criação. Está pronto quando existe um voice_id gravado numa ficha com evidência, a verificação está resolvida, o clone foi retreinado para o v4 quando era anterior a ele e uma amostra no eleven_v4 foi aprovada por quem empresta a voz.
Seu caderno neste capítulo
Abrir o caderno completoSelecione um trecho do capítulo para destacar ou anotar. Nos vídeos e áudios, use Anotar este momento. No teclado, selecione com Shift e as setas e use Alt+Shift+D para destacar ou Alt+Shift+N para anotar.
Salvo neste navegador. Entre na sua conta para levar o caderno a outros aparelhos.
Entre na sua conta para compartilhar o que aprendeu e convidar alguém para estudar com você.
Conexões deste capítulo
Veja o que estudar antes e para onde seguir depois, explore os conceitos e compare abordagens em outros cursos. Sugestões marcadas como “sugerido pelo grafo” vêm dos assuntos em comum, não do índice do curso.
Estude antes
- CursoClaude Code CLI: Programação com IA
- CursoAstra profundosugerido pelo grafoA quinta parte do Astra planeja o vídeo e edita o material bruto com o modelo dirigindo a ferramenta. O curso de vídeo com IA aprofunda esse trabalho com Claude Code, Codex e ElevenLabs, do roteiro à publicação. O grafo já sugeria esta ordem pela regra de entrada da trilha; com a ordem anterior curada, ela passa a ser declarada (Etapa 4, wave 3).
- CursoSetup Completo: do zero ao Claude Codesugerido pelo grafo7 capítulos de “Vídeo com IA: Claude Code, Codex e ElevenLabs” usam conceitos apresentados em “Setup Completo: do zero ao Claude Code”.
Depois, siga para
- CursoFrontends com Vibecodingsugerido pelo grafo21 capítulos de “Frontends com Vibecoding” usam conceitos apresentados em “Vídeo com IA: Claude Code, Codex e ElevenLabs”.
- CursoDo Agile ao Agentic Operating Modelsugerido pelo grafo5 capítulos de “Do Agile ao Agentic Operating Model” usam conceitos apresentados em “Vídeo com IA: Claude Code, Codex e ElevenLabs”.
- CursoAgentes de IA Autônomos: Do Conceito à Produçãosugerido pelo grafo7 capítulos de “Agentes de IA Autônomos: Do Conceito à Produção” usam conceitos apresentados em “Vídeo com IA: Claude Code, Codex e ElevenLabs”.
- CursoLLM FinOps: o custo da IA para quem assina o orçamentosugerido pelo grafo4 capítulos de “LLM FinOps: o custo da IA para quem assina o orçamento” usam conceitos apresentados em “Vídeo com IA: Claude Code, Codex e ElevenLabs”.
Conceitos deste capítulo
O mesmo assunto em outros cursos
- Setup de Vibecoding no MacCriar conta na Anthropic (a empresa do Claude)Examinar conexões de Criar conta na Anthropic (a empresa do Claude)
- Saúde Mental para Autistas em IAQual assistente aguenta ser prótese de função executivaExaminar conexões de Qual assistente aguenta ser prótese de função executiva
- Segundo cérebro com IATrocar de modelo no meio da tarefa sem começar do zeroExaminar conexões de Trocar de modelo no meio da tarefa sem começar do zero
- SEO e GEO para Pet e AgroIA generativa sem perder a voz da lojaExaminar conexões de IA generativa sem perder a voz da loja
Voltar ao capítulo anterior: Narrar em português com Eleven v4 por API e usar o Flash no volume
Leve uma ideia para a prática
Escolha uma atividade no painel e volte a este curso quando quiser.
Atividades e evolução ficam reunidas no painel da sua conta.
Laboratórios ao vivo deste curso
Cada laboratório monta a biblioteca real dentro da aula, com controles para você mexer e o código do exemplo para copiar. O texto de reserva descreve a demonstração para quem lê sem JavaScript. O link abre o capítulo já no ponto do laboratório.
MediaRecorder, Canvas 2D e Long Animation Frames (plataforma)
Grave a cena em tempo real e veja os quadros que se perdem
Suba as partículas, force um bloqueio de 300 ms e grave seis segundos; compare com o render quadro a quadro desta aula.
Pacote
Abrir no capítuloMontar vídeo em HTML com HyperFrames e escolher entre ele e o Remotionsem pacoteMotion
Ver agentes em paralelo trocando mensagens numa linha do tempo
Reproduza a cena, percorra o tempo pelo controle e compare o tempo de parede com a soma das barras de cada agente.
Pacote
Abrir no capítuloParalelizar cenas com subagentes sem estourar o limite das APIsmotionReact (sem dependência extra), com as APIs do Veo e do fal.ai
Prompt de vídeo em cinco camadas, pronto para a API
Escolha plano, câmera, luz, ação e áudio e copie o prompt e o JSON para o Veo ou para o fal.ai.
Pacote
Abrir no capítuloEscrever prompt de vídeo em cinco camadas e manter o personagem consistentereactReact (sem dependência extra), com o comando para o FFmpeg
Corte o vídeo apagando palavras da transcrição
Aperte as palavras para removê-las, ligue a remoção de pausas e copie o comando FFmpeg e a legenda SRT gerados.
Pacote
Abrir no capítuloRemover pausas e reenquadrar o vídeo de 16:9 para 9:16 com legenda por palavrareactReact (sem dependência extra)
Quanto custa cada etapa do seu pipeline de vídeo
Troque a ferramenta de cada etapa e o percentual de b-roll e veja qual etapa pesa no custo por minuto e por vídeo.
Pacote
Abrir no capítuloOrquestrar o pipeline com etapas idempotentes e teto de gastoreact
Capítulos vizinhos em Vídeo com IA: Claude Code, Codex e ElevenLabs
- 14Pôr Claude Code e Codex em revisão cruzada sem loop
- 15Narrar em português com Eleven v4 por API e usar o Flash no volume
- 16Clonar ou desenhar uma voz com consentimento por escrito e verificação
- 17Transcrever com Scribe v2 e cortar o vídeo pela palavra falada
- 18Dublar o vídeo e compor trilha e efeitos com licença registrada