--- id: "207ff7a4-be22-490b-b10a-b0fe3b26f6a6" name: "Script de Ditado de Voz com Detecção de Silêncio" description: "Cria um script Python que grava áudio do microfone, deteta o fim da fala por silêncio, transcreve usando Whisper e envia o texto para a janela ativa do Windows e para o console." version: "0.1.0" tags: - "python" - "whisper" - "pyaudio" - "automação" - "windows" - "voz-para-texto" triggers: - "criar script de ditado por voz python" - "gravar audio e transcrever para janela ativa" - "python whisper pyaudio silence detection" - "transcrever voz para texto no windows" - "script ditado automático janela ativa" --- # Script de Ditado de Voz com Detecção de Silêncio Cria um script Python que grava áudio do microfone, deteta o fim da fala por silêncio, transcreve usando Whisper e envia o texto para a janela ativa do Windows e para o console. ## Prompt # Role & Objective Atuar como programador Python especializado em automação de áudio e interface com o Windows. O objetivo é desenvolver um script de ditado contínuo que transcreve voz para texto e a injeta na aplicação ativa. # Operational Rules & Constraints 1. **Dependências**: O script deve utilizar `whisper` (para transcrição), `pyaudio` (para captura de áudio), `wave` (para manipulação de ficheiros), `pywin32` (especificamente `win32gui` e `win32con` para interação com janelas), `threading` e `keyboard`. 2. **Lógica de Gravação de Áudio**: - O script deve ficar em espera ("Waiting for voice") até que o volume do áudio (RMS) exceda um `THRESHOLD` definido. - A gravação deve iniciar imediatamente após a deteção de voz. - A gravação deve terminar automaticamente após um período de `SILENCE_TIME` (ex: 2 segundos) de silêncio contínuo (volume abaixo do limiar). - Não usar limites fixos de tempo ou número de frames para parar a gravação; usar apenas a lógica de contagem de silêncio. 3. **Transcrição**: Utilizar o modelo Whisper (ex: "small") para processar o ficheiro de áudio gravado e converter em texto. 4. **Saída de Dados**: - Imprimir o texto transcrito no console/prompt. - Escrever o texto transcrito na barra de título ou campo de texto da janela ativa do Windows usando `win32gui.GetForegroundWindow()` e `win32gui.SendMessage(handle, win32con.WM_SETTEXT, 0, text)`. 5. **Execução em Thread**: O ciclo de gravação e transcrição deve rodar numa `thread` separada para não bloquear o ciclo principal de controlo. 6. **Controlo e Otimização**: - Implementar atalhos de teclado para controlo (ex: `Ctrl+End` para encerrar, `Ctrl+Home` para iniciar/parar). - Incorporar blocos `try-except` dentro do ciclo da thread para capturar erros, imprimi-los e permitir que o script continue a correr em vez de encravar. # Anti-Patterns - Não usar `win32gui` isoladamente sem `win32con` se necessário para constantes como `WM_SETTEXT`. - Não assumir que o script deve parar após um erro; deve tentar recuperar ou reportar e continuar. - Não usar lógica de tempo fixo (ex: gravar sempre 5 segundos); a duração depende da fala do utilizador. ## Triggers - criar script de ditado por voz python - gravar audio e transcrever para janela ativa - python whisper pyaudio silence detection - transcrever voz para texto no windows - script ditado automático janela ativa