Raspberry Pi Voice Changer: собираем карманный голосовой проект

Собираем voice changer на Raspberry Pi с Python, PyAudio и Sox. Настройка Pi 4/5, USB-микрофон, шлемы для косплея, голос робота и ретро-игровые пропы.

Raspberry Pi Voice Changer: собираем карманный голосовой проект

Voice changer на Raspberry Pi открывает целую категорию проектов, которые были бы непрактичны на обычном ПК: шлемы для косплея, голоса роботов-пропов, ретро-игровые машины с голосами персонажей и автономные косплей-риги, работающие полностью от USB-повербанка. Это руководство охватывает всё: от первоначальной настройки железа на Pi 4 и Pi 5 — через рабочий Python voice changer с PyAudio, librosa, Sox и привязками rubberband — до полных инструкций по трём популярным билдам. В итоге у вас будет рабочий пайплайн и чёткое понимание компромиссов между задержкой и качеством на каждом шаге.


TL;DR

  • Raspberry Pi 4 или 5 может запускать питч-шифтинг в реальном времени и эффекты голоса робота с PyAudio, librosa и pyrubberband.
  • USB-микрофон + аудиовыход USB или HDMI — без аналогической разводки для рабочего сетапа.
  • Билды косплейных шлемов, ретро-аудио-пропы и риги голоса робота работают на безголовой Pi через systemd-сервис.
  • Целевая задержка: 20-40 мс достижимы при 44100 Гц с буферами 512-1024 сэмплов.
  • Для использования в Discord/стриминге на Windows специализированный инструмент вроде VoxBooster настраивается быстрее и даёт меньшую задержку.
  • Описанный здесь Python-стек также применим на Linux-десктопах — смотрите voice changer для Linux.

Необходимое железо: Pi 4, Pi 5 и аксессуары

Raspberry Pi 4 против Pi 5 для обработки голоса

Выбор модели Pi определяет, какие голосовые эффекты практичны в реальном времени.

ХарактеристикаRaspberry Pi 4 (4 ГБ)Raspberry Pi 5 (4/8 ГБ)
CPUCortex-A72 @ 1,8 ГГцCortex-A76 @ 2,4 ГГц
Питч-шифтинг в реальном времениДа, комфортноДа, с запасом
STFT librosa (реальное время)На грани при малых буферахДа
Нейронное преобразование голосаНет (слишком медленно)Возможно при сниженном качестве
Потребление (активное)~3–5 Вт~5–8 Вт
В шлеме (ожидание)ХорошоХорошо, немного теплее
Цена (прибл.)$55$80

Для большинства косплей-билдов и пропов достаточно Pi 4 с 2 или 4 ГБ ОЗУ. Pi 5 даёт запас для более сложных DSP-цепочек или возможности локально запустить небольшую ONNX-модель. Pi Zero 2W работает для простых эффектов тона, но её одноядерная производительность делает её ненадёжной для многоэтапных DSP-цепочек.

Выбор USB-микрофона

Любой микрофон с интерфейсом USB Audio Class (UAC 1.0 или 2.0) работает на Raspberry Pi OS без установки драйверов.

Рекомендуемые варианты:

  • Fifine K669B — компактный, питание от шины, кардиоид, до $30. Помещается внутри шлема.
  • Blue Snowball iCE — более широкий охват, хорошее подавление шума, стандартная поддержка Linux.
  • Samson Go Mic — форм-фактор клипсы, удобен для костюмных билдов с ограниченным пространством.
  • Универсальный USB-петличный микрофон — самый дешёвый вариант. Качество звука ограничено, но приемлемо для эффектов робота/дисторшена.

Избегайте микрофонов с пометкой «USB только для Windows» или требующих сопутствующего ПО — они используют проприетарные USB-дескрипторы, которые некорректно определяются на Linux.

Варианты аудиовыхода

  • USB-аудиоадаптер (ЦАП-донгл) — самый простой вариант, подключается рядом с USB-микрофоном. Выбирайте с выходом 3,5 мм.
  • Аудио HDMI — работает из коробки для билдов, подключённых к дисплею или AV-ресиверу.
  • Bluetooth-динамик — добавляет 50-150 мс задержки. Приемлемо для голосов пропов без синхронизации с губами; неидеально для разговора в реальном времени.
  • I2S DAC HAT (например, HiFiBerry DAC+ Zero) — лучшее качество звука, наименьшая задержка, но требует настройки оверлея ядра.

В примерах этого руководства используем USB-микрофон + USB-аудиоадаптер — это наиболее воспроизводимый вариант без оверлея device tree.


Первоначальная настройка: Raspberry Pi OS и ALSA

Установка Raspberry Pi OS

