Skip to content

fix: a frase fecha quando a pessoa para de falar, e não no teto de 15s - #15

Merged
kerlonr merged 1 commit into
mainfrom
fix/frase-que-nao-fecha
Sep 4, 2026
Merged

fix: a frase fecha quando a pessoa para de falar, e não no teto de 15s#15
kerlonr merged 1 commit into
mainfrom
fix/frase-que-nao-fecha

Conversation

@kerlonr

@kerlonr kerlonr commented Sep 4, 2026

Copy link
Copy Markdown
Member

O defeito inteiro, numa linha do log

Processing audio with duration 00:15.000
VAD filter removed 00:10.288 of audio
ouvi: qual seu nome? Atlas, qual seu nome

Quinze segundos — o teto — para uma pergunta curta, com o reconhecimento descartando dez deles como não-fala, e duas perguntas grudadas numa só.

A transcrição só começava depois desses 15 segundos. É daí a demora que não dava para explicar olhando o modelo ou a voz: nenhum dos dois estava lento.

A causa

if tem_voz:
    quieto = 0

Um único bloco de 30 ms acima do limiar zerava a contagem de silêncio. Parece inofensivo até a voz de quem fala ficar perto do limiar: as sílabas cruzam, as pausas não, e a contagem nunca chega ao fim.

E o limiar vinha subindo. Ele é medido uma vez, logo depois da saudação, e nos arranques deste robô deu 0,036 · 0,041 · 0,045 · 0,057 — nos mais altos, as frases pararam de fechar.

As três mudanças

  1. Um bloco solto não é "ainda falando". São precisos dois seguidos (60 ms) — pouco para atrapalhar uma sílaba de verdade, o bastante para um estalo ou uma respiração não segurarem quinze segundos de áudio.
  2. O teto caiu de 15 s para 10 s, e bater nele virou um aviso no log com o limiar em uso. Ninguém faz uma pergunta de dez segundos a um robô: chegar lá é sintoma.
  3. O limiar virou ajustável (ROBOTEYE_HEARING_LIMIAR). Medir a sala continua sendo o padrão; o número fixo existe para quando erra — uma sala barulhenta no instante da medição deixava o robô surdo pelo resto do dia, sem forma de corrigir.

De quebra, o fim de cada frase passa a aparecer no log com quanto durou e quanto disso era voz.

Verificação

  • 753 testes passam (eram 749), nos dois ambientes
  • o teste do defeito reproduz o padrão exato — um bloco acima do limiar a cada quatro, que é o que uma voz baixa produz — e falha sem a correção; conferido desfazendo-a

🤖 Generated with Claude Code

https://claude.ai/code/session_0173mr3mDsAKQuPUNaPghe9v

O log do robo mostrou o defeito inteiro numa linha:

    Processing audio with duration 00:15.000
    VAD filter removed 00:10.288 of audio
    ouvi: qual seu nome? Atlas, qual seu nome

Quinze segundos — o teto — para uma pergunta curta, com o reconhecimento
descartando dez deles como nao-fala, e duas perguntas grudadas numa so. **A
transcricao so comecava depois desses 15 segundos.** E dai a demora que ninguem
conseguia explicar olhando o modelo ou a voz: nenhum dos dois estava lento.

## A causa

    if tem_voz:
        quieto = 0

Um unico bloco de 30 ms acima do limiar zerava a contagem de silencio. Parece
inofensivo ate a voz de quem fala ficar perto do limiar: as silabas cruzam, as
pausas nao, e a contagem nunca chega ao fim. A gravacao so parava no teto.

E o limiar vinha subindo. Ele e medido uma vez, logo depois da saudacao, e nos
arranques deste robo deu 0.036, 0.041, 0.045, 0.057 — nos mais altos, a voz
passou a oscilar em volta dele e as frases pararam de fechar.

## As tres mudancas

**Um bloco solto nao e "ainda falando".** Sao precisos dois seguidos (60 ms)
para segurar a gravacao — pouco para atrapalhar uma silaba de verdade, o
bastante para um estalo, uma respiracao ou um pico do ar-condicionado nao
segurarem quinze segundos de audio.

**O teto caiu de 15 s para 10 s**, e bater nele passou a ser um aviso no log com
o limiar em uso. Ninguem faz uma pergunta de dez segundos a um robo: chegar la e
sintoma, nao normalidade, e agora ele diz isso em vez de so ficar lento.

**O limiar virou ajustavel** (`ROBOTEYE_HEARING_LIMIAR`). Medir a sala continua
sendo o padrao e acerta na maioria delas; o numero fixo existe para quando erra
— uma sala que estava barulhenta no instante da medicao deixava o robo surdo
pelo resto do dia, sem nenhuma forma de corrigir sem mexer no codigo.

De quebra, o fim de cada frase passa a aparecer no log com quanto durou e
quanto disso era voz. Era a linha que faltava para ver este defeito.

753 testes passam (eram 749). O que cobre o defeito reproduz o padrao exato —
um bloco acima do limiar a cada quatro, que e o que uma voz baixa produz — e
falha sem a correcao; conferido desfazendo-a.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0173mr3mDsAKQuPUNaPghe9v
@kerlonr
kerlonr merged commit e767913 into main Sep 4, 2026
5 checks passed
@kerlonr
kerlonr deleted the fix/frase-que-nao-fecha branch September 4, 2026 03:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant