Raspberry Pi Voice Changer: Construye un Proyecto de Voz de Bolsillo

Construye un cambiador de voz con Raspberry Pi, Python, PyAudio y Sox. Incluye configuración en Pi 4/5, micrófono USB, cascos cosplay, voz robótica y props retro.

Raspberry Pi Voice Changer: Construye un Proyecto de Voz de Bolsillo

Un cambiador de voz con Raspberry Pi abre toda una categoría de proyectos que serían imprácticos en un PC convencional: cascos para cosplay, voces de props robóticos, máquinas de juego retro con audio de personajes y rigs de cosplay autónomos que funcionan completamente con un power bank USB. Esta guía cubre todo: desde la configuración inicial del hardware en Pi 4 y Pi 5, pasando por un cambiador de voz Python funcional con PyAudio, librosa, Sox y enlaces de rubberband, hasta guías completas de tres builds populares. Al terminar tendrás un pipeline funcional y una comprensión clara de las compensaciones entre latencia y calidad en cada paso.


TL;DR

  • Una Raspberry Pi 4 o 5 puede ejecutar desplazamiento de tono en tiempo real y efectos de voz robótica con PyAudio, librosa y pyrubberband.
  • Micrófono USB + salida de audio USB o HDMI — sin cableado analógico para un setup funcional.
  • Builds de cascos cosplay, props de audio retro y rigs de voz robótica funcionan en una Pi sin monitor ejecutando un servicio systemd.
  • Objetivo de latencia: 20-40 ms es alcanzable a 44100 Hz con buffers de 512-1024 muestras.
  • Para uso en Discord/streaming en Windows, una herramienta dedicada como VoxBooster es más rápida de configurar y produce menor latencia.
  • El stack Python descrito aquí también aplica a escritorios Linux — consulta cambiador de voz para Linux para ese enfoque.

Hardware Necesario: Pi 4, Pi 5 y Accesorios

Raspberry Pi 4 vs Pi 5 para Procesamiento de Voz

El modelo de Pi elegido determina qué efectos de voz son prácticos en tiempo real.

CaracterísticaRaspberry Pi 4 (4 GB)Raspberry Pi 5 (4/8 GB)
CPUCortex-A72 @ 1.8 GHzCortex-A76 @ 2.4 GHz
Desplazamiento de tono en tiempo realSí, cómodamenteSí, con margen
STFT de librosa (tiempo real)Justo con buffers pequeños
Conversión neural de vozNo (demasiado lenta)Posible a calidad reducida
Consumo activo~3–5 W~5–8 W
Inactiva en cascoBienBien, algo más caliente
Precio (aprox.)$55$80

Para la mayoría de builds de cosplay y props, una Pi 4 con 2 o 4 GB de RAM es suficiente. La Pi 5 da margen para cadenas DSP más complejas o la capacidad de ejecutar un pequeño modelo ONNX localmente. Una Pi Zero 2W funciona para efectos simples de tono, pero su rendimiento de un solo núcleo la hace poco fiable para cadenas DSP de múltiples etapas.

Selección de Micrófono USB

Cualquier micrófono con interfaz USB Audio Class (UAC 1.0 o 2.0) funcionará en Raspberry Pi OS sin instalar controladores.

Opciones recomendadas:

  • Fifine K669B — compacto, alimentado por bus, cardioide, menos de $30. Cabe dentro de un casco.
  • Blue Snowball iCE — captura más amplia, buena supresión de ruido, soporte estándar en Linux.
  • Samson Go Mic — formato de clip, útil para builds de disfraces donde el espacio es limitado.
  • Micrófono de solapa USB genérico — la opción más barata. Calidad de audio limitada, pero aceptable para efectos de robot/distorsión donde importa menos la fuente.

Evita micrófonos que anuncien “USB solo para Windows” o requieran software de acompañamiento — suelen usar descriptores USB propietarios que no enumeran correctamente en Linux.