Используйте Raspberry Pi OS Lite (64-бит) для безголовых билдов или Raspberry Pi OS Desktop если нужен графический интерфейс для разработки. Запишите на SD-карту через Raspberry Pi Imager и включите SSH в расширенных настройках.

После первой загрузки:

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

Определение аудиоустройств

aplay -l     # список устройств воспроизведения
arecord -l   # список устройств захвата

С USB-микрофоном + USB ЦАП они появятся как card 1 и card 2 рядом со встроенным bcm2835. Запишите номера карт и устройств — они понадобятся для input_device_index и output_device_index в PyAudio.

Настройка устройств ALSA по умолчанию

Создайте или отредактируйте /etc/asound.conf:

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

Замените номера карт согласно выводу aplay -l / arecord -l. Проверьте: arecord -d 5 test.wav && aplay test.wav.


Python Voice Changer: основной пайплайн

Установка Python-зависимостей

pip3 install pyaudio numpy librosa sounddevice pyrubberband

Если pyaudio не компилируется, убедитесь, что установлен portaudio19-dev. На Pi OS Bookworm может потребоваться виртуальное окружение:

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

Минимальный питч-шифтер реального времени

Простейший рабочий пайплайн: читаем аудиофреймы, применяем питч-шифтинг с librosa и записываем результат. Это основа для всех более сложных эффектов.

import pyaudio
import numpy as np
import librosa

RATE = 44100
CHUNK = 1024
SEMITONES = 4.0   # положительное = выше, отрицательное = ниже

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 работает. Ctrl+C для остановки.")
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()

На Pi 4 с CHUNK=1024 задержка обработки около 23 мс на фрейм плюс задержка буфера ALSA. Общая задержка туда-обратно — 40-80 мс в зависимости от буферизации USB-аудиоустройства.

Более высокое качество с pyrubberband

pitch_shift из librosa использует фазовый вокодер, который работает, но может давать фазовые артефакты на согласных. Библиотека rubberband использует более совершенный алгоритм, лучше работающий с транзиентами — тот же движок, что используется в профессиональных DAW.

import pyrubberband as pyrb

# Замените строку librosa на:
shifted = pyrb.pitch_shift(data, RATE, SEMITONES)

pyrubberband требует системного пакета rubberband-cli (установлен на шаге apt). Вызывает бинарник rubberband через subprocess, добавляя небольшую постоянную задержку. Для большинства голосов персонажей улучшение качества того стоит.

Эффект голоса робота

Голос робота объединяет несколько DSP-шагов: умеренный питч-шифтинг, кольцевая модуляция (амплитудная модуляция несущей синусоидой) и короткая металлическая реверберация.

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)
    
    # Кольцевая модуляция: умножение на несущую синусоиду
    t = np.arange(len(pitched)) / rate
    carrier = np.sin(2 * np.pi * mod_freq * t)
    modulated = pitched * carrier
    
    # Смешать сухой и мокрый (50/50)
    result = 0.5 * pitched + 0.5 * modulated
    
    # Нормализация
    peak = np.max(np.abs(result))
    if peak > 0:
        result /= peak
    return result.astype(np.float32)

Подбирайте mod_freq для металлического характера: 40-60 Гц даёт низкий механический гул; 80-120 Гц звучит как классический робот из фантастики; 200+ Гц начинает напоминать эффект вокодера.


Использование Sox для голосовых эффектов на Raspberry Pi

Sox (Sound eXchange) — утилита обработки аудио командной строки, входящая в большинство дистрибутивов Linux. Она обрабатывает широкий спектр голосовых эффектов простыми флагами и вызывается из Python через subprocess или библиотеку pysox.

Установка pysox

pip3 install sox

Полезные эффекты Sox для голосовых проектов

ЭффектФлаг SoxРезультат
Питч-шифтингpitch +500+5 полутонов (в центах)
Эхо/задержкаecho 0.8 0.9 500 0.5Одно эхо 500 мс
Реверберацияreverb 80Реверб размером с зал
Дисторшенoverdrive 10Лёгкое насыщение
Изменение темпаtempo 0.85Медленнее без изменения тона
Фильтр нижних частотlowpass 3000Качество телефонного голоса
Полосовой фильтрband 1000 500Рация CB / уоки-токи

Sox лучше подходит для билдов с паттерном push-to-talk — записать сэмпл, обработать, воспроизвести — чем для непрерывного стриминга в реальном времени. Для непрерывного voice changer в реальном времени лучше подход PyAudio + NumPy + librosa.


Проект: Voice Changer в косплейном шлеме

Это одно из самых популярных применений voice changer на Raspberry Pi — шлем или маска, трансформирующие голос пользователя под персонажа. Железный человек, Мандалорец, штурмовик или любой робот-андроид.

