Documentação

Implementação de Scripts e Voz (TTS)

Documentação Técnica: Implementação de Scripts e Voz (TTS) para o Robô de Tour Autônomo do Inteli

1. Introdução e Contexto do Projeto

Este documento detalha a implementação do sistema de scripts e voz para o Robô Lia, guia de tours do Inteli. O foco desta documentação está na arquitetura de desenvolvimento dos scripts, na metodologia de construção e na integração de áudios gerados por Text-to-Speech (TTS) com recursos expressivos.

2. Arquitetura e Desenvolvimento de Scripts

O desenvolvimento dos scripts do robô foi iniciado na primeira semana do projeto, com o objetivo de cobrir o escopo macro de apresentação do espaço físico, metodologia de ensino, diferenciais dos cursos e processo de seleção.
A base para a estruturação do fluxo de conversação e da lógica de interação foi a arquitetura de mapa (map architecture), fornecida pelo parceiro. Esta arquitetura foi crucial para:
•Definir o fluxo de diálogo e as ramificações de conversação necessárias para um tour estruturado.
•Garantir a consistência e a rastreabilidade do desenvolvimento dos scripts em um projeto de IA Generativa.

3. Implementação de Áudio com Text-to-Speech (TTS) Avançado

A voz do robô foi implementada utilizando uma solução de Text-to-Speech (TTS) que oferece recursos avançados de expressividade, essenciais para a experiência de encantamento do usuário.

3.1. Preparação e Segmentação do Conteúdo

O conteúdo dos scripts foi quebrado em partes menores. Esta segmentação foi realizada para otimizar a geração de áudio, permitindo um controle mais granular sobre a reprodução e a aplicação de diferentes estilos de voz em trechos específicos, o que é vital para a naturalidade da interação.

3.2. Geração de Áudio Expressivo

Foi utilizada uma ferramenta de TTS capaz de gerar áudios com nuances de entonação e estilo, que se integram à experiência de IA Generativa do robô. As capacidades expressivas utilizadas incluem:
•Sussurro: Geração de áudios com a característica de sussurro para momentos específicos do tour.
•Mudança de Emoção: Capacidade de alterar a emoção da voz (e.g., alegria, seriedade) conforme o contexto do script, enriquecendo a experiência interativa.

3.3. Módulos de Áudio Pré-Gerados

A estratégia de segmentação do conteúdo resultou na pré-geração de módulos de áudio em formato MP3, armazenados no repositório do projeto (embedding-models/output_audio/). Estes arquivos representam os trechos de fala que o robô utiliza durante o tour, sendo acionados via requisição (conforme detalhado na Seção 5).
A lista de módulos de áudio pré-gerados inclui, mas não se limita a:

IDNome do ArquivoConteúdo Implícito
0101_boas_vindas.mp3Saudação inicial ao visitante.
0202_mit_brasileiro.mp3Referência ao "MIT Brasileiro" (Inteli).
0303_intro_historia.mp3Introdução à história do Inteli.
0404_historia_importante.mp3Detalhe importante da história.
0504_intro_historia.mp3(Possível variação ou repetição da introdução).
0605_piada_auau.mp3Elemento de interação lúdica (piada).
0706_correcao_seria.mp3Correção ou comentário sério.
0807_resposta_empresario.mp3Resposta relacionada ao mundo empresarial.
0908_resolucao.mp3Conclusão ou resolução de um tópico.
1009_missao.mp3Apresentação da missão do Inteli.
1110_lista_beneficios.mp3Enumeração de benefícios.
1211_doadores.mp3Menção aos doadores/patrocinadores.
1312_interacao_bolsas.mp3Interação sobre o programa de bolsas.
1413_transicao.mp3Frase de transição entre tópicos.
1514_intro_cursos.mp3Introdução aos cursos.
1615_intro_cursos.mp3(Possível variação da introdução aos cursos).

4. Evolução da Arquitetura de Backend (Sprint 4)

A Sprint 4 focou na refatoração da arquitetura do backend para otimizar a performance, mas principalmente, na a escalabilidade dos serviços de voz e linguagem, especificamente Speech-to-Text (STT) e Text-to-Speech (TTS).

4.1. Problema Identificado (Gargalo de Latência)

Na arquitetura anterior, o principal gargalo era o carregamento repetido dos modelos de STT e TTS a cada requisição. Esse processo lento resultava em:
•Altos tempos de resposta.
•Lentidão perceptível e ineficiência no fluxo de inferência.

4.2. Melhorias Implementadas (Refatoração)

A refatoração da arquitetura resolveu o problema de latência através das seguintes melhorias:

Carregamento Único dos Modelos

Os modelos de STT e TTS são agora carregados apenas uma vez na inicialização do servidor (main.py).
Python
stt = STTService() stt.setup_model() tts = TTSService() tts.setup_model() chat = ChatService()
Com isso, as chamadas subsequentes executam apenas a inferência, reduzindo significativamente o delay e preparando o backend para uso contínuo e escalável.

Reorganização em Classes (POO)

Os serviços foram reorganizados em classes específicas (STTService, TTSService, ChatService), seguindo o paradigma de Programação Orientada a Objetos (POO). Cada classe encapsula o setup do modelo, os métodos de inferência e utilitários específicos (como o text breaker do TTS), promovendo uma estrutura modular e de fácil manutenção.

Uso Correto de Protocolos

A comunicação com os serviços foi padronizada para utilizar o protocolo mais adequado à sua natureza:

