A lightweight, privacy-focused, P2P voice chat application with professional audio processing
Kiskord is a modern, browser-based voice chat application that enables crystal-clear P2P audio communication without requiring account registration. Built with cutting-edge web technologies, it offers Discord-quality audio processing directly in your browser.
Try it now: https://kiskord.netlify.app/
No installation required - just open the link and start chatting!
- No Sign-up Required: Anonymous login with just a display name
- Peer-to-Peer: Direct audio streams between users, no server intermediary
- No Data Storage: Audio streams are never recorded or stored
- RNNoise Integration: AI-powered noise suppression
- Advanced Audio Chain: High-pass filter, noise gate, EQ, de-esser, and limiter
- Multiple Quality Modes: Basic, Balanced, Professional, and Ultra (Discord-level)
- Voice Activity Detection: Automatic silence detection and gating
- Echo Cancellation: Built-in acoustic echo cancellation
- Instant Room Creation: Generate and share unique room IDs
- Visual Feedback: Speaking indicators and voice level meters
- Connection Monitoring: Real-time connection status display
- Self-Monitoring: Optional audio loopback for mic monitoring
- Dark Theme: Eye-friendly interface with smooth animations
- Responsive Design: Works on desktop and mobile devices
- Real-time Updates: Live participant list and status updates
- Accessible: Keyboard navigation and screen reader support
- Node.js (v18 or higher)
- npm or yarn
- A Firebase Project (free tier works fine)
-
Clone the repository:
git clone https://github.com/Lafun-code/kiskord.git cd kiskord -
Install dependencies:
npm install
-
Configure Firebase:
- Go to the Firebase Console
- Create a new project
- Enable Authentication โ Set up Anonymous sign-in method
- Enable Firestore Database (start in Test mode for development)
- Copy your web app configuration
- Create
.envfile in the root directory:VITE_FIREBASE_API_KEY=your_api_key VITE_FIREBASE_AUTH_DOMAIN=your_auth_domain VITE_FIREBASE_PROJECT_ID=your_project_id VITE_FIREBASE_STORAGE_BUCKET=your_storage_bucket VITE_FIREBASE_MESSAGING_SENDER_ID=your_sender_id VITE_FIREBASE_APP_ID=your_app_id
- Or update
src/firebase.tsdirectly with your config
-
Run the development server:
npm run dev
-
Open your browser:
http://localhost:5173
npm run build
npm run preview| Technology | Purpose |
|---|---|
| React 18 | UI Framework |
| TypeScript | Type Safety |
| Vite | Build Tool & Dev Server |
| Tailwind CSS | Styling |
| WebRTC | Peer-to-Peer Audio |
| Firebase | Authentication & Signaling |
| RNNoise | AI Noise Suppression |
| Web Audio API | Audio Processing |
kiskord/
โโโ public/
โ โโโ rnnoise/ # RNNoise WASM and AudioWorklet
โโโ src/
โ โโโ components/ # React components
โ โ โโโ ui/ # Reusable UI components
โ โ โโโ chat/ # Chat features
โ โโโ context/ # React Context providers
โ โโโ hooks/ # Custom React hooks
โ โ โโโ useWebRTC.ts # Main WebRTC logic
โ โโโ pages/ # Page components
โ โโโ utils/ # Utility functions
โ โ โโโ audioProcessor.ts # Audio processing chain
โ โโโ types.ts # TypeScript definitions
โโโ ...
Microphone Input
โ
DC Blocker (removes DC offset)
โ
Aggressive High-Pass Filter (removes low-frequency noise)
โ
Spectral Gate (ultra mode only - removes background noise)
โ
High-Pass Filter (fan/AC noise removal)
โ
Noise Gate (silence detection)
โ
RNNoise (AI-powered noise suppression)
โ
Voice EQ (clarity enhancement)
โ
De-Esser (sibilance reduction)
โ
Compressor (dynamic range control)
โ
Limiter (peak protection)
โ
Output Gain
โ
WebRTC โ Peer Connection
- Frontend: React + Vite + TypeScript
- Styling: Tailwind CSS
- State Management: React Context (Auth) + Hooks (WebRTC)
- Signaling: Firestore Collections
rooms/{roomId}/participants/{userId}: User presencerooms/{roomId}/participants/{userId}/incoming_offers: Signaling offersrooms/{roomId}/participants/{userId}/incoming_answers: Signaling answersrooms/{roomId}/participants/{userId}/incoming_ice: ICE candidates
- Create a Room: Enter your name and click "Create New Room"
- Share the Room ID: Copy the URL or room ID and share with others
- Join the Room: Others can join by entering the room ID
- Start Talking: Grant microphone permission and start chatting!
You can configure audio quality in src/pages/Room.tsx:
- Basic: Standard browser audio processing
- Balanced: RNNoise + basic processing (recommended)
- Professional: Full audio chain with EQ and compression
- Ultra: Discord-level quality with aggressive noise reduction
VITE_DEBUG=false # Enable debug logging
VITE_FIREBASE_API_KEY=... # Firebase config
# ... other Firebase settingsContributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- RNNoise - Deep learning-based noise suppression
- WebRTC - Real-time communication APIs
- Firebase - Backend infrastructure
- Tailwind CSS - Utility-first CSS framework
Project Link: https://github.com/Lafun-code/kiskord
If you find this project useful, please consider giving it a star! โญ
Made with โค๏ธ by the Kiskord Team