Buscar
banner

Plaud Pi Zero: Gravador de Voz com IA Open Source

Publicado em 12 de Dezembro de 2025 às 09:39

Crie seu próprio assistente de gravação de voz já com transcrição associada, usando o Gemini como ferramenta. A referência ao Plaud (que é uma ferramenta robusta para esta função), para somente no nome, pois este projeto utiliza hardware que qualquer um pode ter acesso, com código em Python e usando o Gemini para fazer a interpretação do áudio e transcrição.

A intenção do projeto foi criar um aparelho menor possível, e mais barato possível para nossa realidade. É possível aplicar este projeto em outros hardwares, mas aí, adaptando o código.

Arquivos do Projeto

Materiais Necessários

  • Raspberry Pi Zero 2W
  • Raspberry Pi 2,13 polegadas e-Paper E-Ink Display HAT Interface SPI 250x122 2,13 polegadas
  • Etcs-para raspberry pi zero w ups-lite placa de fonte de alimentação bateria i2c max17040g indicador
  • Mini microfone USB para Raspberry Pi
  • Cartão Micro SD classe 10 (mínimo de 64Gb)
  • Cabo OTG (conversor de USB fêmea para micro usb macho) para conectar o microfone

Ferramentas Necessárias

  • Um notebook ou PC para conseguir fazer as instruções no Raspberry

Etapas

Introdução

  • O Plaud Pi Zero é um dispositivo DIY (Faça Você Mesmo) baseado em Raspberry Pi Zero 2W que grava áudio continuamente, transcreve e resume o conteúdo usando Inteligência Artificial (Google Gemini 2.5 Flash) e envia os resultados diretamente para o Telegram.

    Principais Funcionalidades
    Gravação Contínua: Blocos de 15 minutos (configurável) com processamento em segundo plano.

    IA Multimodal: Usa o Gemini 2.5 Flash para transcrição fiel e sumarização em tópicos.

    Interface Visual: Tela E-Ink (e-Paper) mostrando status de gravação, Wi-Fi e Bateria.

    Notificações: Envia áudio (MP3 compactado) e texto (transcrição) via Bot do Telegram.

    Resiliência: Reconexão automática de Wi-Fi, buffer anti-falhas e retentativa de upload.

Hardware Necessário

  • Raspberry Pi Zero 2W (com headers soldados).

    Cartão MicroSD (16GB ou superior, Class 10/A1 recomendado).

    Tela E-Ink 2.13inch (Modelo V4 Waveshare ou Spotpear compatível).

    Microfone USB (Mini USB Mic ou similar).

    Fonte de Energia: PowerBank ou UPS HAT (Ex: PiSugar/Waveshare UPS).

    Adaptador OTG (Micro USB para USB-A) para conectar o microfone.

Instalação de Software

  • Passo A: Sistema Operacional
    Instale o Raspberry Pi OS Lite (Bookworm) usando o Raspberry Pi Imager. Configure o Wi-Fi e SSH antes de iniciar.

    Passo B: Dependências
    Acesse o terminal via SSH e instale os pacotes necessários:

    Bash

    sudo apt update && sudo apt upgrade -y
    sudo apt install python3-pip python3-pil python3-numpy git ffmpeg libopenjp2-7 -y
    sudo pip3 install requests RPi.GPIO spidev --break-system-packages
    Passo C: Configuração da Tela (SPI)
    Execute sudo raspi-config.

    Vá em Interface Options > SPI > Yes.

    Reinicie (sudo reboot).

    Passo D: Drivers da Tela
    Clone o repositório da Waveshare para obter os drivers básicos:

    Bash

    cd ~
    git clone https://github.com/waveshare/e-Paper.git
    mkdir -p /home/pi/plaud_pi_zero/lib
    cp -r /home/pi/e-Paper/RaspberryPi_JetsonNano/python/lib/waveshare_epd /home/pi/plaud_pi_zero/lib/
    Nota: Substitua /home/pi pelo seu usuário se for diferente (ex: /home/andregomes).

Configuração do Projeto

  • Crie a pasta do projeto: /home/pi/plaud_pi_zero.

    Coloque os arquivos Python (disponíveis na seção de Código Fonte) nesta pasta.

    IMPORTANTE: Edite os arquivos para inserir suas chaves:

    main_epaper.py: Insira sua GEMINI_API_KEY.

    cloud_sync.py: Insira TELEGRAM_BOT_TOKEN e TELEGRAM_CHAT_ID.

