- Поддерживаемые игры
-
- Team Fortress 2
Расширение для контроля громкости голоса игроков.
Поддерживает автоматическое выравнивание уровня громкости, тихие микрофоны делает громче, громкие - тише.
Есть поддержка включения слышимости только в определённой зоне от игрока с постепенным затуханием громкости.
Возможно ещё некоторые улучшения звука из микрофона, но это не подтверждено пока что.
В комплекте идёт плагин с ручной выставлении уровня громкости игрокам через меню.
Расширение полностью написано ИИ, так что в основном для ознакомления.
Команды:
sm_vc - открывает меню прямой установки громкости микрофона игрокам.
VoiceControl: основные переменные
Главный переключатель расширения. Если 0, VoiceControl не обрабатывает голос, автогромкость, DSP и proximity отключены.
Включает debug-лог обработки звука: входная/выходная громкость, AGC, gate, clipping и т.д. Использовать только для проверки, на live лучше держать 0.
Включает debug-лог получателей голоса: кому отправлен пакет, кто отфильтрован, дистанция proximity, ошибки отправки. Полезно для настройки vc_proximity_enabled.
Автогромкость / AGC
Включает автоматическую регулировку громкости микрофона. Тихие микрофоны усиливаются, слишком громкие уменьшаются.
Целевая средняя громкость голоса. Больше значение — голос будет громче, меньше — тише.
Порог шума. Всё, что ниже этого уровня, считается фоном/шумом и не должно сильно усиливаться.
Максимальное усиление тихого микрофона в децибелах. Если у игроков усиливается шум, уменьшить это значение.
Максимальное понижение слишком громкого микрофона. Значение должно быть отрицательным.
Потолок громкости после обработки. Защищает от перегруза и клиппинга.
DSP / очистка голоса
Включает лёгкую обработку голоса: high-pass, noise gate, softclip.
Включает фильтр низких частот. Убирает гул, низкий шум и часть вибраций микрофона.
Частота среза high-pass фильтра. Обычно 80-120 Hz нормально для голоса.
Включает noise gate. Когда игрок молчит, тихий фон приглушается.
Порог открытия noise gate. Если голос/звук ниже этого уровня, он считается тишиной или шумом.
Гистерезис noise gate. Помогает gate не дёргаться туда-сюда на границе порога.
Насколько сильно приглушать звук, когда gate закрыт. Чем ниже значение, тем сильнее приглушение.
Скорость открытия gate в миллисекундах. Меньше — быстрее пропускает начало речи.
Скорость закрытия gate в миллисекундах. Больше — мягче закрывается после окончания речи.
Включает мягкое ограничение пиков. Помогает убрать резкий перегруз без жёсткого clipping.
Порог softclip. Чем ниже значение, тем раньше начинается мягкое ограничение громких пиков.
Кому отправлять голос
Учитывать стандартные правила слышимости движка/SourceMod: mute, team voice, deadtalk и прочее. Если 0, расширение меньше полагается на engine hearing rules.
Отправлять ли обработанный голос SourceTV/Replay. Обычно лучше держать 0, если не нужно писать голос в трансляцию/демо.
Выбор способа отправки обработанного voice packet.
Если при 0 есть проблемы со слышимостью, можно использовать 1.
Proximity voice
Включает серверный proximity voice. Расстояние считается самим расширением, engine proximity flag не используется.
Максимальная дистанция слышимости между живыми игроками в Hammer units. Дальше этой дистанции живой listener не получает голос живого speaker.
Включает плавное затухание громкости по расстоянию. Если 0, будет только отсечка по дистанции.
Дистанция, до которой голос остаётся на полной громкости. После неё начинается затухание.
Минимальная громкость на границе vc_proximity_max_distance. Например -24 означает сильное, но не полное приглушение. За пределами max distance пакет вообще не отправляется.
Важное поведение proximity
Рекомендуемый базовый конфиг
Тест proximity
Если всё работает, в debug должно быть видно recipients > 0, msg_proximity=0, send_ok > 0.
Поддерживает автоматическое выравнивание уровня громкости, тихие микрофоны делает громче, громкие - тише.
Есть поддержка включения слышимости только в определённой зоне от игрока с постепенным затуханием громкости.
Возможно ещё некоторые улучшения звука из микрофона, но это не подтверждено пока что.
В комплекте идёт плагин с ручной выставлении уровня громкости игрокам через меню.
Расширение полностью написано ИИ, так что в основном для ознакомления.
Команды:
sm_vc - открывает меню прямой установки громкости микрофона игрокам.
VoiceControl: основные переменные
C-подобный:
vc_enabled 1
C-подобный:
vc_debug 0
C-подобный:
vc_debug_recipients 0
Автогромкость / AGC
C-подобный:
vc_agc_enabled 1
C-подобный:
vc_agc_target_rms 0.12
C-подобный:
vc_agc_noise_floor_rms 0.0015
C-подобный:
vc_agc_max_boost_db 18
C-подобный:
vc_agc_max_cut_db -12
C-подобный:
vc_limiter_ceiling 0.95
DSP / очистка голоса
C-подобный:
vc_dsp_enabled 1
C-подобный:
vc_highpass_enabled 1
C-подобный:
vc_highpass_cutoff_hz 100
C-подобный:
vc_noise_gate_enabled 1
C-подобный:
vc_noise_gate_threshold_rms 0.002
C-подобный:
vc_noise_gate_hysteresis_rms 0.001
C-подобный:
vc_noise_gate_atten_db -8
C-подобный:
vc_noise_gate_attack_ms 5
C-подобный:
vc_noise_gate_release_ms 120
C-подобный:
vc_softclip_enabled 1
C-подобный:
vc_softclip_threshold 0.85
Кому отправлять голос
C-подобный:
vc_respect_hearing 1
C-подобный:
vc_include_sourcetv 0
C-подобный:
vc_send_via_netchannel 0
- 0 — отправка через IClient::SendNetMsg.
- 1 — отправка через INetChannel::SendNetMsg с флагом voice-пакета.
Если при 0 есть проблемы со слышимостью, можно использовать 1.
Proximity voice
C-подобный:
vc_proximity_enabled 0
C-подобный:
vc_proximity_max_distance 1200
C-подобный:
vc_proximity_falloff_enabled 1
C-подобный:
vc_proximity_full_volume_distance 300
C-подобный:
vc_proximity_min_gain_db -24
Важное поведение proximity
- Пакет всегда отправляется с m_bProximity = false.
- Дистанцию и громкость контролирует VoiceControl, а не клиентский/engine proximity voice.
- Proximity применяется только к паре живой speaker -> живой listener.
- Мёртвые игроки, observer, SourceTV и Replay не считаются обычными spatial listeners.
- Если speaker мёртвый или observer, proximity для его голоса отключается и голос идёт как в обычном режиме.
- Если listener мёртвый или observer, он bypass-ит distance cutoff/falloff, но всё ещё может зависеть от vc_respect_hearing.
Рекомендуемый базовый конфиг
C-подобный:
vc_enabled 1
vc_agc_enabled 1
vc_agc_target_rms 0.12
vc_agc_noise_floor_rms 0.0015
vc_agc_max_boost_db 18
vc_agc_max_cut_db -12
vc_limiter_ceiling 0.95
vc_dsp_enabled 1
vc_highpass_enabled 1
vc_highpass_cutoff_hz 100
vc_noise_gate_enabled 1
vc_noise_gate_threshold_rms 0.002
vc_noise_gate_hysteresis_rms 0.001
vc_noise_gate_atten_db -8
vc_noise_gate_attack_ms 5
vc_noise_gate_release_ms 120
vc_softclip_enabled 1
vc_softclip_threshold 0.85
vc_respect_hearing 1
vc_include_sourcetv 0
vc_send_via_netchannel 1
vc_proximity_enabled 0
vc_proximity_max_distance 1200
vc_proximity_falloff_enabled 1
vc_proximity_full_volume_distance 300
vc_proximity_min_gain_db -24
vc_debug 0
vc_debug_recipients 0
Тест proximity
C-подобный:
vc_proximity_enabled 1
vc_proximity_max_distance 1200
vc_debug_recipients 1
vc_send_via_netchannel 1
Если всё работает, в debug должно быть видно recipients > 0, msg_proximity=0, send_ok > 0.
- Требования
-
TF2
Linux
glibc >= 2.39
- Установка
-
Скачать сборку, раскидать по таким же папкам на сервере.