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.
| Fitur | Raspberry Pi 4 (4 GB) | Raspberry Pi 5 (4/8 GB) |
|---|---|---|
| CPU | Cortex-A72 @ 1.8 GHz | Cortex-A76 @ 2.4 GHz |
| Real-time pitch shift | Ya, nyaman | Ya, dengan headroom |
| Librosa STFT (real-time) | Borderline pada buffer kecil | Ya |
| Neural voice conversion | Tidak (terlalu lambat) | Mungkin pada kualitas berkurang |
| Konsumsi daya (aktif) | ~3–5 W | ~5–8 W |
| Idle dalam pembuatan helm | Baik | Baik, 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
| Efek | Flag Sox | Hasil |
|---|---|---|
| Pitch shift | pitch +500 | +5 semitone (dalam cent) |
| Echo/delay | echo 0.8 0.9 500 0.5 | Single 500ms echo |
| Reverb | reverb 80 | Hall-sized reverb |
| Distortion | overdrive 10 | Mild saturation |
| Tempo change | tempo 0.85 | Lebih lambat tanpa pitch change |
| Low-pass filter | lowpass 3000 | Telephone voice quality |
| Bandpass | band 1000 500 | CB 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
- Power bank → Pi USB-C power input
- USB mic → Pi USB port
- USB audio adapter → Pi USB port
- 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 Karakter | Pitch Shift | Mod Freq | Efek Ekstra |
|---|---|---|---|
| Robot / android | -3 semitone | 80 Hz | Light reverb |
| Iron Man (JARVIS) | -1 semitone | None | EQ: boost 1-3 kHz, slight compression |
| Stormtrooper | 0 semitone | 100 Hz | Bandpass 500-3000 Hz (walkie-talkie) |
| Darth Vader style | -4 semitone | 40 Hz | Heavy reverb, deep bass boost |
| Alien / creature | +2 semitone | 60 Hz | Ring 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:
- USB mic dalam posisi pickup omnidirectional (atau arahkan ke tempat orang berdiri)
- Always-on Python script (layanan systemd)
- USB audio out ke portable Bluetooth speaker atau wired speaker dengan amplifier
- 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
| Sumber | Typical Value | Reducible? |
|---|---|---|
| ALSA input buffer | 10-30 ms | Yes, reduce buffer size |
| Python processing (librosa, 1024 samples) | 23 ms | Yes, reduce chunk size |
| ALSA output buffer | 10-30 ms | Yes |
| USB audio roundtrip overhead | 5-15 ms | Partially |
| Bluetooth audio (if used) | 50-150 ms | No — 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
sounddevicememiliki 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 performancemencegah 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.
| Skenario | Raspberry Pi (Python) | Windows Dedicated Software |
|---|---|---|
| Cosplay helmet / wearable prop | Ideal | Not applicable |
| Tabletop robot prop | Ideal | Not applicable |
| Retro gaming prop / standalone | Ideal | Not applicable |
| Discord / game chat di Windows PC | Workaround (USB audio loopback) | Much simpler |
| Twitch / YouTube stream voice | Possible dengan JACK routing | VoxBooster atau similar lebih sederhana |
| AI voice conversion quality | Limited (Pi compute) | Much better (GPU/CPU pada PC) |
| Latensi di PC | 40-80 ms di Pi | Di bawah 10 ms di modern PC |
| Setup time | Hours | Minutes |
| 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.