All Projects → adrenak → univoice

adrenak / univoice

Licence: MIT License
Voice chat/VoIP solution for unity. P2P implementation included.

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to univoice

Univoice
P2P VoIP in Unity
Stars: ✭ 128 (-33.33%)
Mutual labels:  peer-to-peer, p2p, voice, microphone, voip
SentryPeer
A distributed peer to peer list of bad actor IP addresses and phone numbers collected via a SIP Honeypot.
Stars: ✭ 108 (-43.75%)
Mutual labels:  peer-to-peer, p2p, voip
The-Kademlia-Protocol-Succinctly
This is the companion repo for The Kademlia Protocol Succinctly by Marc Clifton. Published by Syncfusion.
Stars: ✭ 28 (-85.42%)
Mutual labels:  peer-to-peer, p2p
twilio-client.js
Twilio’s Programmable Voice JavaScript SDK
Stars: ✭ 63 (-67.19%)
Mutual labels:  voice, voip
figaro
Real-time voice-changer for voice-chat, etc. Will support many different voice-filters and features in the future. 🎵
Stars: ✭ 362 (+88.54%)
Mutual labels:  voice, microphone
speaker.app
Source code for https://speaker.app, a batteries-included, web-based, quasi-decentralized, WebRTC networking platform, with a primary focus on audio and screen-sharing, and a secondary focus on chat messages and peripheral features.
Stars: ✭ 26 (-86.46%)
Mutual labels:  voice, microphone
airdrop
Relp ✨ A web messenger. Enjoy free text chat, voice call and file sharing ✔
Stars: ✭ 46 (-76.04%)
Mutual labels:  peer-to-peer, voice-call
tordam
A library for peer discovery inside the Tor network
Stars: ✭ 13 (-93.23%)
Mutual labels:  peer-to-peer, p2p
Cratetorrent
A BitTorrent V1 engine library for Rust (and currently Linux)
Stars: ✭ 233 (+21.35%)
Mutual labels:  peer-to-peer, p2p
somleng
Open Source Implementation of Twilio's REST API
Stars: ✭ 33 (-82.81%)
Mutual labels:  voice, voip
husarnet
Husarnet is a Peer-to-Peer VPN to connect your laptops, servers and microcontrollers over the Internet with zero configuration.
Stars: ✭ 128 (-33.33%)
Mutual labels:  peer-to-peer, p2p
tvoip
Terminal-based P2P VoIP application (TeamSpeak-/Skype-like voice chatting over LAN or Internet)
Stars: ✭ 34 (-82.29%)
Mutual labels:  voice, voip
tgcalls
Voice chats, private incoming and outgoing calls in Telegram for Developers
Stars: ✭ 408 (+112.5%)
Mutual labels:  voice, voip
voice
Implementation of the Discord Voice API for discord.js and other JS/TS libraries
Stars: ✭ 310 (+61.46%)
Mutual labels:  voice, voip
SilentServer
Silent is very lightweight, high quality - low latency voice chat for gaming. The server runs on Windows and Linux.
Stars: ✭ 52 (-72.92%)
Mutual labels:  voice, voip
ascii-chat
A terminal-based peer-to-peer (P2P) end-to-end-encrypted (E2EE) video chat application with text messaging, written in OCaml. Supports up to 4 clients. Supports connections over internet and LAN.
Stars: ✭ 20 (-89.58%)
Mutual labels:  peer-to-peer, p2p
cypherpoker.js
An open source peer-to-peer poker platform with cryptocurrency integration written in JavaScript.
Stars: ✭ 72 (-62.5%)
Mutual labels:  peer-to-peer, p2p
React Peer
Send data to someone else's browser as easy as setting state
Stars: ✭ 191 (-0.52%)
Mutual labels:  peer-to-peer, p2p
Redwood
A highly-configurable, distributed, realtime database that manages a state tree shared among many peers.
Stars: ✭ 218 (+13.54%)
Mutual labels:  peer-to-peer, p2p
pop
Run a point-of-presence within Myel, the community powered content delivery network.
Stars: ✭ 28 (-85.42%)
Mutual labels:  peer-to-peer, p2p

UniVoice

UniVoice is a voice chat/VoIP solution for Unity.

It comes with ready-to-use P2P (peer to peer) conenctivity which allows devices to communicate nearly free of cost*. For the underlying P2P solution, please visit AirPeer

