Raspberry Pi Voice Changer: Bangun Proyek Suara Genggam Anda

Bangun pengubah suara Raspberry Pi dengan Python, PyAudio, dan Sox. Mencakup setup Pi 4/5, mikrofon USB, pembuatan helm cosplay, suara robot, dan prop permainan retro.

Raspberry Pi Voice Changer: Bangun Proyek Suara Genggam Anda

Pengubah suara Raspberry Pi membuka seluruh kategori proyek yang tidak praktis di PC standar — pembuatan helm, suara prop robot, mesin permainan retro dengan audio karakter, dan rig cosplay standalone yang berjalan sepenuhnya dari power bank USB. Panduan ini mencakup segalanya dari setup hardware awal di Pi 4 dan Pi 5, melalui pengubah suara Python yang berfungsi menggunakan PyAudio, librosa, Sox, dan binding rubberband, hingga walkthrough proyek lengkap untuk tiga pembuatan populer. Di akhir panduan ini Anda akan memiliki pipeline yang fungsional dan pemahaman yang jelas tentang latensi dan tradeoff kualitas di setiap langkah.


TL;DR

  • Raspberry Pi 4 atau 5 dapat menjalankan pitch shifting real-time dan efek suara robot menggunakan PyAudio, librosa, dan pyrubberband.
  • Mikrofon USB + USB atau HDMI audio out — tidak perlu wiring analog untuk setup yang berfungsi.
  • Pembuatan helm cosplay, prop audio permainan retro, dan rig suara robot semuanya bekerja di Pi headless yang menjalankan layanan systemd.
  • Target latensi: 20-40 ms dapat dicapai pada 44100 Hz dengan ukuran buffer 512-1024 sampel.
  • Untuk penggunaan berbasis Windows Discord/streaming, alat dedicated seperti VoxBooster lebih cepat untuk diatur dan menghasilkan latensi lebih rendah.
  • Stack Python yang dijelaskan di sini juga berlaku untuk desktop Linux — lihat voice changer untuk Linux untuk sudut pandang itu.

Hardware yang Anda Butuhkan: Pi 4, Pi 5, dan Aksesori

Raspberry Pi 4 vs Pi 5 untuk Pemrosesan Suara

Pilihan model Pi menentukan efek suara apa yang praktis secara real-time.

FiturRaspberry Pi 4 (4 GB)Raspberry Pi 5 (4/8 GB)
CPUCortex-A72 @ 1.8 GHzCortex-A76 @ 2.4 GHz
Real-time pitch shiftYa, nyamanYa, dengan headroom
Librosa STFT (real-time)Borderline pada buffer kecilYa
Neural voice conversionTidak (terlalu lambat)Mungkin pada kualitas berkurang
Konsumsi daya (aktif)~3–5 W~5–8 W
Idle dalam pembuatan helmBaikBaik, berjalan sedikit lebih hangat
Harga (perkiraan)$55$80

Untuk sebagian besar pembuatan cosplay dan prop, Pi 4 dengan RAM 2 GB atau 4 GB sudah cukup. Pi 5 memberi Anda headroom untuk rantai DSP yang lebih kompleks atau kemampuan menjalankan model suara ONNX kecil secara lokal. Pi Zero 2W bekerja untuk efek pitch-only yang sangat sederhana namun performa single-core-nya membuat unreliable untuk rantai DSP multi-tahap.

Pemilihan Mikrofon USB

Mikrofon apa pun yang mengekspos antarmuka USB Audio Class (UAC 1.0 atau 2.0) standar akan bekerja di Raspberry Pi OS tanpa instalasi driver.

Opsi yang direkomendasikan:

  • Fifine K669B — kompak, bus-powered, cardioid, di bawah $30. Cocok di dalam casing helm.
  • Blue Snowball iCE — pickup lebih luas, penolakan noise yang baik, support Linux standar.
  • Samson Go Mic — faktor bentuk clip-on, berguna untuk pembuatan kostum di mana ruang terbatas.
  • Generic USB lapel mic — opsi paling murah. Kualitas audio terbatas namun dapat diterima untuk efek robot/distorsi di mana kualitas sumber penting lebih sedikit.

