VRChat OSC Voice Changer: маршрутизация микрофона и параметры аватара

Настройте voice changer через VRChat OSC для запуска выражений, эмотов и анимаций аватара в синхронизации с микрофоном. Полное руководство по настройке.

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 читает с этого виртуального микрофона так же, как с любого физического. Настройка:

  1. Установите VoxBooster и запустите его. Убедитесь, что устройство виртуального микрофона появляется в Параметрах Windows → Звук → Ввод.
  2. Выберите физический микрофон как источник входа VoxBooster в интерфейсе программы.
  3. Выберите голосовой пресет или настройте эффекты (высота, форманты, модель ИИ — в зависимости от персонажа).
  4. В 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 для получения этих параметров:

Имя параметраТипОписание
VoiceVolumeFloatТекущая амплитуда микрофона, нормализованная 0.0–1.0
VoiceActivityBoolTrue, пока голос выше порога шума
VoicePitchFloatПриблизительная основная частота, нормализованная в диапазон 0.0–1.0
VoiceEmotionIntСостояния выражений (0=нейтральное, 1=радость, 2=грусть, 3=злость, 4=удивление)
IsStreamingBoolОпциональный флаг для активации оверлеев режима стриминга на аватаре

Когда скрипт-мост 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

Проверьте по порядку:

  1. Убедитесь, что OSC включён в Меню действий VRChat → Параметры → OSC → Включено
  2. Убедитесь, что порт прослушивания — 9000 (Меню действий → Параметры → OSC → Порт)
  3. Убедитесь, что правило брандмауэра не блокирует UDP-трафик на localhost — Windows Firewall иногда блокирует Python-приложения при первом запуске
  4. Убедитесь, что целевой порт скрипта-моста совпадает с портом прослушивания VRChat
  5. Перезапустите 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 дня, без кредитной карты.

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

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

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