Go to file
2025-06-28 11:12:11 +03:30
README.md Create README.md 2025-06-28 11:12:11 +03:30

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


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