E1 · Checker
5 minRun "check the consent form".
Done when: OK: termo de Ana Exemplo · 7 campos · válido até 31/12/2027 with saída: 0, and FALTA: Rótulo with saída: 1.
Lesson 7 · 14 min
A talking avatar is the most expensive step in the factory and the most sensitive: it's a person's face and voice. In this lesson you'll see how the studio fits into the pipeline and write two pieces of your own: the avatar's consent form and a gate that doesn't let any generation start without a valid consent form.
Start the lesson
Goal: write the consent form for your avatar and put in a gate that closes any generation without a valid consent form.
Click each step. The studio only opens after the gate.
explicavideos and refazvideo ask for the APROVADO_HEYGEN file before start, but the code doesn't check it. The gate in this lesson is the one that really closes.
Dated example: names and features change. What doesn't change is the consent form.
Avatar V, introduced in Apr/2026: identity created from about 15 s of footage, separating identity from appearance; in May/2026, motion direction in natural language (research §3). It's the studio INEMA's engines use, through the subscription.
Synthesia Express-2 (Sep/2025, full body). Hedra Omnia and OmniHuman 1.5 appear in secondary sources: reported, not confirmed in an official source as of 10/19/2026.
In generators with native audio, the mouth comes out together with the speech. In avatars, the studio syncs from the audio or from the text. Generators and native audio: course 1.
It also works with no avatar at all: local voice and scenes, like the demo in lesson 3 and course 3. The AI-generated content label, image and voice rights, and the AI Act are covered in course 2, lesson 7. Here the consent form only requires that the label exists and mentions AI.
Fictional example in the kit. Yours is the same, with your own details.
# Termo de uso de avatar e voz (exemplo fictício) Pessoa: Ana Exemplo Autoriza: a própria Ana, dona do canal, autoriza avatar com o rosto dela e a voz clonada dela Uso: vídeos dos cursos gratuitos do canal dela e cortes desses vídeos Idiomas: português, inglês e espanhol Validade: 31/12/2027 Revogação: pedido por escrito; vídeos novos param no mesmo dia, os publicados saem em até 30 dias Rótulo: "Avatar e voz gerados por IA com autorização de Ana Exemplo" no canto do vídeo e na descrição
K=~/projetos/formacao-cinema-ia-fabrica-v72/kit python3 "$K/conferir-consentimento.py" "$K/exemplos/a7-termo/termo.md"; echo "saída: $?" python3 "$K/conferir-consentimento.py" "$K/exemplos/a7-termo/termo-sem-rotulo.md"; echo "saída: $?"
OK: termo de Ana Exemplo · 7 campos · válido até 31/12/2027 saída: 0 FALTA: Rótulo saída: 1
The second file is the same consent form without the Rótulo line. The field labels also work in English and Spanish (Person, Label, Etiqueta…).
The script doesn't call any studio: it only decides whether you can open the studio and how many seconds you will ask for.
#!/usr/bin/env bash
# portao-avatar.sh — porta de entrada de qualquer geração de avatar: sem termo conferido, nada segue.
# Uso: bash portao-avatar.sh <termo.md> <roteiro.txt>
# Não chama estúdio nenhum: só decide se você PODE abrir o estúdio, e quantos minutos vai pedir.
K=$(cd "$(dirname "$0")" && pwd)
termo="${1:?uso: portao-avatar.sh <termo.md> <roteiro.txt>}"; roteiro="${2:?falta o roteiro}"
python3 "$K/conferir-consentimento.py" "$termo" || { echo "PORTÃO FECHADO: corrija o termo antes de gerar"; exit 1; }
p=$(wc -w < "$roteiro")
echo "roteiro: $p palavras ≈ $(( (p * 60 + 139) / 140 )) s a 140 palavras/min"
echo "PORTÃO ABERTO: pode levar ao estúdio (a geração gasta crédito: confira o plano antes)"K=~/projetos/formacao-cinema-ia-fabrica-v72/kit; X=$K/exemplos/a7-termo bash "$K/portao-avatar.sh" "$X/termo.md" "$X/roteiro.txt"; echo "saída: $?" bash "$K/portao-avatar.sh" "$X/termo-sem-rotulo.md" "$X/roteiro.txt"; echo "saída: $?"
OK: termo de Ana Exemplo · 7 campos · válido até 31/12/2027 roteiro: 37 palavras ≈ 16 s a 140 palavras/min PORTÃO ABERTO: pode levar ao estúdio (a geração gasta crédito: confira o plano antes) saída: 0 FALTA: Rótulo PORTÃO FECHADO: corrija o termo antes de gerar saída: 1
Put the gate call as the first line of your production script, before start: with set -e, exit code 1 stops everything.
Your consent form and your gate.
Run "check the consent form".
Done when: OK: termo de Ana Exemplo · 7 campos · válido até 31/12/2027 with saída: 0, and FALTA: Rótulo with saída: 1.
Write ~/meu-termo.md with the seven fields, using your own details and whatever expiration date makes sense for you.
Done when: python3 ~/projetos/formacao-cinema-ia-fabrica-v72/kit/conferir-consentimento.py ~/meu-termo.md; echo "saída: $?" → OK: termo de [your name] · 7 campos · válido até … and saída: 0.
Run the gate with your consent form and one of your own scripts as a text file.
Done when: bash ~/projetos/formacao-cinema-ia-fabrica-v72/kit/portao-avatar.sh ~/meu-termo.md [your-script.txt]; echo "saída: $?" → PORTÃO ABERTO and saída: 0.
The explanation appears after you answer.
Question 1 of 3
A client asks for a video with the avatar of a famous presenter. What does this lesson's consent form allow?
Question 2 of 3
Why put a gate in a script if the engine already asks for APROVADO_HEYGEN?
Question 3 of 3
The checker answers "VENCIDO: validade 31/12/2025". What should you do?
Pick an option. The explanation appears after you answer.