百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
M

MetaVoiceChat

> 编程语言
开源

适用于 Unity 的自包含的近距离语音聊天解决方案,设置简单,支持多个网络库。不属于 Meta Platforms, Inc. 所属!

181 stars0 点赞0 次浏览
访问官网GitHub

工具介绍

适用于 Unity 的自包含的近距离语音聊天解决方案,设置简单,支持多个网络库。不属于 Meta Platforms, Inc. 所属!

Contact and Support

Metater

Discord: metater

MetaVoiceChat Support

For help, post in #meta-voice-chat-support and ping @metater.

Games Using MetaVoiceChat

Peak concurrent players checked August 2026. Demo peaks are shown where relevant.

Airport Security Sucks!

Made by the creator of MetaVoiceChat

Demo peak: 4,373 · Full game peak: 705

How to Fish

Peak CCU: 373,971

BOMBANANA!

Demo peak CCU: 40,119

Scam Line

Peak CCU: 2,246

Friendly Steps

Demo peak CCU: 2,485

Delivery & Beyond

Peak CCU: 994

Other Projects

MirrorVR - Open-source VR project using MetaVoiceChat.

Supported Networking Solutions

Mirror

Open-source Unity networking library

Netcode for GameObjects

Unity's official high-level netcode solution

FishNet

Unity Networking Evolved

Netick

C# networking solution for Unity

PurrNet

A Purrfect Unity networking solution

Riptide

Lightweight C# networking for multiplayer games

Other Unity networking solutions can easily be implemented by composing an agnostic MonoBehaviour and implementing a minimal interface — please feel free to contribute additional network provider implementations. Please make PRs with any of your changes or improvements if you feel they would be helpful to the public. Please create issues for things as you see fit.

Table of Contents

  • Installation
  • Notice for Unity Versions 2021 and Older!!!
  • Information
  • Video Tutorial
  • Tutorial
  • Tips
  • Thank Yous
  • Network Providers
  • Missing Features
  • Extending Functionality
    • Network Provider
    • VcAudioInput
    • VcAudioOutput
    • VcInputFilter
    • VcOutputFilter
  • License
  • Contact and Support
  • Examples
  • Changelog

Installation

  1. Go to "Releases" and download and install the latest Unity package.
  2. See Tutorial for additional steps.

Notice for Unity versions 2021 and older!!!

  • For older versions of Unity that do not include the System.Memory namespace, you must use the legacy branch of MetaVoiceChat.
  • Unity made this change somewhere in the 2021 versions of Unity.
  • If you are using 2021, try the main branch first, but if you get errors, use the legacy branch.
  • If you are using 2020 or earlier, use the legacy branch.

Information

  • Simple
    • Default Unity microphone
    • No user code required for basic usage and completely self-contained
    • No complicated cloud services required -- everything just works with your existing networking library
  • Configurable
    • Exposed Opus settings (defaults in bold)
      • Application: VOIP, Audio, or Restricted Low-Delay
      • Complexity: 0-10 (0 is less complex, while 10 is more complex)
      • Frame size: 10 ms, 20 ms, or 40 ms
      • Signal: Voice, Music, or Auto
    • General settings
      • Jitter calculation time window size in seconds
      • Jitter mean time offset calculation window size in updates
      • Output min buffer size in fractional frames
    • Audio pipeline system
      • VcAudioInput settings
        • First input filter (nullable)
      • VcInputFilter settings
        • Next input filter (nullable)
      • VcAudioOutput settings
        • First output filter (nullable)
      • VcOutputFilter settings
        • Next output filter (nullable)
    • VcAudioSourceOutput settings
      • Audio source
      • Buffer frame lifetime in seconds
      • Buffer max negative latency in seconds
      • Pitch proportional gain in percent per second of latency error
      • Pitch max correction in percent
    • Default input is the Unity microphone
    • Default output is a Unity Audio Source
  • Functional
    • Optional realtime noise suppression using Vatsal Ambastha's RNNoise4Unity (see tutorial for usage)
    • Automatic microphone reconnection configurable with VcMicAudioInput.SetSelectedDevice(string device)
    • VcMicAudioInput OnActiveDeviceChanged event
    • Functionality and reactive properties with events for
      • Speaking
      • Deafening yourself
      • Input muting yourself
      • Output muting others
    • Unity microphone wrapper
    • Circular audio clip
    • RMS jitter calculation utility within a time window and mean time offset window using a mean deviation method
    • Thread-safe fixed length array pool utility
    • Serializable reactive property utility
    • Frame stopwatch utility
    • Microphone devices listener utility
  • Modular
    • Abstract VcAudioInput and VcAudioOutput classes
    • Abstract VcInputFilter and VcOutputFilter pipelines
  • Testable
    • Echo mode to playback your own voice
    • Sine wave voice override mode
    • Max codec milliseconds before warning
      • These warnings are limited to once per frame by default
  • Details
    • No memory garbage created at runtime using pooled data buffers
    • Constants
      • 48kHz sampling frequency
      • Wideband Opus bandwidth
      • SILK Opus mode
      • Single audio channel
      • 16-bit audio
      • 1 second input and output audio clip loop time
    • Average latency is ~200 ms with default settings
    • Dynamic buffer latency compensation using a latency error P-controller with RMS jitter, sender FPS, server/host FPS, and receiver FPS adjustments
  • Opus features
    • Variable bitrate encoding
    • Opus Official Website