Opciones de Salida de Audio

  • Adaptador de audio USB (dongle DAC) — la opción más simple, se conecta junto al micrófono USB. Elige uno con salida de 3.5 mm.
  • Audio HDMI — funciona de serie para builds conectados a pantalla o receptor AV.
  • Altavoz Bluetooth — añade 50-150 ms de latencia adicional. Aceptable para voces de props sin sincronización labial; no ideal para conversación en tiempo real.
  • HAT DAC I2S (p. ej., HiFiBerry DAC+ Zero) — mejor calidad de audio, menor latencia, pero requiere configuración de overlay del kernel.

Para los ejemplos de esta guía usamos micrófono USB + adaptador de audio USB, ya que es lo más fácil de reproducir y no requiere overlay del device tree.


Configuración Inicial: Raspberry Pi OS y ALSA

Instalando Raspberry Pi OS

Usa Raspberry Pi OS Lite (64 bits) para builds sin pantalla o Raspberry Pi OS Desktop si quieres interfaz gráfica para desarrollo. Graba en una tarjeta SD con Raspberry Pi Imager y habilita SSH en los ajustes avanzados.

Tras el primer arranque:

sudo apt update && sudo apt upgrade -y
sudo apt install -y python3-pip python3-dev portaudio19-dev libsndfile1-dev sox rubberband-cli

Identificar Dispositivos de Audio

aplay -l     # lista dispositivos de reproducción
arecord -l   # lista dispositivos de captura

Con un micrófono USB + DAC USB, aparecerán como card 1 y card 2 junto al audio bcm2835 integrado. Anota los números de tarjeta y dispositivo — los necesitarás para input_device_index y output_device_index en PyAudio.

Configurar Dispositivos ALSA por Defecto

Crea o edita /etc/asound.conf:

pcm.!default {
    type asym
    playback.pcm "plughw:2,0"
    capture.pcm "plughw:1,0"
}
ctl.!default {
    type hw
    card 2
}

Reemplaza los números de tarjeta según tu salida de aplay -l / arecord -l. Prueba con arecord -d 5 test.wav && aplay test.wav.


Cambiador de Voz Python: Pipeline Principal

Instalando Dependencias Python

pip3 install pyaudio numpy librosa sounddevice pyrubberband

Si pyaudio falla al compilar, asegúrate de que portaudio19-dev está instalado. En Pi OS Bookworm puede ser necesario instalar en un entorno virtual:

python3 -m venv voicechanger
source voicechanger/bin/activate
pip install pyaudio numpy librosa sounddevice pyrubberband

Desplazador de Tono en Tiempo Real Mínimo

El pipeline más simple lee frames de audio, aplica desplazamiento de tono con librosa y escribe la salida. Esta es la base sobre la que se construyen todos los efectos más complejos.

import pyaudio
import numpy as np
import librosa

RATE = 44100
CHUNK = 1024
SEMITONES = 4.0   # positivo = tono más alto, negativo = más bajo

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("Cambiador de voz activo. Ctrl+C para detener.")
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()

Esto funciona en una Pi 4 con CHUNK=1024 a unos 23 ms de latencia de procesamiento por frame, más la latencia del buffer ALSA. Espera una latencia de ida y vuelta total de 40-80 ms dependiendo del almacenamiento en buffer del dispositivo de audio USB.

Mayor Calidad con pyrubberband

El pitch_shift de librosa usa un vocoder de fase internamente, que funciona pero puede producir efecto de fase en las consonantes. La librería rubberband usa un algoritmo más sofisticado que gestiona mejor las transitorias — el mismo motor de corrección de tono usado en DAWs profesionales.

import pyrubberband as pyrb

# Reemplaza la línea de librosa con:
shifted = pyrb.pitch_shift(data, RATE, SEMITONES)

pyrubberband requiere el paquete del sistema rubberband-cli (instalado en el paso apt). Llama al binario de rubberband por subprocess, lo que añade una pequeña sobrecarga constante. Para la mayoría de aplicaciones de voz de personaje, la mejora de calidad vale la pena.

Efecto de Voz Robótica