Hindari mikrofon yang mengiklankan “USB untuk Windows saja” atau memerlukan software companion — mikrofon tersebut biasanya menggunakan deskriptor USB proprietary yang tidak enumerate dengan benar di Linux.

Opsi Output Audio

  • USB audio adapter (DAC dongle) — opsi paling sederhana, colok di samping mikrofon USB. Pilih yang dengan output headphone 3.5 mm.
  • HDMI audio — bekerja out of the box untuk pembuatan helm yang terhubung ke display atau receiver AV.
  • Bluetooth speaker — menambah 50-150 ms latensi tambahan dari stack Bluetooth. Dapat diterima untuk suara prop di mana sync dengan gerakan bibir tidak kritis; tidak bagus untuk percakapan real-time.
  • I2S DAC HAT (misalnya HiFiBerry DAC+ Zero) — kualitas audio terbaik, latensi terendah, namun memerlukan konfigurasi kernel overlay.

Untuk contoh dalam panduan ini kami menggunakan mikrofon USB + adapter audio USB, karena ini adalah cara termudah untuk direproduksi dan tidak memerlukan device tree overlay.


Setup Awal: Raspberry Pi OS dan Konfigurasi ALSA

Menginstal Raspberry Pi OS

Gunakan Raspberry Pi OS Lite (64-bit) untuk pembuatan headless atau Raspberry Pi OS Desktop jika Anda ingin antarmuka grafis untuk development. Flash ke kartu SD menggunakan Raspberry Pi Imager dan enable SSH di pengaturan advanced imager.

Setelah boot pertama:

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

Mengidentifikasi Perangkat Audio Anda

aplay -l     # lists playback devices
arecord -l   # lists capture devices

Output tipikal dengan mic USB + DAC USB akan menunjukkan keduanya sebagai card 1 dan card 2 di samping audio bcm2835 built-in. Catat nomor card dan device — Anda akan membutuhkannya untuk input_device_index dan output_device_index PyAudio.

Menetapkan Perangkat ALSA Default

Buat atau edit /etc/asound.conf:

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

Ganti nomor card untuk cocok dengan output aplay -l / arecord -l Anda. Test dengan arecord -d 5 test.wav && aplay test.wav.


Python Voice Changer: Pipeline Inti

Menginstal Dependensi Python

pip3 install pyaudio numpy librosa sounddevice pyrubberband

Jika pyaudio gagal dibangun, pastikan portaudio19-dev diinstal. Di Pi OS Bookworm Anda mungkin perlu menginstal di dalam virtual environment:

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

Minimal Real-Time Pitch Shifter

Pipeline paling sederhana membaca frame audio, menerapkan pitch shifting dengan librosa, dan menulis output kembali. Ini adalah foundation yang setiap efek lebih kompleks dibangun di atas.

import pyaudio
import numpy as np
import librosa

RATE = 44100
CHUNK = 1024
SEMITONES = 4.0   # positive = higher pitch, negative = lower

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 running. Ctrl+C to stop.")
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()

Ini akan bekerja di Pi 4 dengan CHUNK=1024 pada sekitar 23 ms latensi pemrosesan per frame, ditambah ALSA buffer latensi. Harapkan total latensi round-trip 40-80 ms tergantung pada buffering perangkat audio USB.

Higher-Quality Shifting dengan pyrubberband

pitch_shift librosa menggunakan phase vocoder secara internal, yang bekerja namun dapat menghasilkan phasiness pada konsonan. Perpustakaan rubberband menggunakan algoritma yang lebih sophisticated yang menangani transient lebih baik — mesin yang sama digunakan dalam professional DAW pitch correction.

import pyrubberband as pyrb

# Replace the librosa line with:
shifted = pyrb.pitch_shift(data, RATE, SEMITONES)