Video Tutorial

https://youtu.be/2fSqSAnRS5M

Tutorial

  1. Ensure you have properly completed the installation steps.
  2. Create a "Voice Chat" or similarly named game object as a child of your networked player game object or other networked game object that you would like to have networked audio on.
  3. Add the "MetaVc" component to the "Voice Chat" game object.
  4. Add your desired audio input, such as "VcMicAudioInput" to the game object.
  5. Likewise, add your desired audio output, such as "VcAudioSourceOutput" to the game object.
  6. Connect your audio input and output to the "MetaVc" fields.
  7. Lastly, add your desired network provider, such as "MirrorNetProvider", "NgoNetProvider", "FishNetNetProvider", or "NetickNetProvider" to the game object.
  8. It should look something like this now:
    • All of these defaults should be okay, however you may want to decrease the "Complexity" field for games with many concurrently connected users or lower-end devices.
    • Remember to use "Max Codec Milliseconds" to ensure that your complexity value is not too high for your game.
      • Note: The codec performs sluggishly in bursts, so set this value higher than your desired frame period and ensure warnings are not being spammed and then increase it back to the max to disable it when you are done testing.
    • Use "Allow Multiple Codec Warnings Per Frame" to ensure you get the total frame time used by the codec when there are warnings.
  9. Create a "Voice Chat Output" or similarly named Audio Source game object as a child of the networked game object. If this is a player, it should be in the mouth area.
  10. Configure the output Audio Source
    • "Output" = the voice chat audio mixer group (optional)
    • "Play On Awake" is set to false internally, so don't worry
    • "Loop" is set to true internally, so don't worry
    • "Spacial Blend" = 1 for 3D proximity chat and 0 for normal voice chat
    • "3D Sound Settings"
      • "Doppler Level" is set to 0 internally, so don't worry (It must be 0 because of how Unity implements this)
      • "Max Distance" = ~50 meters or whatever you think is best
      • Ensure the volume roll-off curve's last data point has a volume of zero.
    • Your general settings should look like this:
    • Your 3D sound settings should look like this:
  11. Connect your voice chat output Audio Source to the "Audio Source" field under the "Vc Audio Source Output" component.
  12. Connect the "Meta Vc" fields under your audio input and output to the "Meta Vc" sibling component.
  13. At this point, the "Voice Chat" game object should look like this:
  14. As of v4.3, it is recommended to use OnAudioFilterReadVcOutput because it fixes two playback bugs with VcAudioSourceOutput. Set up as follows.
  15. Delete the VcAudioSourceOutput and add OnAudioFilterReadVcOutput directly to the Audio Source you want to be the voice chat mouth.
  16. Assign "Meta Vc" on OnAudioFilterReadVcOutput.
  17. Click the nipple on "Audio Filter Read Config" and assign the default VC config.
  18. Ensure you assign this as the new "Audio Output" under "Meta Vc".
  19. You can mess around with the VC config scriptable object. If for some reason you run into crackling on a terrible computer or really bad network conditions, you can switch the "Jitter Buffer Mode" from "Low Latency" to "Balanced". I have never had the need to do this though. Test first.
  20. Optionally, you can install Vatsal Ambastha's RNNoise4Unity to use the noise suppression RnnoiseVcInputFilter.
  21. Be sure to follow the scoped registry setup instructions for RNNoise4Unity.
  22. Uncomment the #define ENABLE_RNNOISE_FOR_META_VOICE_CHAT in RnnoiseVcInputFilter.
  23. Set up RnnoiseVcInputFilter like this:
  24. See tips below or Examples for advanced usage.

Tips

  • Change Project Settings/Audio/DSP Buffer Size from "Best performance" to "Best latency"
  • Apply input and output filters to audio inputs and outputs by using the first filter fields
  • Chain together input and output filters to form pipelines by using the next filter fields
  • Disable and enable input and output filters by doing filterComponent.enabled = false/true or use the inspector tick box
  • A frame size of 10 ms is useful for achieving lower latency on higher-end devices with high network send rates for all users. A frame size of 40 ms is useful for optimization on lower-end devices and networks, but this negatively impacts ear-to-ear latency and worsens the audio quality when packets are dropped. A frame size of 20 ms is a good balance.

Thank Yous

A massive thank you to Vatsal Ambastha and his projects UniVoice and UniMic that were heavily referenced when starting this project in late 2023. His RNNoise4Unity project enables optional realtime noise suppression (separate package, see tutorial for usage).

Another thank you to Concentus: Opus for Everyone for their native C# implementation of Opus that makes it extremely easy to add Opus to projects like this.

Missing Features

  • Configurable sampling rates
  • Multithreading for Opus
  • Compared to Dissonance Voice Chat
    • Audio preprocessing
      • Dynamic range compres

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C#fishnetmirror-networkingproximity-chatunity

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月18日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言