Una voz robótica combina varios pasos DSP: desplazamiento de tono moderado, modulación de anillo (modulación de amplitud por una onda sinusoidal portadora) y una pequeña reverberación 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)
    
    # Modulación de anillo: multiplicar por una onda seno portadora
    t = np.arange(len(pitched)) / rate
    carrier = np.sin(2 * np.pi * mod_freq * t)
    modulated = pitched * carrier
    
    # Mezclar seco y húmedo (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)

Ajusta mod_freq para afinar el carácter metálico: 40-60 Hz da un zumbido mecánico grave; 80-120 Hz suena más a robot de ciencia ficción clásica; 200+ Hz empieza a sonar más como un efecto de vocoder.


Usando Sox para Efectos de Voz en Raspberry Pi

Sox (Sound eXchange) es una utilidad de procesamiento de audio por línea de comandos que viene en la mayoría de distribuciones Linux. Maneja una amplia gama de efectos de voz con simples flags y puede llamarse desde Python mediante subprocess o a través de la librería pysox.

Instalar pysox

pip3 install sox

Efectos Sox Útiles para Proyectos de Voz

EfectoFlag SoxResultado
Desplazamiento de tonopitch +500+5 semitonos (en cents)
Eco/retardoecho 0.8 0.9 500 0.5Eco único de 500ms
Reverberaciónreverb 80Reverb tipo sala grande
Distorsiónoverdrive 10Saturación suave
Cambio de tempotempo 0.85Más lento sin cambio de tono
Filtro paso bajolowpass 3000Calidad de voz por teléfono
Filtro de bandaband 1000 500Radio CB / walkie-talkie

Sox es más útil para builds con patrón push-to-talk — grabar una muestra, aplicar el efecto, reproducirla — que para streaming continuo en tiempo real. Para cambiadores de voz en tiempo real continuo, el enfoque PyAudio + NumPy + librosa es mejor.


Build de Proyecto: Cambiador de Voz en Casco Cosplay

Esta es una de las aplicaciones más populares del cambiador de voz con Raspberry Pi — un casco o máscara que transforma la voz del portador para que coincida con el personaje. Piensa en Iron Man, Mandaloriano, stormtrooper o cualquier personaje robot o androide.

Lista de Componentes

  • Raspberry Pi 4 (2 GB) o Pi Zero 2W para builds pequeños
  • Power bank USB (10.000 mAh para operación de varias horas)
  • Micrófono USB compacto (Fifine K669B o micrófono de solapa USB genérico)
  • Pequeño adaptador de audio USB (para salida de auriculares)
  • 2× altavoz de 3 vatios + pequeña placa amplificadora Clase D
  • Interruptor de encendido/apagado
  • Casco/máscara de housing (impreso en 3D o comercial)

Script Python para Arranque del Casco

Crea /home/pi/voicechanger/helmet.py con tu función de voz robótica, luego crea un servicio systemd que lo arranque al inicio:

# /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

Habilita con sudo systemctl enable helmet-voice.service. La Pi arranca e inicia el cambiador de voz en unos 15 segundos desde el encendido.

Configuraciones de Voz por Personaje

Tipo de PersonajeDesplazamientoFreq. Mod.Efecto Extra
Robot / androide-3 semitonos80 HzReverb suave
Iron Man (JARVIS)-1 semitonoNingunaEQ: realce 1-3 kHz, compresión suave
Stormtrooper0 semitonos100 HzBandpass 500-3000 Hz (walkie-talkie)
Estilo Darth Vader-4 semitonos40 HzReverb fuerte, realce grave profundo
Alienígena / criatura+2 semitonos60 HzMod. de anillo + eco corto

Build de Proyecto: Prop de Voz para Gaming Retro

Los props de eventos de gaming retro — cajas de voz de personajes de 8 bits, efectos de voz de arcade, gadgets de sonido portátiles — son otro excelente caso de uso para un cambiador de voz compacto con Raspberry Pi. Para inspiración sobre efectos de audio de 8 bits y retro, consulta cambiador de voz 8-bit.