pyrubberband memerlukan paket sistem rubberband-cli (diinstal dalam langkah apt di atas). Ini memanggil binary rubberband via subprocess, yang menambahkan overhead kecil namun konstan. Untuk sebagian besar aplikasi suara karakter peningkatan kualitas bernilai.

Efek Suara Robot

Suara robot menggabungkan beberapa langkah DSP: pitch shift sedang, ring modulation (amplitude modulation oleh sine wave carrier), dan reverb metalik pendek.

import numpy as np

def robot_voice(audio, rate=44100, mod_freq=60.0, shift_semitones=-2):
    # Pitch down slightly for that mechanical quality
    import librosa
    pitched = librosa.effects.pitch_shift(audio, sr=rate, n_steps=shift_semitones)
    
    # Ring modulation: multiply by a sine wave carrier
    t = np.arange(len(pitched)) / rate
    carrier = np.sin(2 * np.pi * mod_freq * t)
    modulated = pitched * carrier
    
    # Mix dry and wet (50/50)
    result = 0.5 * pitched + 0.5 * modulated
    
    # Normalize
    peak = np.max(np.abs(result))
    if peak > 0:
        result /= peak
    return result.astype(np.float32)

Sesuaikan mod_freq untuk tune karakter metalik: 40-60 Hz memberi low mechanical hum; 80-120 Hz terdengar lebih seperti classic science-fiction robot; 200+ Hz mulai terdengar lebih seperti efek vocoder.


Menggunakan Sox untuk Efek Suara di Raspberry Pi

Sox (Sound eXchange) adalah utility audio command-line yang dikirim di sebagian besar distribusi Linux. Ini menangani berbagai efek suara melalui flag sederhana, dan dapat dipanggil dari Python via subprocess atau melalui perpustakaan wrapper pysox.

Install pysox

pip3 install sox

Menerapkan Efek Sox dari Python

Sox memproses audio files daripada real-time streams, yang berarti ini bekerja paling baik dalam pipeline di mana Anda merekam short buffer, memproses, kemudian memainkannya kembali — secara efektif pendekatan streaming low-latency dengan slight block delay.

import sox
import tempfile, os

def apply_sox_effect(input_wav, effect_name, effect_args):
    tfm = sox.Transformer()
    if effect_name == "pitch":
        tfm.pitch(effect_args)   # semitones * 100 = cents
    elif effect_name == "rate":
        tfm.rate(effect_args)
    elif effect_name == "reverb":
        tfm.reverb(reverberance=effect_args)
    
    with tempfile.NamedTemporaryFile(suffix=".wav", delete=False) as f:
        out_path = f.name
    tfm.build(input_wav, out_path)
    return out_path

Sox lebih berguna untuk membangun pengubah suara Raspberry Pi dengan pola push-to-talk — rekam sampel, terapkan efek, mainkan kembali — daripada true real-time streaming. Untuk voice changing continuous real-time, pendekatan PyAudio + NumPy + librosa lebih baik.

Efek Sox Berguna untuk Proyek Suara

EfekFlag SoxHasil
Pitch shiftpitch +500+5 semitone (dalam cent)
Echo/delayecho 0.8 0.9 500 0.5Single 500ms echo
Reverbreverb 80Hall-sized reverb
Distortionoverdrive 10Mild saturation
Tempo changetempo 0.85Lebih lambat tanpa pitch change
Low-pass filterlowpass 3000Telephone voice quality
Bandpassband 1000 500CB radio / walkie-talkie

Project Build: Cosplay Helmet Voice Changer

Ini adalah salah satu aplikasi pengubah suara Raspberry Pi paling populer — helm atau mask yang dapat dipakai yang mengubah suara pemakainya untuk cocok dengan karakter. Pikirkan Iron Man, Mandalorian, stormtrooper, atau karakter robot/android apa pun.

Component List

  • Raspberry Pi 4 (2 GB) atau Pi Zero 2W untuk pembuatan kecil
  • USB power bank (10,000 mAh untuk operasi multi-jam)
  • Mikrofon USB kompak (Fifine K669B atau generic lapel USB mic)
  • Small USB audio adapter (untuk headphone out)
  • 2× 3-watt speaker + small Class D amplifier board
  • Toggle switch untuk on/off
  • 3D-printed atau commercial helmet/mask housing

