Tag: fastapi

  • Avatar de IA: como dar um rosto a um assistente de voz e evitar armadilhas

    Avatar de IA: como dar um rosto a um assistente de voz e evitar armadilhas

    A integração de um avatar de IA no assistente de voz de IA existente, Aika, não é apenas a adição de um rosto, mas uma série de desafios técnicos. Nosso objetivo era manter a arquitetura atual no Yandex Realtime, para que o novo serviço apenas animasse os lábios para o som já gerado. Durante os testes do Simli e Anam, surgiram nuances com pausas antes da resposta, o lançamento de vídeos no iPhone e a estabilidade da internet móvel. E ao criar o segundo personagem, Eva, ficou claro que a credibilidade da rede neural depende não apenas do rosto em si, mas também do contexto.

    Nosso motor de voz já estava funcionando, então a tarefa era exclusivamente animar o rosto. Aika se comunica com os visitantes do site diretamente no navegador via WebSocket, que está conectado ao nosso servidor FastAPI, que por sua vez mantém uma sessão com o Yandex Realtime. Isso garante o modo “fala para fala”, eliminando a necessidade de cadeias separadas de reconhecimento, modelo de texto e síntese.

    O servidor transmite áudio não compactado no formato PCM16 a 24 kHz para o navegador em partes (pcm_chunk), e era necessário sincronizar a mímica do avatar com esse fluxo.

    Escolha da plataforma para o avatar de IA: Simli vs Anam

    Ambos os serviços testados — Simli e Anam — oferecem um modo onde o usuário fornece seu fluxo de áudio, e o serviço gera um vídeo com um rosto animado, sincronizado com o som, retornando a mídia via WebRTC. Assim, o Yandex continua a gerar a fala, e o serviço de avatar é responsável pelo componente visual.

    Aspectos técnicos da integração de som

    • Frequência de amostragem: O Yandex emite som a 24 kHz. O Simli requer 16 kHz, o Anam também foi configurado para 16 kHz, embora suporte outros formatos.
    • Processamento de áudio-chunks: O som chega em pedaços. Para evitar artefatos nas junções, a posição fracionária e a última amostra são transferidas para o próximo chunk. Isso garante a suavidade da animação, embora a qualidade da recalibração de frequência sem um filtro completo ainda exija melhorias.

    Segurança e gerenciamento de sessões

    A chave do serviço não chega ao navegador. A página solicita um token de sessão de curta duração ao nosso servidor via POST /voice/avatar-session. O servidor verifica a origin e restringe a emissão de tokens: 6 por hora por IP e 30 por hora no total.

    Se o token não for obtido ou o vídeo não iniciar, a página muda para o modo de voz normal. São alocados 8 segundos para a solicitação do token e 15 segundos para o lançamento do SDK. É importante notar que o lançamento bem-sucedido do SDK não garante o aparecimento imediato do primeiro quadro; o rosto aqui é um complemento, não uma função crítica.

    Anam oferece dois comandos principais:

    • endSequence(): chamado após o envio do último fragmento de áudio da réplica.
    • interruptPersona(): interrompe a fala atual do avatar quando interrompido, após o que endSequence() também é chamado.

    Comparação entre Simli (geração antiga) e Anam Cara-4

    Comparamos as versões disponíveis para nós: Simli da geração anterior e Anam Cara-4. Esta não é uma comparação exaustiva de todos os recursos, mas uma seleção para uma tarefa específica.

    Parâmetro Simli (geração anterior) Anam Cara-4
    Expressão facial Os lábios se movem, outras expressões faciais são limitadas Pisca, sorri, dentes visíveis, inclina a cabeça
    Criação de rosto A partir de uma foto via API da geração anterior A partir de uma única foto, vídeo de amostra disponível

    Subjetivamente, o Anam mostrou expressões faciais mais vivas e naturais. Para nós, este foi um fator decisivo. Em seguida, encontramos uma série de problemas específicos.

    Recursos de reprodução de mídia

    • Áudio: No Simli, o áudio era reproduzido através de um elemento de áudio separado; no Anam, através do mesmo elemento de vídeo. Isso significa que o elemento de vídeo do Anam não pode ser deixado muted, caso contrário, o avatar “falará” sem som.
    • Resolução: O vídeo frequentemente começava com baixa resolução (384×576) e só depois de alguns segundos mudava para alta (768×1152). A opção sessionOptions.videoQuality: "high" ajudava, mas não garantia o início com alta qualidade.
    • Atraso na geração de quadros: O Anam precisa receber 0.8 segundos de áudio antes de começar a gerar quadros. Isso nem sempre equivale a 0.8 segundos de espera em tempo real, pois o som pode chegar mais rápido do que é reproduzido.

    Gerenciamento de microfone e sessões

    • Cancelamento de eco: No telefone, enquanto Aika fala, o microfone é desativado para evitar a captura de sua voz pelo alto-falante. No PC, o microfone está ativo, e quando o usuário começa a falar (evento barge_in do Yandex Realtime), o avatar interrompe a fala atual.
    • Slot de sessão ocupado: No plano gratuito, uma sessão simultânea está disponível. Se o navegador travasse, o slot poderia permanecer ocupado. A solicitação GET /v1/sessions/concurrency ajuda a diagnosticar a ocupação dos slots.
    • Cancelamento de conexão: Se o usuário clicar em “parar” durante a conexão de vídeo, é necessário finalizar corretamente as operações assíncronas para não deixar uma sessão desnecessária. Para isso, foi introduzido um contador de gerações videoGen.

    Problemas com o Safari no iPhone

    No iPhone, o vídeo não iniciava no Safari. A hipótese está relacionada às regras de reprodução automática. Uma chamada preliminar de play() no elemento de vídeo com alimentação temporária de fluxo do canvas e remoção do muted ajudou em um teste, mas não é uma solução universal.

    Uma longa pausa antes da resposta de um avatar, que olha silenciosamente para o usuário, é sentida de forma muito mais pesada do que sem ele. Inicialmente, o limiar de silêncio (VAD) foi definido para 2,2 segundos para que Aika não interrompesse os usuários que ditavam informações com pausas.

    Transferimos a lógica da ponte telefônica para o site: em uma conversa normal, o limiar é de 1500 ms, ao ditar – 2200 ms. Isso permite ajustar dinamicamente a sensibilidade do VAD. As configurações são aplicadas via session.update sem reconexão.

    AI-аватар: как добавить лицо голосовому помощнику и избежать подводных камней — illustration 2

    Criação da segunda personagem: Eva

    Para a administradora do estúdio Eva, nos deparamos com o problema da “loira de catálogo” em um fundo vazio. O ponto de virada ocorreu quando um interior apareceu atrás dela: lâmpadas quentes, prateleiras, plantas, um plano de fundo desfocado. Isso tornou a imagem muito mais convincente, transformando o “catálogo” em “uma pessoa no local de trabalho”.

    Detalhes da criação do fundo e do retrato

    • Fundo: Usamos um interior pronto em nosso estilo, removendo pessoas com um gerador.
    • Recorte da personagem: Eva foi recortada usando as ferramentas do macOS Vision (VNGeneratePersonSegmentationRequest com nível .accurate). A borda da máscara foi estreitada e suavizada para eliminar o halo.
    • Escala: É importante observar a escala dos objetos no fundo para evitar situações cômicas (por exemplo, uma caneca gigante atrás dela). O fundo foi tirado apenas acima da bancada e desfocado para uma lente de retrato.
    • Resolução: Para Cara-4, é recomendada uma imagem quadrada de 1152×1152. O aumento puro do Real-ESRGAN ×4 deixava a pele muito lisa. Uma combinação de aumento por rede neural com dimensionamento comum, aumento de nitidez e adição de granulação parecia melhor.

    Dublagem de Eva

    Para Eva, escolhemos uma voz da família LiveTTS do Yandex. No SpeechKit API v3, o modelo é selecionado via "model": "livetts", e a voz e o papel são passados via hints. Para textos longos, o texto era dividido em frases e sintetizado separadamente.

    Das sete opções de dublagem de uma frase, escolhemos a voz vera no papel casual. Tivemos que reescrever a frase, pois a síntese errava consistentemente a acentuação.

    Gravação de vídeos com avatar

    O vídeo de Eva foi gravado usando o mesmo motor de animação que a chamada ao vivo, usando MediaRecorder diretamente de video.srcObject (vídeo e áudio juntos, WebM com VP9 e Opus). Para um início correto da gravação, o fluxo era previamente “acordado” com um segundo de silêncio, para que o vídeo não começasse com uma tela preta.

    Perguntas frequentes

    O que é um avatar de IA e como ele funciona?

    Avatar de IA — é um personagem digital capaz de animar expressões faciais e movimentos labiais de acordo com o áudio fornecido. Ele usa redes neurais para criar uma imagem visual realista que se sincroniza com a fala, tornando a interação mais natural e atraente.

    Posso usar minha voz para um avatar de IA?

    Sim, a maioria das plataformas, como Anam e Simli, permite que você use seu próprio motor de voz ou áudio pré-gravado. O avatar animará o rosto de acordo com esse fluxo de áudio, mantendo o reconhecimento de sua marca ou persona.

    Quais são as principais dificuldades na integração de um avatar de IA?

    Entre as principais dificuldades estão a sincronização de áudio e vídeo, o processamento de blocos de áudio, a otimização de latências, a garantia de operação estável em vários dispositivos (especialmente móveis) e a criação de uma imagem visual convincente que corresponda ao contexto e à marca.

    Como o fundo afeta a percepção de um avatar de IA?

    O fundo desempenha um papel crítico na criação de uma imagem convincente. Um fundo vazio ou inadequado pode fazer o avatar parecer não natural. Um interior que corresponda ao estilo do personagem ou da marca aumenta significativamente o realismo e a confiança no avatar, criando a sensação de uma “pessoa no local de trabalho”.

    Quanto custa criar um avatar de IA?

    O custo de criação de um avatar de IA pode variar muito dependendo da plataforma escolhida, do nível de personalização, da detalhe das expressões faciais e da necessidade de funções exclusivas. Alguns serviços oferecem modelos de assinatura, enquanto outros podem cobrar por cada minuto de vídeo gerado ou pelo desenvolvimento de um personagem único.

    Conclusão

    A integração de um avatar de IA é uma ferramenta poderosa para aumentar o engajamento do usuário, mas requer um profundo desenvolvimento técnico. Desde a escolha da plataforma até o ajuste fino de fundos e pausas – cada etapa afeta o resultado final. Vimos que as redes neurais são capazes de dar nova vida às interfaces de voz, mas apenas com atenção cuidadosa aos detalhes.

    Se você deseja escalar seu conteúdo e criar vídeos de IA para publicidade, considere as possibilidades da produção neural por assinatura. Isso permite gerar centenas de vídeos, seja UGC de IA para um projeto de criptomoeda ou uma fábrica de vídeos de IA para e-commerce. Estamos prontos para ajudá-lo nisso! Entre em contato conosco para saber como a produção de conteúdo de IA pode transformar seu negócio.