Una Pi Zero 2W en una carcasa con forma de cartucho, funcionando con una pequeña batería LiPo, puede reproducir clips de sonido cortos o aplicar efectos de voz en tiempo real. Combinado con un botón push-to-talk y un pequeño altavoz, se convierte en un prop autónomo que no requiere teléfono ni portátil.


Build de Proyecto: Caja de Voz Robótica Autónoma

Un prop robótico de mesa o personaje animatrónico se beneficia de una Pi 4 en una caja, ejecutando un cambiador de voz permanente en el que cualquiera puede hablar. La configuración es sencilla:

  1. Micrófono USB en posición omnidireccional
  2. Script Python siempre activo (servicio systemd)
  3. Audio USB a un altavoz Bluetooth portátil o altavoz con amplificador
  4. Control opcional de LED o servo por GPIO para animar el robot cuando el nivel de audio supera un umbral

La animación de LED/servo disparada por nivel de audio es una adición popular. PyAudio proporciona el nivel de audio directamente desde el RMS de cada buffer:

rms = np.sqrt(np.mean(data**2))
is_speaking = rms > THRESHOLD   # establece THRESHOLD experimentalmente

Conecta ese booleano is_speaking a una salida GPIO y tienes un robot que “abre la boca” cuando alguien habla frente a él.


Optimización de Latencia para Cambio de Voz en Tiempo Real

FuenteValor Típico¿Reducible?
Buffer de entrada ALSA10-30 msSí, reducir tamaño de buffer
Procesamiento Python (librosa, 1024 muestras)23 msSí, reducir chunk
Buffer de salida ALSA10-30 ms
Sobrecarga de audio USB5-15 msParcialmente
Audio Bluetooth (si se usa)50-150 msNo — evitar para tiempo real

Consejos de ajuste:

  • Reduce CHUNK de 2048 a 512 muestras para bajar de 46 ms a 12 ms de latencia de procesamiento a 44100 Hz.
  • Usa sounddevice en lugar de PyAudio para mejor integración ALSA en Linux.
  • Configura el gobernador de CPU en rendimiento: sudo cpufreq-set -g performance.
  • Usa adaptador de audio USB con cable; Bluetooth añade 50-150 ms.

Cambiador de Voz con Raspberry Pi vs Software Dedicado

EscenarioRaspberry Pi (Python)Software Dedicado Windows
Casco cosplay / prop ponibleIdealNo aplica
Prop robótico de mesaIdealNo aplica
Prop retro / autónomoIdealNo aplica
Discord / chat de juego en PC WindowsWorkaround complejoMucho más simple
Stream en Twitch / YouTubePosible con enrutamiento JACKVoxBooster o similar es más simple
Calidad de conversión de voz AILimitada (potencia de Pi)Mucho mejor (GPU/CPU en PC)
Latencia en PC40-80 ms en PiMenos de 10 ms en PC moderno
Tiempo de configuraciónHorasMinutos

Para quien busca un cambiador de voz para Discord o streaming y llegó aquí por accidente — considera una opción nativa de Windows. VoxBooster crea un micrófono virtual directamente en el gráfico de audio de Windows, procesa con menos de 10 ms de latencia y tarda unos cinco minutos en configurarse. También puedes consultar cambiador de voz para Linux si tu máquina de streaming corre Linux.

Para proyectos manuales que no involucran Raspberry Pi, el tutorial de cambiador de voz en Audacity cubre manipulación de tono offline, y juguetes y props cambiadores de voz cubre opciones de hardware preconfigurado para cosplay. Para proyectos basados en microcontrolador con forma aún más pequeña, consulta cambiador de voz con Arduino.


Preguntas Frecuentes

¿Puede una Raspberry Pi ejecutar un cambiador de voz en tiempo real?

Sí. Una Raspberry Pi 4 o 5 tiene suficiente CPU para correr desplazamiento de tono con PyAudio y Sox a 20-40 ms de latencia. La conversión neural de voz requiere más recursos y necesita una Pi 5 o inferencia externalizada, pero los efectos básicos de tono, formantes y voz robótica funcionan cómodamente en tiempo real en una Pi 4.