Wiring

  1. Power bank → Pi USB-C power input
  2. USB mic → Pi USB port
  3. USB audio adapter → Pi USB port
  4. Headphone out → amplifier board → speakers mounted dalam helm

Jaga kabel USB tetap pendek (di bawah 30 cm) untuk mengurangi interferensi elektromagnetik yang dapat muncul sebagai hiss pada USB audio hardware murah.

Python Script untuk Helm Boot

Buat /home/pi/voicechanger/helmet.py dengan fungsi suara robot Anda, kemudian buat layanan systemd yang memulainya saat boot:

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

Enable dengan sudo systemctl enable helmet-voice.service. Pi boot dan mulai pengubah suara dalam sekitar 15 detik setelah power-on.

Pengaturan Suara Karakter

Tipe KarakterPitch ShiftMod FreqEfek Ekstra
Robot / android-3 semitone80 HzLight reverb
Iron Man (JARVIS)-1 semitoneNoneEQ: boost 1-3 kHz, slight compression
Stormtrooper0 semitone100 HzBandpass 500-3000 Hz (walkie-talkie)
Darth Vader style-4 semitone40 HzHeavy reverb, deep bass boost
Alien / creature+2 semitone60 HzRing mod + short echo

Project Build: Retro Gaming Voice Prop

Prop retro gaming event — pikirkan 8-bit game character voice boxes, arcade cabinet voice effects, atau handheld sound gadgets — adalah use case excellent lain untuk compact Raspberry Pi voice changer.

Pi Zero 2W dalam housing cartridge-shaped, berjalan dari small LiPo battery, dapat trigger short sound clips atau menerapkan efek suara real-time. Dikombinasikan dengan push-to-talk button dan small speaker, ini menjadi standalone prop yang memerlukan tidak ada phone atau laptop.

Setup hardware serupa dengan pembuatan helm di atas namun lebih sederhana: Anda dapat menggunakan small piezo buzzer untuk efek sederhana atau 1-watt speaker untuk output suara. Skrip Python mendengarkan GPIO button presses untuk trigger preset suara berbeda. Untuk inspirasi pada efek audio 8-bit dan retro, lihat 8-bit voice changer.


Project Build: Standalone Robot Voice Box

Robot prop tabletop atau animatronic character mendapat manfaat dari Pi 4 dalam box, menjalankan permanent voice changer yang siapa pun dapat berbicara ke dalamnya. Setup straightforward:

  1. USB mic dalam posisi pickup omnidirectional (atau arahkan ke tempat orang berdiri)
  2. Always-on Python script (layanan systemd)
  3. USB audio out ke portable Bluetooth speaker atau wired speaker dengan amplifier
  4. Optional LED atau servo control via GPIO untuk animate robot ketika audio level melebihi threshold

LED/servo animation triggered oleh audio level adalah popular addition. PyAudio menyediakan audio level langsung dari RMS setiap buffer:

rms = np.sqrt(np.mean(data**2))
is_speaking = rms > THRESHOLD   # set THRESHOLD by experiment

Connect boolean is_speaking itu ke GPIO output dan Anda memiliki robot yang “opens its mouth” ketika seseorang berbicara ke dalamnya.


Latency Optimization untuk Real-Time Voice Changing

Latensi adalah main engineering challenge dalam any real-time voice changer, Pi atau otherwise. Human perception dari lip-sync discrepancy menjadi noticeable sekitar 50 ms dan distracting di atas 80 ms. Untuk aplikasi voice-only (no video), latensi hingga 150 ms tolerable; untuk conversation, di bawah 50 ms terasa natural.

Sumber Latensi di Raspberry Pi

SumberTypical ValueReducible?
ALSA input buffer10-30 msYes, reduce buffer size
Python processing (librosa, 1024 samples)23 msYes, reduce chunk size
ALSA output buffer10-30 msYes
USB audio roundtrip overhead5-15 msPartially
Bluetooth audio (if used)50-150 msNo — avoid untuk real-time

