Raspberry Pi Voice Changer: Monte um Projeto de Voz de Bolso
Um voice changer com Raspberry Pi abre uma categoria inteira de projetos que seriam impraticáveis em um PC convencional — builds de capacetes, vozes de props robóticos, máquinas de gaming retro com áudio de personagens e rigs de cosplay autônomos que funcionam completamente com um power bank USB. Este guia cobre tudo: desde a configuração inicial do hardware na Pi 4 e Pi 5, passando por um voice changer Python funcional com PyAudio, librosa, Sox e bindings de rubberband, até tutoriais completos de três builds populares. Ao final você terá um pipeline funcional e um entendimento claro dos trade-offs entre latência e qualidade em cada etapa.
TL;DR
- Uma Raspberry Pi 4 ou 5 consegue rodar pitch shifting em tempo real e efeitos de voz robótica com PyAudio, librosa e pyrubberband.
- Microfone USB + saída de áudio USB ou HDMI — sem fiação analógica para um setup funcional.
- Builds de capacetes cosplay, props de áudio retro e rigs de voz robótica funcionam em uma Pi headless rodando um serviço systemd.
- Meta de latência: 20-40 ms é alcançável a 44100 Hz com buffers de 512-1024 amostras.
- Para uso em Discord/streaming no Windows, uma ferramenta dedicada como o VoxBooster é mais rápida de configurar e produz menor latência.
- O stack Python descrito aqui também se aplica a desktops Linux — consulte voice changer para Linux para esse ângulo.
Hardware Necessário: Pi 4, Pi 5 e Acessórios
Raspberry Pi 4 vs Pi 5 para Processamento de Voz
O modelo de Pi escolhido determina quais efeitos de voz são práticos em tempo real.
| Característica | Raspberry Pi 4 (4 GB) | Raspberry Pi 5 (4/8 GB) |
|---|---|---|
| CPU | Cortex-A72 @ 1.8 GHz | Cortex-A76 @ 2.4 GHz |
| Pitch shift em tempo real | Sim, confortavelmente | Sim, com margem |
| STFT do librosa (tempo real) | No limite com buffers pequenos | Sim |
| Conversão neural de voz | Não (muito lenta) | Possível em qualidade reduzida |
| Consumo ativo | ~3–5 W | ~5–8 W |
| Em capacete (ociosa) | Bom | Bom, um pouco mais quente |
| Preço (aprox.) | $55 | $80 |
Para a maioria dos builds de cosplay e props, uma Pi 4 com 2 ou 4 GB de RAM é suficiente. A Pi 5 dá margem para cadeias DSP mais complexas ou a capacidade de rodar um pequeno modelo ONNX localmente. Uma Pi Zero 2W funciona para efeitos simples de tom, mas seu desempenho de núcleo único a torna pouco confiável para cadeias DSP de múltiplos estágios.
Seleção de Microfone USB
Qualquer microfone com interface USB Audio Class (UAC 1.0 ou 2.0) funciona no Raspberry Pi OS sem instalar drivers.
Opções recomendadas:
- Fifine K669B — compacto, alimentado pelo barramento, cardioide, menos de $30. Cabe dentro de um capacete.
- Blue Snowball iCE — captura mais ampla, boa rejeição de ruído, suporte padrão no Linux.
- Samson Go Mic — formato de clipe, útil para builds de fantasias onde o espaço é limitado.
- Microfone de lapela USB genérico — a opção mais barata. Qualidade de áudio limitada, mas aceitável para efeitos de robô/distorção onde a qualidade da fonte importa menos.
Evite microfones que anunciam “USB somente para Windows” ou exigem software adicional — eles usam descritores USB proprietários que não enumeraram corretamente no Linux.
Opções de Saída de Áudio
- Adaptador de áudio USB (dongle DAC) — a opção mais simples, plugado junto ao microfone USB. Escolha um com saída de 3,5 mm.
- Áudio HDMI — funciona nativamente para builds conectados a monitor ou receptor AV.
- Alto-falante Bluetooth — adiciona 50-150 ms de latência extra. Aceitável para vozes de props sem sincronia labial; não ideal para conversa em tempo real.
- HAT DAC I2S (ex.: HiFiBerry DAC+ Zero) — melhor qualidade de áudio, menor latência, mas requer configuração de overlay do kernel.
Para os exemplos neste guia usamos microfone USB + adaptador de áudio USB, pois é o mais fácil de reproduzir e não exige overlay do device tree.
Configuração Inicial: Raspberry Pi OS e ALSA
Instalando o Raspberry Pi OS
Use o Raspberry Pi OS Lite (64 bits) para builds headless ou o Raspberry Pi OS Desktop se quiser interface gráfica para desenvolvimento. Grave em um cartão SD com o Raspberry Pi Imager e habilite SSH nas configurações avançadas.
Após o primeiro boot:
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3-pip python3-dev portaudio19-dev libsndfile1-dev sox rubberband-cli
Identificando os Dispositivos de Áudio
aplay -l # lista dispositivos de reprodução
arecord -l # lista dispositivos de captura
Com um microfone USB + DAC USB, aparecerão como card 1 e card 2 ao lado do áudio bcm2835 integrado. Anote os números de placa e dispositivo — você vai precisar deles para input_device_index e output_device_index no PyAudio.
Configurando Dispositivos ALSA Padrão
Crie ou edite /etc/asound.conf:
pcm.!default {
type asym
playback.pcm "plughw:2,0"
capture.pcm "plughw:1,0"
}
ctl.!default {
type hw
card 2
}
Substitua os números de placa conforme a saída de aplay -l / arecord -l. Teste com arecord -d 5 test.wav && aplay test.wav.
Voice Changer em Python: Pipeline Principal
Instalando Dependências Python
pip3 install pyaudio numpy librosa sounddevice pyrubberband
Se pyaudio falhar na compilação, certifique-se de que portaudio19-dev está instalado. No Pi OS Bookworm talvez seja necessário instalar dentro de um ambiente virtual:
python3 -m venv voicechanger
source voicechanger/bin/activate
pip install pyaudio numpy librosa sounddevice pyrubberband
Pitch Shifter em Tempo Real Mínimo
O pipeline mais simples lê frames de áudio, aplica pitch shifting com librosa e escreve a saída de volta. Esta é a base sobre a qual todos os efeitos mais complexos são construídos.
import pyaudio
import numpy as np
import librosa
RATE = 44100
CHUNK = 1024
SEMITONES = 4.0 # positivo = tom mais alto, negativo = mais baixo
p = pyaudio.PyAudio()
stream_in = p.open(format=pyaudio.paFloat32,
channels=1,
rate=RATE,
input=True,
frames_per_buffer=CHUNK)
stream_out = p.open(format=pyaudio.paFloat32,
channels=1,
rate=RATE,
output=True,
frames_per_buffer=CHUNK)
print("Voice changer rodando. Ctrl+C para parar.")
try:
while True:
data = np.frombuffer(stream_in.read(CHUNK, exception_on_overflow=False),
dtype=np.float32)
shifted = librosa.effects.pitch_shift(data, sr=RATE, n_steps=SEMITONES)
stream_out.write(shifted.astype(np.float32).tobytes())
except KeyboardInterrupt:
pass
stream_in.stop_stream()
stream_out.stop_stream()
p.terminate()
Isso funciona em uma Pi 4 com CHUNK=1024 a cerca de 23 ms de latência de processamento por frame, mais a latência do buffer ALSA. Espere uma latência total de 40-80 ms dependendo do buffering do dispositivo de áudio USB.
Maior Qualidade com pyrubberband
O pitch_shift do librosa usa um vocoder de fase internamente, que funciona mas pode produzir phasiness nas consoantes. A biblioteca rubberband usa um algoritmo mais sofisticado que trata melhor as transientes — o mesmo motor de correção de tom usado em DAWs profissionais.
import pyrubberband as pyrb
# Substitua a linha do librosa por:
shifted = pyrb.pitch_shift(data, RATE, SEMITONES)
pyrubberband requer o pacote do sistema rubberband-cli (instalado no passo apt). Ele chama o binário do rubberband via subprocess, o que adiciona uma pequena sobrecarga constante. Para a maioria das aplicações de voz de personagem, a melhoria de qualidade vale a pena.
Efeito de Voz Robótica
Uma voz robótica combina vários passos DSP: pitch shift moderado, modulação de anel (modulação de amplitude por uma onda senoidal portadora) e uma pequena reverberação metálica.
import numpy as np
def robot_voice(audio, rate=44100, mod_freq=60.0, shift_semitones=-2):
import librosa
pitched = librosa.effects.pitch_shift(audio, sr=rate, n_steps=shift_semitones)
# Modulação de anel: multiplicar por onda seno portadora
t = np.arange(len(pitched)) / rate
carrier = np.sin(2 * np.pi * mod_freq * t)
modulated = pitched * carrier
# Misturar dry e wet (50/50)
result = 0.5 * pitched + 0.5 * modulated
# Normalizar
peak = np.max(np.abs(result))
if peak > 0:
result /= peak
return result.astype(np.float32)
Ajuste mod_freq para afinar o caráter metálico: 40-60 Hz dá um zumbido mecânico grave; 80-120 Hz soa mais como um robô clássico de ficção científica; 200+ Hz começa a soar mais como efeito de vocoder.
Usando Sox para Efeitos de Voz na Raspberry Pi
Sox (Sound eXchange) é um utilitário de processamento de áudio por linha de comando que vem na maioria das distribuições Linux. Ele trata uma ampla gama de efeitos de voz com flags simples e pode ser chamado do Python via subprocess ou pela biblioteca pysox.
Instalar pysox
pip3 install sox
Efeitos Sox Úteis para Projetos de Voz
| Efeito | Flag Sox | Resultado |
|---|---|---|
| Pitch shift | pitch +500 | +5 semitons (em cents) |
| Eco/delay | echo 0.8 0.9 500 0.5 | Eco único de 500ms |
| Reverb | reverb 80 | Reverb tipo salão |
| Distorção | overdrive 10 | Saturação suave |
| Mudança de tempo | tempo 0.85 | Mais lento sem mudar o tom |
| Filtro passa-baixo | lowpass 3000 | Qualidade de voz por telefone |
| Filtro de banda | band 1000 500 | Rádio CB / walkie-talkie |
Sox é mais útil para builds com padrão push-to-talk — gravar uma amostra, aplicar o efeito, reproduzi-la — do que para streaming contínuo em tempo real. Para voice changers contínuos em tempo real, a abordagem PyAudio + NumPy + librosa é melhor.
Build do Projeto: Voice Changer em Capacete Cosplay
Esta é uma das aplicações mais populares do voice changer com Raspberry Pi — um capacete ou máscara que transforma a voz do usuário para combinar com o personagem. Pense em Homem de Ferro, Mandaloriano, stormtrooper ou qualquer personagem robô ou androide.
Lista de Componentes
- Raspberry Pi 4 (2 GB) ou Pi Zero 2W para builds menores
- Power bank USB (10.000 mAh para operação de várias horas)
- Microfone USB compacto (Fifine K669B ou microfone de lapela USB genérico)
- Pequeno adaptador de áudio USB (para saída de fone de ouvido)
- 2× alto-falante de 3 watts + pequena placa amplificadora Classe D
- Interruptor liga/desliga
- Carcaça de capacete/máscara (impressa em 3D ou comercial)
Script Python para Boot do Capacete
Crie /home/pi/voicechanger/helmet.py com sua função de voz robótica, depois crie um serviço systemd que o inicie na inicialização:
# /etc/systemd/system/helmet-voice.service
[Unit]
Description=Helmet Voice Changer
After=sound.target
[Service]
User=pi
WorkingDirectory=/home/pi/voicechanger
ExecStart=/home/pi/voicechanger/venv/bin/python helmet.py
Restart=on-failure
RestartSec=3
[Install]
WantedBy=multi-user.target
Ative com sudo systemctl enable helmet-voice.service. A Pi inicializa e começa o voice changer em cerca de 15 segundos após ligar.
Configurações de Voz por Personagem
| Tipo de Personagem | Pitch Shift | Freq. Mod. | Efeito Extra |
|---|---|---|---|
| Robô / androide | -3 semitons | 80 Hz | Reverb suave |
| Homem de Ferro (JARVIS) | -1 semitom | Nenhuma | EQ: realce 1-3 kHz, compressão suave |
| Stormtrooper | 0 semitons | 100 Hz | Bandpass 500-3000 Hz (walkie-talkie) |
| Estilo Darth Vader | -4 semitons | 40 Hz | Reverb forte, realce de grave profundo |
| Alienígena / criatura | +2 semitons | 60 Hz | Mod. de anel + eco curto |
Build do Projeto: Prop de Voz para Gaming Retro
Props de eventos de gaming retro — caixas de voz de personagens de 8 bits, efeitos de voz de arcade, gadgets de som portáteis — são outro excelente caso de uso para um voice changer compacto com Raspberry Pi. Para inspiração sobre efeitos de áudio de 8 bits e retro, veja voice changer 8-bit.
Uma Pi Zero 2W em uma carcaça com formato de cartucho, funcionando com uma pequena bateria LiPo, pode acionar clipes de som curtos ou aplicar efeitos de voz em tempo real. Combinado com um botão push-to-talk e um pequeno alto-falante, se torna um prop autônomo que não requer celular ou notebook.
Build do Projeto: Caixa de Voz Robótica Autônoma
Um prop robótico de mesa ou personagem animatrônico se beneficia de uma Pi 4 em uma caixa, rodando um voice changer permanente em que qualquer pessoa pode falar. A configuração é direta:
- Microfone USB em posição omnidirecional
- Script Python sempre ativo (serviço systemd)
- Saída de áudio USB para alto-falante Bluetooth portátil ou alto-falante com amplificador
- Controle opcional de LED ou servo via GPIO para animar o robô quando o nível de áudio supera um limiar
A animação de LED/servo acionada por nível de áudio é uma adição popular. O PyAudio fornece o nível de áudio diretamente pelo RMS de cada buffer:
rms = np.sqrt(np.mean(data**2))
is_speaking = rms > THRESHOLD # defina THRESHOLD experimentalmente
Conecte esse booleano is_speaking a uma saída GPIO e você tem um robô que “abre a boca” quando alguém fala para ele.
Otimização de Latência para Voice Changing em Tempo Real
| Fonte | Valor Típico | Reduzível? |
|---|---|---|
| Buffer de entrada ALSA | 10-30 ms | Sim, reduzir tamanho do buffer |
| Processamento Python (librosa, 1024 amostras) | 23 ms | Sim, reduzir chunk |
| Buffer de saída ALSA | 10-30 ms | Sim |
| Overhead do áudio USB | 5-15 ms | Parcialmente |
| Áudio Bluetooth (se usado) | 50-150 ms | Não — evitar para tempo real |
Dicas de ajuste:
- Reduza CHUNK de 2048 para 512 amostras para baixar de 46 ms para 12 ms de latência de processamento a 44100 Hz.
- Use
sounddeviceem vez de PyAudio para melhor integração ALSA no Linux. - Configure o governor de CPU para performance:
sudo cpufreq-set -g performance. - Use adaptador de áudio USB com fio; Bluetooth adiciona 50-150 ms.
Voice Changer com Raspberry Pi vs Software Dedicado
| Cenário | Raspberry Pi (Python) | Software Dedicado Windows |
|---|---|---|
| Capacete cosplay / prop vestível | Ideal | Não se aplica |
| Prop robótico de mesa | Ideal | Não se aplica |
| Prop retro / autônomo | Ideal | Não se aplica |
| Discord / chat de jogo em PC Windows | Workaround complexo | Muito mais simples |
| Stream no Twitch / YouTube | Possível com roteamento JACK | VoxBooster ou similar é mais simples |
| Qualidade de conversão de voz AI | Limitada (poder da Pi) | Muito melhor (GPU/CPU no PC) |
| Latência no PC | 40-80 ms na Pi | Menos de 10 ms em PC moderno |
| Tempo de configuração | Horas | Minutos |
Para quem busca um voice changer para Discord ou streaming e chegou aqui por engano — considere uma opção nativa do Windows. O VoxBooster cria um microfone virtual diretamente no gráfico de áudio do Windows, processa com menos de 10 ms de latência e leva cerca de cinco minutos para configurar. Você também pode consultar voice changer para Linux se sua máquina de streaming roda Linux.
Para projetos manuais sem Raspberry Pi, o tutorial de voice changer no Audacity cobre manipulação de tom offline, e brinquedos e props voice changer cobre opções de hardware pré-configurado para cosplay. Para projetos baseados em microcontrolador com formato ainda menor, veja voice changer com Arduino.
Perguntas Frequentes
Uma Raspberry Pi consegue rodar um voice changer em tempo real?
Sim. Uma Raspberry Pi 4 ou 5 tem CPU suficiente para rodar pitch shifting com PyAudio e Sox com latência de 20-40 ms. A conversão neural de voz é mais pesada e exige uma Pi 5 ou inferência externalizada, mas efeitos básicos de tom, formantes e voz robótica funcionam confortavelmente em tempo real na Pi 4.
Qual microfone USB funciona melhor com Raspberry Pi para voice changer?
Qualquer microfone USB com interface UAC padrão funciona sem drivers extras no Raspberry Pi OS. Opções populares: Blue Snowball iCE, Fifine K669B e Samson Go Mic. Evite microfones que exigem drivers proprietários do Windows — eles não funcionam no Linux.
Quais bibliotecas Python preciso para um voice changer na Raspberry Pi?
O stack principal é PyAudio (E/S de áudio), NumPy (cálculo matricial) e librosa (análise espectral e pitch shifting) ou pysox (bindings do Sox). Para qualidade rubberband, instale pyrubberband mais rubberband-cli. SoundDevice é uma alternativa mais limpa ao PyAudio para ALSA no Linux.
Como reduzo a latência em um voice changer Python na Raspberry Pi?
Use buffers de 512 ou 1024 amostras a 44100 Hz (12-23 ms). Evite librosa.load() dentro do callback de áudio — pré-compute parâmetros fora. Sox via subprocess adiciona overhead; prefira bibliotecas in-process para menor latência.
Posso usar um voice changer com Raspberry Pi para cosplay ou props?
Com certeza. Uma Pi Zero 2W ou Pi 4 cabe dentro de um capacete ou prop, alimentada por um power bank USB. Conecte um microfone USB, use um alto-falante pequeno e execute o script na inicialização via systemd. Tudo funciona sem teclado ou monitor.
Qual a diferença entre pitch shifting e conversão de voz na Raspberry Pi?
Pitch shifting muda a frequência fundamental do sinal de áudio. Conversão de voz substitui as características acústicas de uma voz pelas de outra usando modelos de machine learning. O primeiro roda em tempo real em qualquer Pi 4; a conversão requer maior poder e funciona melhor na Pi 5 ou com um acelerador USB como o Google Coral.
O VoxBooster funciona na Raspberry Pi?
Não. O VoxBooster é um aplicativo de desktop para Windows 10/11 e roda em hardware x86-64. Para projetos em Linux ou Raspberry Pi, pipelines baseados em Python com PyAudio, librosa e rubberband são a abordagem certa. Se seu objetivo é Discord ou streaming em Windows, o VoxBooster é mais simples e de menor latência.
Conclusão
Um voice changer com Raspberry Pi é um dos projetos de áudio embarcado mais satisfatórios que você pode construir — o hardware é barato, o ecossistema Python para DSP de áudio é maduro e os resultados vão de builds de props funcionais a instalações interativas genuinamente impressionantes. O pipeline principal (PyAudio → processamento NumPy → saída PyAudio) te coloca em funcionamento em menos de uma hora. Adicionar pyrubberband melhora visivelmente a qualidade, e empacotar tudo em um serviço systemd faz o sistema iniciar automaticamente como um dispositivo de consumo.
A Pi 4 atinge seu limite com conversão neural de voz pesada, mas para pitch shifting, modulação de anel, voz robótica e efeitos de personagem ela tem mais do que potência suficiente. Se você superar a Pi, o mesmo código Python roda em qualquer máquina Linux — e os conceitos se transferem diretamente para entender o que ferramentas dedicadas como o VoxBooster fazem ao atingir menos de 10 ms de latência no Windows com conversão de voz AI completa.
Monte o capacete. Ligue o robô. Tire o prop na próxima convenção.
Baixe o VoxBooster — teste gratuito de 3 dias para Windows, sem cartão de crédito.