#!/bin/zsh # Gera tests/live_pt.f32 (16 kHz mono float32) com fala em pt-BR e pausas variadas, para o teste de resistência. set -e cd "$(dirname "$0")/.." cat > tests/live_pt.txt <<'TXT' Boa noite pessoal, bem-vindos à live de hoje. [[slnc 700]] Hoje a gente vai conversar sobre como construir sistemas que rodam no seu próprio computador, sem depender de nenhuma empresa grande. [[slnc 1300]] Eu comecei esse projeto porque estava cansada de pagar assinatura para tudo e ainda perder o controle dos meus dados. [[slnc 500]] Então resolvi montar uma legenda ao vivo que funciona completamente offline. [[slnc 1500]] O modelo de transcrição reconhece a minha voz em português, e depois outro modelo traduz o texto para o espanhol enquanto eu continuo falando. [[slnc 900]] Parece simples, mas o difícil é manter tudo rápido durante uma hora inteira, sem o computador esquentar e sem a legenda ficar cada vez mais atrasada. [[slnc 1200]] Por isso eu medi tudo, o consumo de processador, a memória, a temperatura e o tempo que cada frase leva para aparecer na tela. [[slnc 600]] Se o atraso começar a crescer, alguma coisa está errada no sistema. [[slnc 1400]] Uma das primeiras lições foi que não adianta traduzir um parágrafo inteiro de uma vez. [[slnc 400]] É melhor traduzir frase por frase, assim o espectador vê o texto aparecendo aos poucos. [[slnc 1000]] Outra lição é que o computador só consegue fazer uma tradução por vez, então se você pedir várias ao mesmo tempo, todas ficam lentas. [[slnc 1600]] Vamos dar uma pausa agora para olhar o chat. [[slnc 1800]] Pessoal, se vocês estiverem me ouvindo, mandem um oi aí embaixo, e não esqueçam de responder a pesquisa que está na descrição. [[slnc 1200]] Voltando ao assunto, eu também quero falar sobre privacidade, porque tudo que eu falo aqui fica na minha máquina e não vai para nenhum servidor de terceiros. [[slnc 800]] Isso é importante para quem trabalha com informações sensíveis, como organizações da sociedade civil, jornalistas e defensores de direitos humanos. [[slnc 1500]] Agora vou falar mais rápido para testar o sistema sob pressão, porque numa live de verdade a gente nem sempre faz pausas, a gente empolga e fala sem parar, mudando de assunto no meio da frase, e o sistema precisa acompanhar sem travar e sem acumular atraso nenhum. [[slnc 1300]] Prontinho, respirei. [[slnc 600]] Então é isso, o objetivo é que qualquer pessoa consiga rodar esse sistema no próprio computador, entender como ele funciona e trocar os modelos quando aparecerem opções melhores. [[slnc 2000]] TXT say -v Luciana -r 175 -f tests/live_pt.txt -o tests/live_pt.aiff ffmpeg -y -loglevel error -i tests/live_pt.aiff -ac 1 -ar 16000 -f f32le tests/live_pt.f32 rm tests/live_pt.aiff python3 -I -c "import os;print('duração: %.0f s' % (os.path.getsize('tests/live_pt.f32')/4/16000))"