Tuning Tips

  • Reduce CHUNK: Dari 2048 ke 512 samples cuts processing latensi dari 46 ms ke 12 ms pada 44100 Hz. Trade-off adalah more Python callback invocations per detik, meningkatkan CPU load.
  • Use sounddevice instead of PyAudio: Perpustakaan sounddevice memiliki ALSA integration yang lebih bersih di Linux dan sering mencapai latensi lebih rendah dengan less buffer underrun.
  • Avoid librosa.load() inside the callback: Semua setup (sample rate, model parameters) harus terjadi sebelum audio callback mulai.
  • Set CPU governor to performance: sudo cpufreq-set -g performance mencegah Pi dari throttling CPU mid-stream.
  • Use a wired USB audio adapter: Bluetooth menambah 50-150 ms. Wired USB audio menambah hanya 5-15 ms.

Raspberry Pi Voice Changer vs Dedicated Software

Jika goal final Anda adalah voice changing untuk Discord, game chat, Twitch, atau Windows applications, bernilai menjadi jelas tentang di mana proyek Pi fits versus dedicated Windows voice changer.

SkenarioRaspberry Pi (Python)Windows Dedicated Software
Cosplay helmet / wearable propIdealNot applicable
Tabletop robot propIdealNot applicable
Retro gaming prop / standaloneIdealNot applicable
Discord / game chat di Windows PCWorkaround (USB audio loopback)Much simpler
Twitch / YouTube stream voicePossible dengan JACK routingVoxBooster atau similar lebih sederhana
AI voice conversion qualityLimited (Pi compute)Much better (GPU/CPU pada PC)
Latensi di PC40-80 ms di PiDi bawah 10 ms di modern PC
Setup timeHoursMinutes
Cost$55-$80 (Pi alone)Subscription atau one-time

Untuk siapa pun membangun prop atau wearable, Pi genuinely tool yang tepat dan panduan ini memberikan Anda starting point lengkap. Untuk siapa pun yang mendapat di sini sambil mencari Discord atau streaming voice changer dan accidentally mendarat di tutorial Pi — lihat opsi Windows-native sebagai gantinya. VoxBooster menciptakan virtual microphone langsung dalam Windows audio graph, memproses dengan sub-10ms latency, dan memerlukan sekitar lima menit untuk diatur. Anda juga dapat melihat voice changer untuk Linux jika mesin streaming Anda berjalan Linux daripada Windows.

Untuk hands-on projects yang tidak melibatkan Raspberry Pi sama sekali, Audacity voice changer tutorial mencakup offline pitch manipulation, dan voice changer toys dan props mencakup pre-built hardware options untuk cosplay.

Untuk microcontroller-based projects dengan form factors bahkan lebih kecil, lihat Arduino voice changer — pendekatan berbeda (Arduino menangani simpler, analog effects) namun use cases overlap dalam prop building.


Frequently Asked Questions

Bisakah Raspberry Pi menjalankan pengubah suara real-time?

Ya. Raspberry Pi 4 atau 5 memiliki CPU yang cukup untuk menjalankan pitch-shifting ringan dengan PyAudio dan Sox pada latensi 20-40 ms. Konversi suara neural berbasis AI lebih berat dan memerlukan Pi 5 atau langkah inference yang offloaded, namun efek pitch dasar, formant, dan suara robot berjalan nyaman secara real-time di Pi 4.

Mikrofon USB apa yang paling cocok dengan Raspberry Pi untuk pengubahan suara?

Mikrofon USB apa pun yang mengekspos antarmuka UAC (USB Audio Class) standar akan bekerja tanpa driver tambahan di Raspberry Pi OS. Pilihan populer termasuk Blue Snowball iCE, Fifine K669B, dan Samson Go Mic. Hindari mikrofon yang memerlukan driver Windows proprietary — mikrofon tersebut tidak akan berfungsi di Linux.

