commit 4ad6af53b9cd849b896203a9ab2cb069c378964f Author: dadechinunity Date: Sat Jun 28 11:12:11 2025 +0330 Create README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..c458b67 --- /dev/null +++ b/README.md @@ -0,0 +1,72 @@ +# Unity Socket Voice Chat Example 🎙️ + +This Unity project demonstrates a real-time voice chat system using: + +- 🎧 **Microphone input with Opus codec (via Concentus)** +- 🔊 **Dynamic bandpass audio filtering** +- 📡 **WebSocket communication (via WebSocketSharp)** +- 🎮 **Unity AudioSource streaming with a circular buffer** + +--- + +## Features + +- ✅ Record microphone audio in real time. +- ✅ Apply a tunable bandpass filter to remove noise and improve voice clarity. +- ✅ Encode audio using Opus codec for low-latency transmission. +- ✅ Transmit voice data over a WebSocket connection. +- ✅ Decode and playback received voice with a continuous audio stream. + +--- + +## Setup + +### 🔧 Requirements + +- Unity 2020.3 or newer (tested on Unity 2021+) +- [WebSocketSharp](https://github.com/sta/websocket-sharp) library +- [Concentus Opus codec for C#](https://github.com/lostromb/concentus) +- A WebSocket server (you can use a basic Python or Node.js echo server for testing) + +--- + +## Project Structure + +### 🎙️ `OpusMicRecorder.cs` + +- Captures microphone audio. +- Applies a bandpass filter with adjustable `lowFreq` and `highFreq`. +- Encodes audio using Opus (20ms frame). +- Sends encoded data through `OnEncodedAudio` event. + +### 📤 `OpusVoiceSender.cs` + +- Connects to a WebSocket server. +- Listens for encoded audio from `OpusMicRecorder`. +- Sends voice packets via WebSocket. + +### 📥 `OpusVoiceReceiverWithBuffer.cs` + +- Connects to the same WebSocket server. +- Receives encoded Opus packets. +- Decodes them into PCM audio. +- Buffers the audio into a ring buffer for continuous playback using an `AudioSource`. + +--- + +## Usage Instructions + +### 1. Add Required Libraries + +- Import `WebSocketSharp.dll` into your Unity project. +- Add the `Concentus` library (via Unity Package Manager or DLL). + +### 2. Setup Scene + +- Create an empty GameObject in your scene. +- Attach: + - `OpusMicRecorder` + - `OpusVoiceSender` + - `OpusVoiceReceiverWithBuffer` + +