Список компонентов

  • Raspberry Pi 4 (2 ГБ) или Pi Zero 2W для компактных билдов
  • USB-повербанк (10 000 мАч для многочасовой работы)
  • Компактный USB-микрофон (Fifine K669B или универсальный USB-петличный)
  • Маленький USB-аудиоадаптер (для выхода на наушники)
  • 2× 3-ваттный динамик + небольшая усилительная плата Класса D
  • Выключатель питания
  • Корпус шлема/маски (3D-печатный или готовый)

Python-скрипт для загрузки шлема

Создайте /home/pi/voicechanger/helmet.py с функцией голоса робота, затем создайте systemd-сервис для автозапуска:

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

Включите командой sudo systemctl enable helmet-voice.service. Pi загружается и запускает voice changer примерно за 15 секунд после включения.

Настройки голоса по типу персонажа

Тип персонажаПитч-шифтЧастота мод.Дополнительный эффект
Робот / андроид-3 полутона80 ГцЛёгкая реверберация
Железный человек (ДЖАРВИС)-1 полутонНетEQ: подъём 1-3 кГц, лёгкая компрессия
Штурмовик0 полутонов100 ГцПолосовой фильтр 500-3000 Гц (уоки-токи)
Стиль Дарта Вейдера-4 полутона40 ГцСильная реверберация, подъём глубоких басов
Инопланетянин / существо+2 полутона60 ГцКольцевая модуляция + короткое эхо

Проект: голосовой проп для ретро-гейминга

Пропы для ретро-игровых мероприятий — коробки голосов персонажей в 8 битах, голосовые эффекты аркадных автоматов, портативные звуковые гаджеты — ещё один отличный вариант для компактного voice changer на Raspberry Pi. Для вдохновения по 8-битным и ретро-аудиоэффектам смотрите 8-bit voice changer.

Pi Zero 2W в корпусе форм-фактора картриджа, работающая от небольшого LiPo, может воспроизводить короткие аудиоклипы или применять голосовые эффекты в реальном времени. С кнопкой push-to-talk и маленьким динамиком получается автономный проп без телефона и ноутбука.


Проект: автономная коробка голоса робота

Настольный робот-проп или аниматронный персонаж выигрывает от Pi 4 в корпусе, запускающей постоянный voice changer, в который может говорить кто угодно. Настройка простая:

  1. USB-микрофон в позиции всенаправленного захвата
  2. Постоянно работающий Python-скрипт (systemd-сервис)
  3. Аудиовыход USB в портативный Bluetooth-динамик или динамик с усилителем
  4. Опциональное управление LED или сервоприводом через GPIO для анимации робота при превышении уровня звука

Анимация LED/сервопривода по уровню звука — популярное дополнение. PyAudio предоставляет уровень аудио прямо через RMS каждого буфера:

rms = np.sqrt(np.mean(data**2))
is_speaking = rms > THRESHOLD   # подберите THRESHOLD экспериментально

Подключите булев is_speaking к GPIO-выходу — и у вас робот, который «открывает рот» когда кто-то говорит с ним.


Оптимизация задержки для voice changer в реальном времени

ИсточникТипичное значениеСнижаемо?
Буфер входа ALSA10-30 мсДа, уменьшить буфер
Обработка Python (librosa, 1024 сэмпла)23 мсДа, уменьшить chunk
Буфер выхода ALSA10-30 мсДа
Накладные расходы USB-аудио5-15 мсЧастично
Bluetooth (если используется)50-150 мсНет — избегать в реальном времени

Советы по настройке:

  • Уменьшите CHUNK с 2048 до 512 сэмплов — задержка снизится с 46 до 12 мс при 44100 Гц.
  • Используйте sounddevice вместо PyAudio для лучшей интеграции с ALSA на Linux.
  • Установите губернатор CPU в режим производительности: sudo cpufreq-set -g performance.
  • Используйте проводной USB-аудиоадаптер; Bluetooth добавляет 50-150 мс.

Voice Changer на Raspberry Pi vs специализированный софт

СценарийRaspberry Pi (Python)Специализированный Windows-софт
Косплейный шлем / носимый пропИдеальноНе применимо
Настольный робот-пропИдеальноНе применимо
Ретро-проп / автономныйИдеальноНе применимо
Discord / чат в играх на WindowsСложный обходной путьЗначительно проще
Стриминг Twitch / YouTubeВозможно через JACKVoxBooster или аналог — проще
Качество AI-преобразования голосаОграничено (мощностью Pi)Значительно выше (GPU/CPU на ПК)
Задержка на ПК40-80 мс на PiМенее 10 мс на современном ПК
Время настройкиЧасыМинуты