Perpustakaan Python apa yang saya butuhkan untuk pengubah suara Raspberry Pi?

Stack inti adalah PyAudio (I/O audio), NumPy (math array), dan librosa (analisis spektral dan pitch shifting) atau pysox (binding Sox) untuk transformasi. Untuk pitch shifting berkualitas rubberband, install pyrubberband plus paket sistem rubberband-cli. SoundDevice adalah alternatif yang lebih bersih untuk PyAudio pada ALSA di Linux.

Bagaimana cara mengurangi latensi dalam pengubah suara Python di Raspberry Pi?

Gunakan ukuran buffer audio kecil (512 atau 1024 sampel pada 44100 Hz menghasilkan 12-23 ms). Proses dalam frame overlapping pendek dengan jendela Hann. Hindari librosa load() di dalam audio callback — precompute parameter di luar. Sox via subprocess menambahkan overhead pipe; lebih suka perpustakaan in-process untuk latensi terendah.

Bisakah saya menggunakan pengubah suara Raspberry Pi untuk cosplay atau pembuatan prop?

Tentu saja. Pi Zero 2W atau Pi 4 cocok di dalam helm atau casing prop, ditenagai oleh power bank USB. Hubungkan mikrofon USB di dalam helm, jalankan speaker kecil atau audio Bluetooth keluar, dan jalankan skrip pengubah suara Python saat boot melalui layanan systemd. Seluruh unit dapat berjalan headless tanpa keyboard atau layar.

Apa perbedaan antara pitch shifting dan voice conversion di Raspberry Pi?

Pitch shifting mengubah frekuensi fundamental sinyal audio, seperti menaikkan atau menurunkan pitch musik. Voice conversion mengganti karakteristik akustik satu suara dengan yang lain menggunakan model machine-learning. Pitch shifting berjalan real-time di Pi 4 apa pun; voice conversion memerlukan inference yang lebih berat dan bekerja paling baik di Pi 5 atau dengan akselerator USB seperti Google Coral.

Apakah VoxBooster bekerja di Raspberry Pi?

Tidak. VoxBooster adalah aplikasi desktop Windows 10/11 dan berjalan di hardware x86-64. Untuk proyek Linux atau Raspberry Pi, pipeline berbasis Python dengan PyAudio, librosa, dan rubberband adalah pendekatan yang tepat. Jika tujuan akhir Anda adalah setup Discord atau streaming di mesin Windows, VoxBooster adalah opsi yang lebih sederhana dan berlatency lebih rendah.


Kesimpulan

Pengubah suara Raspberry Pi adalah salah satu proyek audio embedded paling memuaskan yang dapat Anda bangun — hardware murah, ekosistem Python untuk audio DSP mature, dan hasil akhir berkisar dari prop builds fungsional hingga genuinely impressive interactive installations. Pipeline inti (PyAudio → NumPy processing → PyAudio out) membuatmu berjalan dalam waktu kurang dari satu jam. Menambahkan pyrubberband mengangkat kualitas noticeably, dan membangun semuanya ke dalam layanan systemd membuat seluruh thing boot otomatis seperti consumer device.

Pi 4 mencapai limitnya dengan heavy neural voice conversion, namun untuk pitch shifting, ring modulation, suara robot, dan efek karakter ini memiliki lebih dari enough horsepower. Jika Anda outgrow Pi, kode Python yang sama berjalan di any Linux machine — dan konsep transfer langsung ke understanding apa dedicated tools seperti VoxBooster lakukan di bawah hood ketika mereka mencapai sub-10ms latency di Windows dengan full AI voice conversion.

Bangun helm. Jalankan robot. Keluarkan prop pada konvensi berikutnya.

Download VoxBooster — free 3-day trial untuk Windows, no credit card required.

Coba VoxBooster — uji coba gratis 3 hari.

Kloning suara real-time, soundboard, dan efek — di mana pun kamu sudah biasa bicara.

  • Tanpa kartu kredit
  • ~30ms latensi
  • Discord · Teams · OBS
Coba gratis 3 hari