¿Qué micrófono USB funciona mejor con Raspberry Pi para cambiar la voz?

Cualquier micrófono USB con interfaz UAC estándar funciona sin controladores adicionales en Raspberry Pi OS. Opciones populares: Blue Snowball iCE, Fifine K669B y Samson Go Mic. Evita micrófonos que requieran controladores propietarios de Windows — no funcionarán en Linux.

¿Qué librerías de Python necesito para un cambiador de voz en Raspberry Pi?

El stack principal es PyAudio (E/S de audio), NumPy (cálculo matricial) y librosa (análisis espectral y desplazamiento de tono) o pysox (enlaces a Sox). Para calidad rubberband, instala pyrubberband más rubberband-cli. SoundDevice es una alternativa más limpia a PyAudio para ALSA en Linux.

¿Cómo reduzco la latencia en un cambiador de voz Python en Raspberry Pi?

Usa buffers de 512 o 1024 muestras a 44100 Hz (12-23 ms). Evita librosa.load() dentro del callback de audio — precomputa parámetros fuera. Sox por subprocess añade overhead; prefiere librerías en proceso para menor latencia.

¿Puedo usar un cambiador de voz con Raspberry Pi para cosplay o props?

Por supuesto. Una Pi Zero 2W o Pi 4 cabe dentro de un casco o prop, alimentada por un power bank USB. Conecta un micrófono USB, usa un altavoz pequeño y ejecuta el script al arranque mediante systemd. Todo funciona sin teclado ni pantalla.

¿Cuál es la diferencia entre desplazamiento de tono y conversión de voz en Raspberry Pi?

El desplazamiento de tono cambia la frecuencia fundamental de la señal de audio. La conversión de voz reemplaza las características acústicas de una voz por las de otra mediante modelos de aprendizaje automático. El primero corre en tiempo real en cualquier Pi 4; la conversión requiere mayor potencia y funciona mejor en Pi 5 o con un acelerador USB como Google Coral.

¿VoxBooster funciona en Raspberry Pi?

No. VoxBooster es una aplicación de escritorio para Windows 10/11 y funciona en hardware x86-64. Para proyectos en Linux o Raspberry Pi, los pipelines basados en Python con PyAudio, librosa y rubberband son la opción correcta. Si tu objetivo es Discord o streaming en Windows, VoxBooster es más sencillo y de menor latencia.


Conclusión

Un cambiador de voz con Raspberry Pi es uno de los proyectos de audio embebido más satisfactorios que puedes construir — el hardware es barato, el ecosistema Python para DSP de audio es maduro y los resultados van desde builds de props funcionales hasta instalaciones interactivas realmente impresionantes. El pipeline principal (PyAudio → procesamiento NumPy → salida PyAudio) te pone en marcha en menos de una hora. Añadir pyrubberband mejora notablemente la calidad, y empaquetarlo todo en un servicio systemd hace que arranque automáticamente como un dispositivo de consumo.

La Pi 4 alcanza su límite con conversión neural de voz pesada, pero para desplazamiento de tono, modulación de anillo, voz robótica y efectos de personaje tiene más que suficiente potencia. Si superas la Pi, el mismo código Python corre en cualquier máquina Linux — y los conceptos se transfieren directamente a entender lo que herramientas dedicadas como VoxBooster hacen cuando logran menos de 10 ms de latencia en Windows con conversión de voz AI completa.

Construye el casco. Pon en marcha el robot. Saca el prop en la próxima convención.

Descarga VoxBooster — prueba gratuita de 3 días para Windows, sin tarjeta de crédito.

Prueba VoxBooster — 3 días gratis.

Clonación de voz en tiempo real, soundboard y efectos — donde ya hablas.

  • Sin tarjeta
  • ~30ms de latencia
  • Discord · Teams · OBS
Probar 3 días gratis