{"id":13661759,"url":"https://github.com/adrenak/univoice","last_synced_at":"2025-05-16T03:05:28.159Z","repository":{"id":41329361,"uuid":"166532482","full_name":"adrenak/univoice","owner":"adrenak","description":"Voice chat/VoIP solution for unity. ","archived":false,"fork":false,"pushed_at":"2025-04-22T03:00:23.000Z","size":26131,"stargazers_count":385,"open_issues_count":8,"forks_count":35,"subscribers_count":9,"default_branch":"master","last_synced_at":"2025-04-22T04:52:23.107Z","etag":null,"topics":["microphone","p2p","peer-to-peer","unity","voice","voice-call","voip"],"latest_commit_sha":null,"homepage":"http://www.vatsalambastha.com/univoice","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adrenak.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-01-19T10:04:53.000Z","updated_at":"2025-04-22T02:58:40.000Z","dependencies_parsed_at":"2024-11-10T16:33:14.628Z","dependency_job_id":"ecdc1188-3b30-4034-a9e1-fb37564cfe63","html_url":"https://github.com/adrenak/univoice","commit_stats":null,"previous_names":[],"tags_count":22,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrenak%2Funivoice","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrenak%2Funivoice/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrenak%2Funivoice/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adrenak%2Funivoice/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adrenak","download_url":"https://codeload.github.com/adrenak/univoice/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254459088,"owners_count":22074605,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["microphone","p2p","peer-to-peer","unity","voice","voice-call","voip"],"created_at":"2024-08-02T05:01:41.104Z","updated_at":"2025-05-16T03:05:23.152Z","avatar_url":"https://github.com/adrenak.png","language":"C#","funding_links":[],"categories":["C\\#","C#","Audio and Sound Systems"],"sub_categories":[],"readme":"# UniVoice\r\nUniVoice is a voice chat/VoIP solution for Unity.\r\n  \r\nSome features of UniVoice:\r\n- 👥 Group voice chat. Multiple peers can join a chatroom and exchange audio.  \r\n\r\n- ⚙ Peer specific settings. Don't want to listen to a peer? Mute them. Don't want someone listening to you? Deafen them.  \r\n \r\n- 🎨 Customize your audio input, output and networking layers. \r\n  * 🌐 __Configurable Network__: \r\n    - UniVoice is networking agnostic. Implement the `IAudioClient` and `IAudioServer` interfaces using the networking plugin of your choice to have it send audio data over any networking solution. \r\n    - Built-in support for:\r\n        - Mirror networking.  \r\n\r\n  * 🎤 __Configurable Audio Input__: \r\n    - UniVoice is audio input agnostic. You can change the source of outgoing audio by implementing the `IAudioInput` interface.  \r\n    - Built-in support for:\r\n        - Capturing Mic audio as device input.  \r\n    \r\n  * 🔊 __Configurable Audio Output__:  \r\n    - UniVoice is audio output agnostic. You can divert incoming audio to anywhere you want by implementing the `IAudioOutput` interface.\r\n    - Built-in support for:\r\n        - Playing incoming audio using Unity AudioSource.  \r\n\r\n  * ✏️ __Audio Filters__: \r\n    - Modify outgoing and incoming audio by implementing the `IAudioFilter` interface. \r\n    - Built-in support for:\r\n        - Opus (Concentus) encoding \u0026 decoding.\r\n        - RNNoise based noise removal.\r\n        - Gaussian blurring for minor denoising.\r\n  \r\n## Installation\r\n⚠️ [OpenUPM](https://openupm.com/packages/com.adrenak.univoice/?subPage=versions) may not have up to date releases. Install using NPM registry instead 👇\r\n\r\nEnsure you have the NPM registry in the `manifest.json` file of your Unity project with the following scopes:\r\n```\r\n\"scopedRegistries\": [\r\n    {\r\n        \"name\": \"npmjs\",\r\n        \"url\": \"https://registry.npmjs.org\",\r\n        \"scopes\": [\r\n            \"com.npmjs\",\r\n            \"com.adrenak.univoice\",\r\n            \"com.adrenak.brw\",\r\n            \"com.adrenak.unimic\",\r\n            \"com.adrenak.concentus-unity\"\r\n        ]\r\n    }\r\n}\r\n```\r\nThen add `com.adrenak.univoice:x.y.z` to the `dependencies` in your `manifest.json` file (where x.y.z is the version you wish to install). The list of versions is available on [the UniVoice NPM page](https://www.npmjs.com/package/com.adrenak.univoice?activeTab=versions).\r\n\r\n## Docs\r\nAPI reference is available here: http://www.vatsalambastha.com/univoice\r\n\r\n## Samples\r\nThis repository contains a sample scene for the Mirror network, which is the best place to see how UniVoice can be integrated into your project.  \r\n  \r\n\u003e The sample relies on Mirror networking to work. Follow the instructions below for enabling Mirror in your project before trying it out.\r\n  \r\n## Dependencies\r\n[com.adrenak.brw](https://www.github.com/adrenak/brw) for reading and writing messages for communication. See `MirrorServer.cs` and `MirrorClient.cs` where they're used.  \r\n\r\n[com.adrenak.unimic](https://www.github.com/adrenak/unimic) for easily capturing audio from any connected mic devices. See `UniMicInput.cs` for usage. Also used for streaming audio playback. See `StreamedAudioSourceOutput.cs` for usage.\r\n\r\n[com.adrenak.concentus-unity](https://www.github.com/adrenak/concentus-unity) for Opus encoding and decoding. See `ConcentusEncodeFilter.cs` and `ConcentusDecodeFilter.cs` for usage\r\n\r\n## Activating non-packaged dependencies\r\nUniVoice includes and installs the dependencies mentioned above along with itself. The following implementations are available out of the box when you install it:\r\n* Opus encoding/decoding filter (via Contentus-Unity)\r\n* GaussianAudioBlur filter (plain C#, no dependencies used)\r\n* Mic audio capture input (via UniMic)\r\n* AudioSource based playback output (via UniMic)\r\n\r\nBut the following implementations are based on dependencies that you have to install and enable via compilation symbols as they are _not_ UniVoice dependencies and _don't_ get installed along with UniVoice. This is because they are either third party modules or based on native libraries (not plain C#) that can pose build issues.  \r\n* Mirror network:\r\n    * To enable, ensure the Mirror package is in your project and add `UNIVOICE_NETWORK_MIRROR` to activate it\r\n* RNNoise Noise removal filter:\r\n    * To enable, ensure the [RNNoise4Unity](https://github.com/adrenak/RNNoise4Unity) package is in your project and add `UNIVOICE_FILTER_RNNOISE4UNITY` to activate it\r\n\r\n## License and Support\r\nThis project is under the [MIT license](https://github.com/adrenak/univoice/blob/master/LICENSE).\r\n\r\nCommunity contributions are welcome.\r\n  \r\n## Contact\r\nThe developer can be reached at the following links:\r\n  \r\n[Website](http://www.vatsalambastha.com)  \r\n[LinkedIn](https://www.linkedin.com/in/vatsalAmbastha)  \r\n[GitHub](https://www.github.com/adrenak)  \r\n[Twitter](https://www.twitter.com/vatsalAmbastha)  \r\nDiscord: `adrenak#1934`","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadrenak%2Funivoice","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadrenak%2Funivoice","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadrenak%2Funivoice/lists"}