Instalação do Serviço (Auto-Start)

  • Para iniciar automaticamente ao ligar:

    Crie o arquivo de serviço: sudo nano /etc/systemd/system/plaud-pi-zero.service

    Cole o conteúdo (ajuste o usuário User=pi e caminhos conforme necessário).

    Ative:

    Bash

    sudo systemctl daemon-reload
    sudo systemctl enable plaud-pi-zero.service
    sudo systemctl start plaud-pi-zero.service

Comandos de Controle

  • O projeto inclui scripts para criar comandos de terminal:

    pausar: Para a gravação e coloca a tela em espera.

    retomar: Reinicia o serviço e volta a gravar.

    desativar: Encerra totalmente o assistente.

Código Fonte (Arquivos Python)

  • Aqui estão os arquivos finais. Copie e salve cada bloco com o nome do arquivo indicado.

    1. main_epaper.py (O Cérebro)
    Gerencia gravação, threads, IA e lógica principal.

    2. cloud_sync.py (Integração Telegram)
    Gerencia envio de arquivos e divisão de mensagens longas.

    3. epaper_display.py (Interface Visual)
    Desenha status, Wi-Fi e bateria na tela E-Ink.

    4. wifi_manager.py e battery_manager.py
    wifi_manager.py:
    battery_manager.py:

Ajuste no GPIO

  • Essencial para funcionar no Pi Zero 2W com sistema novo. Substitua o arquivo original da Waveshare por este.

    Python

    import os
    import sys
    import time
    import spidev
    import RPi.GPIO as GPIO

    # Definição Padrão HAT
    RST_PIN = 17
    DC_PIN = 25
    CS_PIN = 8
    BUSY_PIN = 24

    class RaspberryPi:
    def __init__(self):
    self.SPI = spidev.SpiDev(0, 0)
    self.SPI.max_speed_hz = 4000000
    self.SPI.mode = 0b00
    GPIO.setmode(GPIO.BCM)
    GPIO.setwarnings(False)
    GPIO.setup(RST_PIN, GPIO.OUT)
    GPIO.setup(DC_PIN, GPIO.OUT)
    GPIO.setup(CS_PIN, GPIO.OUT)
    GPIO.setup(BUSY_PIN, GPIO.IN)

    def digital_write(self, pin, value): GPIO.output(pin, value)
    def digital_read(self, pin): return GPIO.input(pin)
    def delay_ms(self, delaytime): time.sleep(delaytime / 1000.0)
    def spi_writebyte(self, data): self.SPI.writebytes(data)
    def spi_writebyte2(self, data): self.SPI.writebytes2(data)
    def module_init(self):
    GPIO.setup(RST_PIN, GPIO.OUT)
    GPIO.setup(DC_PIN, GPIO.OUT)
    GPIO.setup(CS_PIN, GPIO.OUT)
    GPIO.setup(BUSY_PIN, GPIO.IN)
    return 0
    def module_exit(self):
    self.SPI.close()
    GPIO.output(RST_PIN, 0)
    GPIO.output(DC_PIN, 0)
    GPIO.cleanup()

    implementation = RaspberryPi()
    for func in [x for x in dir(implementation) if not x.startswith('_')]:
    setattr(sys.modules[__name__], func, getattr(implementation, func))

Scripts de Controle (pausar.py, parar.py)

  • pausar.py:

    #!/usr/bin/env python3
    import sys, subprocess, time
    sys.path.append(os.path.dirname(os.path.realpath(__file__)))
    try: from epaper_display import initialize_display, display_status
    except: pass

    print("⏸️ Pausando...")
    subprocess.run(["sudo", "systemctl", "stop", "plaud-pi-zero-auto.service"], check=False)
    time.sleep(2)
    if initialize_display():
    display_status("PAUSADO ||", "Use 'retomar'", "OFF")
    (Crie os atalhos em /usr/local/bin conforme explicado na documentação).

Conclusão

Tentei fazer o menor tamanho possível, mas isso gera alguns problemas, como a necessidade de uso de SSH para instalação do sistema e arquivos. Assim como o uso de um microfone USB, pois é muito difícil achar um microfone para embutir na placa.

Vale ressaltar que é necessário um pequeno conhecimento em programação e uso de SSH e itens parecidos, porém todo o projeto foi feito usando IA.

Caso você vá precisar de muita transcrição, vale a pena usar a troca automática de chaves do Gemini, pois os limites gratuitos são baixos.

Ainda preciso projetar uma "caixa" em 3D para imprimir. Assim que o fizer, atualizo o projeto.

Comentários

0
Faça login para adicionar um comentário.
  1. Nenhum comentário ainda. Seja o primeiro a comentar!

Gostou do Projeto?