Some features of UniVoice:

  • 👥 Group voice chat. Multiple peers can join a chatroom and exchange audio.

  • Peer specific settings. Don't want to listen to a peer? Mute them. Don't want someone listening to you? Mute yourself against them.

  • Edit outgoing and incoming audio with filters and effects. (No filters or effects provided out of the box currently)

  • 🎨 Customise your audio input, output and networking layer.

    • 🎤 Configurable Audio Input: Decide what the input of your outgoing audio is. Let it be from Unity's Microphone class, or a live streaming audio, or an MP4 file on the disk.

    • 🔊 Configurable Audio Output: Decide where the incoming peer audio goes. Let the output of incoming audio be Unity AudioSource to play the audio in-game, or write it into an MP4 on the disk, or stream it to an online service.

    • 🌐 Configurable Network: Want to use UniVoice in a WLAN project using Telepathy? Just adapt its API for UniVoice with a simple the IChatroomNetwork interface. Using your own backend for multiplayer? Create and expose your audio API and write a UniVoice implementation, again with the same interface.

  • 📦 Provides out-of-the-box implementation for audio input, output and networking. Just run the group chat sample in Unity. UniVoice comes packaged with:

    • 🎤 Audio Input: based on UniMic which sends your microphone input over the network.

    • 🔊 Audio Output: source that plays incoming peer audio on Unity AudioSource

    • 🌐 P2P network: implementation based on AirPeer which uses WebRTC for free-of-cost networking between peers.

      Plus, to get started you don't need to worry about hosting your own WebRTC signalling server as a server that's good enough for testing is already available. (See the project samples for more details)

*signalling server costs still apply, but they are minimal and sometimes free on platforms such as Heroku

Documentation

For the API documentation, please visit http://www.vatsalambastha.com/univoice

Manuals, Wiki, Tutorials, etc. are not available yet.

Usage

Creating a chatroom agent

  • To be able to host and join voice chatrooms, you need a ChatroomAgent instance. To get the ready-to-use inbuilt implementation, use this
var agent = new InbuiltChatroomAgentFactory(SIGNALLING_SERVER_URL).Create();
// Don't worry, a signalling server URL is available inside the repositories samples code. 

Hosting and joining chatrooms

Every peer in the chatroom is assigned an ID by the host. And every peer has a peer list, representing the other peers in the chatroom.

  • To get your ID
    agent.ID;

ChatroomAgent exposes Network, an implementation of IChatroomNetwork

  • To get a list of the other peers in the chatroom, use this:
    agent.Network.Peers

agent.Network also provides methods to host or join a chatroom. Here is how you use them:

// Host a chatroom using a name
agent.Network.HostChatroom("ROOM_NAME"); 

// Join an existing chatroom using a name
agent.Network.JoinChatroom("ROOM_NAME");

// Leave the chatroom, if connected to one
agent.Network.LeaveChatroom();

// Closes a chatroom, if was hosting one
agent.Network.CloseChatroom();

Muting Audio

To mute everyone in the chatroom, use agent.MuteOthers = true; or set it to false to unmute them all.

To mute yourself use agent.MuteSelf = true; or set it to false to unmute yourself. This will stop sending your audio to all the peers in the chatroom.

For muting a specific peer, first get the peers settings object using this:

var settings = agent.PeerSettings[id]; // where id belongs to the peer in question
settings.muteThem = true;

If you want to mute yourself towards a specific peer, use this:

var settings = agent.PeerSettings[id]; // where id belongs to the peer in question
settings.muteSelf = true;

Events

agent.Network provides several network related events. Refer to the API reference for them.

Known Issues

UniVoice is based on AirPeer which currently has an issue where peers on different networks are often unable to connect.

Eg. two mobile phone in different geographical locations are trying to have a voice chat. Both are connected to their respective WiFi. One hosts and waits for the other. The one trying to join may fail and only succeed when the connection is changed from its Wifi to cellular data.

This issue will be addressed inside AirPeer itself. For more see the 'Connectivity issues' section at the AirPeer Homepage

Alternatively, a Unity WebRTC based implementation of UniVoice's network interface may be directly introduced.

In either case, there a need to have a newer underlying networking solution.

License and Support

This project under the MIT license.

Updates and maintenance are not guaranteed and the project is maintained by the original developer in his free time. Community contributions are welcome.

Commercial consultation and development can be arranged but is subject to schedule and availability.

Contact

The developer can be reached at the following links:

Website
LinkedIn
GitHub
Twitter

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].