VRChat OSC Voice Changer: маршрутизация микрофона и параметры аватара
Связка voice changer с OSC в VRChat переводит присутствие аватара из категории «звучит иначе» в «реагирует как настоящий персонаж». Большинство руководств останавливаются на маршрутизации аудио — выбираем voice changer, указываем виртуальный микрофон в VRChat, готово. Это решает вопрос со звуком. Но слой Open Sound Control в VRChat открывает второй канал, через который активность микрофона напрямую анимирует выражения аватара, запускает последовательности эмотов и управляет блендшейпами параметров, недостижимых для трекера лица. Это руководство охватывает полную картину: цепочку аудио, канал данных OSC, маппинг параметров аватара для Stream Avatar System, автоматизацию эмотов по голосу и практическую настройку скрипта, связывающего всё вместе.
Краткое резюме
- VRChat использует два отдельных канала для голоса: аудиовход WASAPI (звук микрофона) и UDP OSC-сообщения (данные параметров для анимации аватара)
- Voice changer управляет аудиоканалом; скрипт-мост OSC управляет каналом данных — они работают параллельно без конфликтов
- Спецификация Stream Avatar System использует float-параметры
VoiceVolume,VoiceActivityиVoicePitchдля управления блендшейпами рта и выражений без трекинга лица - Можно запускать эмоты с Bool-параметрами, отправляемыми по OSC при голосовых событиях или нажатиях клавиш в системе макросов voice changer
- Порт OSC по умолчанию в VRChat — 9000 UDP; специальная настройка не нужна, если порт 9000 уже не занят
- VoxBooster работает как аудиослой в этой цепочке без дополнительной настройки с его стороны
Как VRChat Управляет Двумя Отдельными Каналами для Голоса
Чтобы понять, почему интеграция OSC работает именно так, нужно рассмотреть два канала, которые VRChat использует для голоса, по отдельности.
Канал 1 — Аудио WASAPI. VRChat захватывает голос через Windows Audio Session API. Читает с устройства микрофона, выбранного в Настройках VRChat → Микрофон. Это канал, который передаёт реальный звук, который слышат другие игроки. Voice changer, такой как VoxBooster, встраивается здесь на уровне аудиосистемы ОС, поэтому обработанный голос поступает в VRChat без какой-либо настройки в игре. VRChat просто видит микрофон, а не voice changer.
Канал 2 — UDP OSC-сообщения. VRChat слушает пакеты Open Sound Control на UDP-порту 9000. Они несут структурированные данные: имена параметров аватара в паре со значениями Float, Int, Bool или String. VRChat берёт эти значения и в реальном времени записывает их в слой Animator активного аватара. Этот канал не имеет никакого отношения к аудио — он исключительно управляет параметрами визуальной анимации.
Скрипт-мост OSC находится между этими двумя каналами и выполняет одну задачу: слушает аудиоактивность (или события клавиш) от вашего voice changer и переводит её в пакеты параметров OSC, отправляемые в VRChat. Voice changer и VRChat никогда не должны знать друг о друге ничего, кроме своих отдельных точек подключения.
Цепочка Аудио: от Voice Changer до Входа Микрофона в VRChat
Прежде чем касаться OSC, правильная настройка аудиоцепочки является обязательным условием.
Настройка VoxBooster как Источника Захвата
VoxBooster регистрирует виртуальный микрофон в аудиослое Windows через WASAPI. VRChat читает с этого виртуального микрофона так же, как с любого физического. Настройка:
- Установите VoxBooster и запустите его. Убедитесь, что устройство виртуального микрофона появляется в Параметрах Windows → Звук → Ввод.
- Выберите физический микрофон как источник входа VoxBooster в интерфейсе программы.
- Выберите голосовой пресет или настройте эффекты (высота, форманты, модель ИИ — в зависимости от персонажа).
- В VRChat перейдите в Настройки → Микрофон и убедитесь, что выбрано правильное устройство.
Поведение выбора микрофона в VRChat изменилось в 2023 году: теперь по умолчанию отображаются физические устройства ввода, а виртуальные могут скрываться в зависимости от представления драйвера. Если виртуальный микрофон VoxBooster не появляется в списке VRChat, проверьте, что устройство отображается как «Готово» в Параметрах звука Windows (не «Отключено» или «Не подключено»).
Настройки Голоса в VRChat, Важные для Обработанного Аудио
VRChat применяет собственную постобработку к входу микрофона. Для обработанного голоса (уже эквализированного и со сдвигом тона) некоторые настройки требуют внимания:
| Настройка в VRChat | По умолчанию | Рекомендация при voice changer |
|---|---|---|
| Гейт громкости микрофона | Включён | Снизьте порог или отключите — обработанный звук может некорректно срабатывать на гейт |
| Дальность затухания голоса | 25 м | Оставьте по умолчанию; зависит от близости, а не обработки |
| Пространственный голос | Включён | Оставьте включённым; добавляет VR-присутствие независимо от голосового эффекта |
| Разрешить переопределение аудио аватаром | Пользовательская настройка | Актуально только для аватаров, переопределяющих настройки микрофона |
Гейт громкости — наиболее частая точка отказа. VRChat использует порог громкости, ниже которого отключает микрофон — это предотвращает фоновый шум, но также может обрезать выход voice changer с избыточной компрессией. Если голос постоянно прерывается в VRChat, снизьте порог гейта в Настройках Микрофона VRChat или уменьшите компрессию в VoxBooster.
Что Такое VRChat OSC и Что Он Реально Умеет
VRChat Open Sound Control (OSC) — это протокол сообщений реального времени, который VRChat представил как штатную функцию в 2022 году. Работает по UDP на локальной машине (не требует интернет-соединения или сервера VRChat) и позволяет внешним приложениям читать и записывать параметры аватара VRChat в реальном времени.
OSC в VRChat умеет:
- Записывать значения Float, Int, Bool или String в любой параметр аватара, у которого включено «Allow OSC write» в дескрипторе аватара
- Читать значения параметров аватара из VRChat (VRChat отправляет с порта 9001)
- Отправлять сообщения chatbox программно
- Запускать Действия VRChat (включать/выключать функции аватара, связанные с параметрами Action)
- Симулировать элементы управления вводом (оси движения, нажатия кнопок) с внешнего оборудования или ПО
Для интеграции с voice changer актуальны возможности записи параметров Float и Bool в параметры аватара в реальном времени. Это механизм, обеспечивающий анимацию рта от уровня микрофона, выражения активности голоса и эмоты по горячим клавишам.
Stream Avatar System: Спецификация, Делающая OSC-Голос Полезным
Stream Avatar System — это общественный стандарт для аватаров VRChat, определяющий согласованный набор OSC-записываемых параметров для стримеров и VTuber-ов, желающих реактивную анимацию аватара без железа для трекинга лица. Аватар, построенный по спецификации Stream Avatar System, поставляется с уже готовым слоем Animator для получения этих параметров:
| Имя параметра | Тип | Описание |
|---|---|---|
VoiceVolume | Float | Текущая амплитуда микрофона, нормализованная 0.0–1.0 |
VoiceActivity | Bool | True, пока голос выше порога шума |
VoicePitch | Float | Приблизительная основная частота, нормализованная в диапазон 0.0–1.0 |
VoiceEmotion | Int | Состояния выражений (0=нейтральное, 1=радость, 2=грусть, 3=злость, 4=удивление) |
IsStreaming | Bool | Опциональный флаг для активации оверлеев режима стриминга на аватаре |
Когда скрипт-мост OSC отправляет эти значения в реальном времени, рот аватара открывается пропорционально громкости голоса (заменяя грубую систему визем VRChat), выражения меняются на основе контура тона, а аватар переходит в нейтральный режим покоя, когда вы замолкаете. На риге Stream Avatar System это даёт качество рта и выражений, которое большинство людей ассоциирует с дорогими трекерами лица — не полный фейстрекинг, но для голосового присутствия достаточно близко.
Эмоты по Голосу: Подключение Bool-Параметров OSC
Одно из самых интересных применений — автоматический запуск эмотов аватара от голосовой активности, чтобы аватар махал, хлопал или физически реагировал на конкретные моменты речи.
Как Работают Эмоты по Bool в VRChat
Аватары VRChat могут иметь Bool-параметры в слоях Animator, которые при установке в True входят в определённое состояние (воспроизводя клип эмота) и возвращаются в False после завершения клипа. Для запуска эмота через OSC отправляется сообщение на VRChat/avatar/parameters/ИмяПараметра со значением Bool True. VRChat записывает его в Animator, переход срабатывает, эмот воспроизводится.
Формат OSC-сообщения: /avatar/parameters/EmoteWave True (в формате адреса OSC VRChat).
Два Способа Запуска из Voice Changer
Способ 1 — Триггеры по порогу громкости. Скрипт-мост мониторит аудиовыход виртуального микрофона VoxBooster, определяет, когда амплитуда превышает порог более N миллисекунд, и активирует Bool OSC. Полезно для переходов «начал говорить» и «перестал говорить» — отправляет VoiceActivity True при начале голоса и VoiceActivity False при конце.
Способ 2 — Горячие клавиши. VoxBooster поддерживает программируемые горячие клавиши для переключения пресетов, запуска клипов саундборда и выполнения макросов. Скрипт-мост слушает глобальную клавишу и активирует параметр эмота OSC при её нажатии. Это даёт намеренный контроль: нажмите F5 во время речи для приветствия, F6 для анимации смеха.
Простейшая реализация скрипта для обоих методов на Python с библиотекой python-osc:
from pythonosc import udp_client
import sounddevice as sd
import numpy as np
VRC_IP = "127.0.0.1"
VRC_PORT = 9000
THRESHOLD = 0.02 # настройте под уровень шума вашего микрофона
client = udp_client.SimpleUDPClient(VRC_IP, VRC_PORT)
last_state = False
def audio_callback(indata, frames, time, status):
global last_state
volume = float(np.abs(indata).mean())
active = volume > THRESHOLD
if active != last_state:
client.send_message("/avatar/parameters/VoiceActivity", active)
client.send_message("/avatar/parameters/VoiceVolume", min(volume * 10, 1.0))
last_state = active
with sd.InputStream(device="VoxBooster Virtual Mic", # совпадает с именем устройства в Windows
channels=1, callback=audio_callback, samplerate=48000):
print("OSC-мост активен. Нажмите Ctrl+C для остановки.")
while True:
sd.sleep(10)
Замените "VoxBooster Virtual Mic" точным именем устройства Windows для выхода VoxBooster. Запустите python -c "import sounddevice as sd; print(sd.query_devices())" для просмотра доступных устройств.
Пакеты python-osc и sounddevice устанавливаются через pip: pip install python-osc sounddevice numpy.
OSC-совместимый Прокси: Voice Changer и OSC Параллельно
Наиболее чистая продакшн-конфигурация запускает VoxBooster и OSC-мост как два независимых процесса, которые делят только устройство виртуального микрофона в качестве посредника.
Физический микрофон
│
▼
VoxBooster (обработка аудио: тон, форманты, модель ИИ)
│
├── [WASAPI out] → Вход микрофона VRChat → Аудиодвижок VRChat
│
└── [Монитор вирт. микрофона] → Скрипт-мост OSC → UDP порт 9000 → Движок OSC VRChat
│
▼
Параметры аватара
(VoiceVolume, VoiceActivity и др.)
Монитор виртуального микрофона читает уже обработанный звук. Это означает, что данные OSC отражают выход voice changer, а не сырой микрофон — поэтому VoiceVolume основан на уровне преобразованного голоса, который точно соответствует тому, что слышат другие игроки. Это корректное поведение: движение рта аватара должно следовать слышимому голосу, а не оригинальному микрофону.
Задержка Цепочки Микрофона: Что Добавляет OSC и Что Нет
Задержка аудиоканала определяется режимом обработки VoxBooster. DSP-эффекты (тон, форманты, EQ) работают быстрее 10 мс. Инференс модели голоса ИИ в режиме Low Latency занимает около 80 мс на GPU среднего класса. Это задержка между речью и тем, как вас слышат — она не связана с OSC.
Задержка параметров OSC — это задержка между голосовой активностью и откликом анимации аватара. Аудиокallback скрипта-моста срабатывает каждые ~10 мс. С учётом UDP-передачи на localhost (субмиллисекундно) и цикла обновления Animator VRChat (~30 мс при 30 fps), сквозная задержка OSC составляет 30–50 мс.
Итоговый результат: рот аватара визуально откликается в течение одного кадра анимации от звука — неотличимо от одновременности для наблюдателей. Сам звук может быть задержан на 80 мс (режим ИИ), но наблюдатели воспринимают эту задержку и в звуке, и в анимации одновременно — они остаются синхронизированными.
Сравнение: Подходы Voice Changer для VRChat OSC
| Подход | Качество аудио | Интеграция OSC | Задержка | Сложность настройки |
|---|---|---|---|---|
| VoxBooster + скрипт-мост OSC | Высокое (модель ИИ доступна) | Да, через скрипт | 80мс ИИ / <10мс DSP | Средняя — нужен Python-скрипт |
| Voicemod + скрипт-мост OSC | Среднее (только DSP) | Да, через скрипт | <10мс | Средняя — тот же подход |
| MorphVOX + скрипт-мост | Среднее-низкое | Да, через скрипт | <15мс | Средняя |
| Только нативная система визем VRChat | Н/Д (голос без изменений) | Нативная, без скрипта | <5мс | Нулевая |
| Трекер лица (напр. VRCFaceTracking) | Н/Д (аудио отдельно) | Нативная, без скрипта | 15–30мс | Высокая — требуется железо |
Подход со скриптом-мостом OSC работает с любым voice changer, предоставляющим выход виртуального микрофона. Разница между инструментами — качество аудио и наличие инференса модели голоса ИИ, где локальный конвейер моделей VoxBooster отличается от DSP-only инструментов вроде Voicemod и MorphVOX.
Типичные Проблемы и Решения
VRChat Не Получает Сообщения OSC
Проверьте по порядку:
- Убедитесь, что OSC включён в Меню действий VRChat → Параметры → OSC → Включено
- Убедитесь, что порт прослушивания — 9000 (Меню действий → Параметры → OSC → Порт)
- Убедитесь, что правило брандмауэра не блокирует UDP-трафик на localhost — Windows Firewall иногда блокирует Python-приложения при первом запуске
- Убедитесь, что целевой порт скрипта-моста совпадает с портом прослушивания VRChat
- Перезапустите VRChat после включения OSC — некоторые версии требуют перезапуска для инициализации OSC
Параметры Аватара Не Реагируют
OSC-запись в параметры работает только если:
- Аватар имеет эти параметры, определённые в его VRChat Avatar Descriptor
- Параметры настроены с «Allow OSC» в списке параметров дескриптора
- Слой Animator имеет переходы, связанные с этими параметрами
Если вы скачали аватар из сообщества и параметры не реагируют, аватар может быть создан до поддержки OSC в VRChat или не иметь слоя Stream Avatar System.
Аудио Voice Changer Обрезается в VRChat
Как отмечалось в разделе цепочки аудио, гейт шума VRChat может обрезать выход сильно сжатого или нормализованного voice changer. Решения:
- Снизьте порог микрофонного гейта в VRChat
- В VoxBooster уменьшите коэффициент компрессии выхода (меньше компрессии = больше динамический диапазон = более чистый сигнал для гейта)
- Убедитесь, что уровень выхода VoxBooster откалиброван так, чтобы нормальная речь давала пики от -12 до -6 дБПШ
VRChat OSC Voice в Контексте Других Платформ Социального VR
VRChat стал первой крупной платформой социального VR, внедрившей OSC как штатную функцию, но концепция распространяется. Опыт, накопленный с настройкой OSC-голоса в VRChat, применим и в других местах:
- Resonite использует систему скриптинга на основе графа нод, где аудиовход может управлять параметрами аватара с аналогичной выразительностью — см. наш гайд по голосу в Resonite с нод-графами
- ChilloutVR поддерживает OSC-вход параметров для совместимых аватаров и использует архитектуру маршрутизации, схожую с VRChat — наш гайд по маршрутизации голоса в ChilloutVR покрывает специфику этой платформы
- Общие стриминговые конфигурации выигрывают от той же цепочки виртуального микрофона — см. voice changer для прямых трансляций если вы также запускаете OBS рядом с VRChat
Заключение
Связка voice changer с OSC в VRChat и Stream Avatar System — это практический потолок того, как выглядит интеграция голоса в социальном VR прямо сейчас — без полноценного железа для трекинга лица. Аудиоканал передаёт голос персонажа; OSC-канал заставляет аватар анимироваться в ответ. Вместе они создают присутствие аватара, которого пассивная маршрутизация аудио одна не достигает.
Настройка сложнее базовой установки voice changer, но компоненты небольшие: voice changer для обработки аудио (VoxBooster), 40-строчный Python-скрипт для OSC и аватар с поддержкой OSC. Скрипт-мост работает тихо в фоне и потребляет ничтожные ресурсы системы после запуска.
Если вы хотите расширить это до полной конфигурации VTuber или стрима, VoxBooster закрывает сторону аудиообработки — модели голоса ИИ, DSP-пресеты, макросы саундборда и шумоподавление — на стандартном виртуальном микрофоне Windows с 3-дневным бесплатным пробным периодом.
Скачать VoxBooster — бесплатный пробный период 3 дня, без кредитной карты.