Для тех, кто искал voice changer для Discord или стриминга и попал сюда случайно — рассмотрите нативный Windows-вариант. VoxBooster создаёт виртуальный микрофон прямо в аудиографе Windows, обрабатывает с задержкой менее 10 мс и настраивается за пять минут. Также смотрите voice changer для Linux если ваша стриминговая машина работает на Linux.

Для проектов без Raspberry Pi: туториал по voice changer в Audacity покрывает офлайн-обработку тона, а игрушки и пропы voice changer — готовые аппаратные варианты для косплея. Для проектов на микроконтроллерах ещё меньшего форм-фактора смотрите voice changer на Arduino.


Часто задаваемые вопросы

Может ли Raspberry Pi запустить voice changer в реальном времени?

Да. У Raspberry Pi 4 или 5 достаточно CPU для питч-шифтинга с PyAudio и Sox с задержкой 20-40 мс. Нейронное преобразование голоса тяжелее и требует Pi 5 или вынесенного инференса, но базовые эффекты — тон, форманты, голос робота — отлично работают в реальном времени на Pi 4.

Какой USB-микрофон лучше всего подходит для Raspberry Pi в голосовом чейнджере?

Любой USB-микрофон со стандартным интерфейсом UAC работает без дополнительных драйверов на Raspberry Pi OS. Популярные варианты: Blue Snowball iCE, Fifine K669B и Samson Go Mic. Избегайте микрофонов, требующих проприетарных Windows-драйверов — они не работают на Linux.

Какие библиотеки Python нужны для voice changer на Raspberry Pi?

Основной стек: PyAudio (аудио-ввод/вывод), NumPy (матричные вычисления) и librosa (спектральный анализ и питч-шифтинг) или pysox (привязки к Sox). Для качества rubberband установите pyrubberband плюс rubberband-cli. SoundDevice — более чистая альтернатива PyAudio для ALSA в Linux.

Как снизить задержку в Python voice changer на Raspberry Pi?

Используйте буферы 512 или 1024 сэмпла при 44100 Гц (12-23 мс). Не вызывайте librosa.load() внутри аудио-коллбека — предвычисляйте параметры заранее. Sox через subprocess добавляет накладные расходы; предпочтительнее библиотеки в процессе.

Можно ли использовать Raspberry Pi voice changer для косплея или пропов?

Конечно. Pi Zero 2W или Pi 4 помещается внутри шлема или пропа, питается от USB-повербанка. Подключите USB-микрофон, выведите звук через маленький динамик и запускайте скрипт при загрузке через systemd. Всё работает без клавиатуры и монитора.

В чём разница между питч-шифтингом и преобразованием голоса на Raspberry Pi?

Питч-шифтинг изменяет основную частоту аудиосигнала. Преобразование голоса заменяет акустические характеристики одного голоса другим с помощью моделей машинного обучения. Первое работает в реальном времени на любой Pi 4; преобразование голоса требует большей мощности и лучше работает на Pi 5 или с USB-ускорителем вроде Google Coral.

Работает ли VoxBooster на Raspberry Pi?

Нет. VoxBooster — настольное приложение для Windows 10/11, работающее на оборудовании x86-64. Для проектов на Linux или Raspberry Pi правильный подход — Python-пайплайны с PyAudio, librosa и rubberband. Если конечная цель — Discord или стриминг на ПК с Windows, VoxBooster проще и имеет меньшую задержку.


Заключение

Voice changer на Raspberry Pi — один из самых увлекательных проектов встраиваемого аудио, которые вы можете собрать: железо дешёвое, Python-экосистема для DSP зрелая, а результаты варьируются от функциональных пропов до по-настоящему впечатляющих интерактивных инсталляций. Основной пайплайн (PyAudio → обработка NumPy → вывод PyAudio) заработает менее чем за час. Добавление pyrubberband заметно улучшает качество, а упаковка в systemd-сервис делает всё это самозапускаемым, как потребительское устройство.

Pi 4 упирается в предел при тяжёлом нейронном преобразовании голоса, но для питч-шифтинга, кольцевой модуляции, голоса робота и эффектов персонажей у неё более чем достаточно мощности. Если Pi вам мала — тот же Python-код работает на любой Linux-машине, а концепции напрямую переносятся в понимание того, что делают специализированные инструменты вроде VoxBooster, достигающего менее 10 мс задержки на Windows с полным AI-преобразованием голоса.

Собирайте шлем. Запускайте робота. Доставайте проп на следующей конвенции.

Скачать VoxBooster — бесплатная 3-дневная пробная версия для Windows, без карты.

Попробуй VoxBooster — 3 дня бесплатно.

Клонирование голоса в реальном времени, саундборд и эффекты — везде, где ты говоришь.

  • Без карты
  • ~30 мс задержки
  • Discord · Teams · OBS
Попробовать 3 дня бесплатно