ServiçoProtocoloNatureza da ComunicaçãoMotivação
TTS (Text-to-Speech)WebSocketContínua (Streaming)Envio de chunks de áudio conforme gerados, permitindo resposta contínua e mais rápida.
STT (Speech-to-Text)WebSocketContínua (Streaming)Recebimento e transcrição progressiva de segmentos de áudio, habilitando transcrição em tempo quase real.
Chat (LLM)HTTPPontual (Requisição/Resposta)A comunicação com a LLM não exige streaming, sendo uma operação simples de requisição e resposta.

5. Integração e Controle do Robô de Serviço Autônomo (Pós-Refatoração)

Os áudios gerados pelo TTS são integrados ao sistema do Robô de Serviço Autônomo. O controle da reprodução dos áudios é realizado através de requisições específicas (comandos de API ou comandos internos do sistema) que permitem a sincronização precisa da fala com as ações do robô.

FuncionalidadeMecanismo de ControlePropósito no Tour
Iniciar ÁudioRequisição (API/Comando)Começar a fala do robô em pontos específicos do tour.
Parar ÁudioRequisição (API/Comando)Interromper a fala em caso de interrupção ou mudança de contexto.

====================================================================

Documentação Técnica: Ecossistema de Voz e Scripts (Lia - Robô Inteli)

1. Introdução e Visão Geral

Este documento detalha a implementação do sistema de voz e roteirização do Robô Lia, um guia autônomo projetado para realizar tours interativos no campus do Inteli1111. O sistema utiliza Inteligência Artificial Generativa para transformar textos dinâmicos em fala expressiva, permitindo que o robô apresente a infraestrutura, a metodologia PBL (Project Based Learning) e a cultura da instituição de forma humanizada2.

2. Arquitetura de Scripts e Fluxo de Conversação

O desenvolvimento dos scripts baseia-se em uma Arquitetura de Mapa (Map Architecture), que correlaciona a localização física do robô com gatilhos de fala específicos.

  • Segmentação Modular: O roteiro é dividido em blocos temáticos (Boas-vindas, História, Bolsas, Cursos, Clubes e Metodologia) para facilitar a manutenção e a navegação não-linear.
  • Camada de Expressividade: Diferente de um TTS comum, os scripts incorporam metadados de emoção e ritmo (ex: [excited], [whispering], [short pause]) para simular uma cadência de fala natural.

3. Implementação do Serviço TTS (Text-to-Speech)

A solução de voz utiliza a API do Google Cloud Text-to-Speech com configurações de última geração.

3.1. Configuração do Motor de Voz

O sistema utiliza o modelo de alta fidelidade para a língua portuguesa:

  • Voz: Leda
  • Modelo: gemini-2.5-pro-tts
  • Formato de Saída: MP3 (AudioEncoding.MP3)

3.2. Engenharia de Áudio e Controle de Prosódia

Para garantir o "encantamento" mencionado nos objetivos do projeto3, o código implementa controles dinâmicos de velocidade e entonação:

  • Speaking Rate (Velocidade): O serviço permite ajustar a taxa de fala globalmente ou por segmento. No Bloco de Bolsas, por exemplo, utiliza-se 1.25x para listas longas, enquanto na "Piada do Auau", utiliza-se 1.1x para dar ênfase cômica.
  • Normalização de Caminhos: O sistema organiza automaticamente os arquivos gerados em um diretório padrão (output_audio), garantindo que o robô acesse sempre a versão mais recente dos scripts.
  • Sistema de Cache: Para otimizar custos e performance, o serviço verifica se o arquivo já existe antes de realizar uma nova chamada à API do Google.

4. Estrutura do Roteiro e Módulos de Áudio

Abaixo, a tabela detalhada dos módulos de áudio que compõem a experiência do tour, baseada na implementação final da Sprint 4:

IDTópicoEmoção DominanteDescrição do Conteúdo
01-02Boas-VindasExcited / WarmSaudação inicial e menção ao "MIT Brasileiro".
03-08HistóriaStorytelling / JokingFundação em 2019, diálogo entre Roberto Sallouti e investidores.
09-13BolsasPassionate / GratefulDetalhes sobre auxílio-moradia, alimentação e notebook.
14-18CursosProfessional / High EnergyDescrição dos 5 cursos (CC, ES, SI, ADM Tech e EC).
19-23ClubesEnergetic / Fast-pacedMenção à Tantera, Inteli Júnior e coletivos de diversidade.
24-35PBL e RotinaEducational / ProudExplicação sobre a ausência de matérias tradicionais e o momento DEV.

5. Refatoração e Performance do Backend

Para eliminar o gargalo de latência identificado (carregamento repetido de modelos), a arquitetura foi migrada para um modelo de Serviço Persistente.

5.1. Padronização via POO (Programação Orientada a Objetos)

A classe TTSService encapsula toda a lógica de negócio:

  • setup_output_directory(): Gerencia o sistema de arquivos.
  • synthesize_speech(): Centraliza a lógica de inferência, tratando exceções e logs de sucesso/erro.

5.2. Protocolos de Comunicação

ServiçoProtocoloJustificativa Técnica
STT / TTSWebSocketPermite o streaming de áudio em tempo real (chunks), essencial para que o robô comece a falar antes mesmo do arquivo completo ser processado.
Chat (LLM)HTTPUtilizado para consultas pontuais à base de conhecimento (FAQ do processo seletivo)4.

6. Integração com o Hardware (Robô Autônomo)

O robô interage com estes módulos através de uma interface de controle que suporta:

  1. Gatilhos de Proximidade: Quando o robô atinge uma coordenada no mapa, o backend dispara o ID do áudio correspondente via requisição.
  2. Interrupção Dinâmica: Capacidade de parar a reprodução imediatamente caso o sensor de segurança detecte um obstáculo ou o usuário faça uma pergunta direta (STT).