Real-time voice conversations with AI
Add a full voice mode to your web or React Native app with a few lines of TypeScript.
import { Micdrop } from '@micdrop/web'
Micdrop.start({ url: 'wss://your-server.com' })
Micdrop.on('StateChange', (state) => { console.log(state.conversation) console.log(state.isAssistantSpeaking)})
Micdrop.on('EndCall', () => { console.log('Call ended by assistant')})
// Hang upMicdrop.stop()import { Micdrop } from '@micdrop/web'import { useMicdropState } from '@micdrop/react'
const start = () => Micdrop.start({ url: 'wss://your-server.com' })
function Call() { const { conversation } = useMicdropState() return ( <> <button onClick={start}>Start the call</button> {conversation.map(({ role, content }, i) => ( <p key={i}>{role}: {content}</p> ))} </> )}import { Micdrop, useMicdropState } from '@micdrop/react-native'import { Button, Text, View } from 'react-native'
const start = () => Micdrop.start({ url: 'wss://your-server.com' })
function Call() { const { conversation } = useMicdropState() return ( <View> <Button title="Start the call" onPress={start} /> {conversation.map(({ role, content }, i) => ( <Text key={i}>{role}: {content}</Text> ))} </View> )}import { MicdropServer } from '@micdrop/server'import { OpenaiAgent } from '@micdrop/openai'import { GladiaSTT } from '@micdrop/gladia'import { ElevenLabsTTS } from '@micdrop/elevenlabs'
const { OPENAI_KEY, GLADIA_KEY, TTS_KEY, VOICE } = process.envconst systemPrompt = 'You are a helpful assistant'
wss.on('connection', (socket) => { new MicdropServer(socket, { firstMessage: 'How can I help you today?', agent: new OpenaiAgent({ apiKey: OPENAI_KEY, systemPrompt }), stt: new GladiaSTT({ apiKey: GLADIA_KEY }), tts: new ElevenLabsTTS({ apiKey: TTS_KEY, voiceId: VOICE }), })})What you can build
Micdrop takes care of the audio loop, so what is left to write is the product around it.
A voice mode in your product
Read the docsA React Native app that talks
Read the docsAn agent that acts while it talks
Read the docsForms filled by speaking
See the demoA 3D world that answers back
See the demoVoice onboarding in a SaaS
Coaching and language practice
Spoken assessments
Whatever else you have in mind
Start buildingHow it works
Audio leaves the microphone, crosses the client and your server, runs through transcription, the agent and speech synthesis, and comes back as a voice.
Voice input
The client captures the microphone, voice activity detection spots speech, and the audio is streamed to your server.
AI processing
The server runs the transcription, the agent reasoning and its tool calls, then the speech synthesis of the answer.
Voice output
The generated audio streams back and plays, with interruptions handled the moment the user speaks over the assistant.
Packages
One server, the client for the platform you ship on, and the AI providers you choose.
Core packages
One server, and the client for the platform you are building for
Utilities
React hooks that re-render your components as the call state changes, in the browser and in React Native
AI integrations
Ready-to-use integrations with popular AI providers
Local models
Transcription and voice that run inside your Node process. The audio stays on the machine.
What Micdrop handles for you
The parts that make a call feel live: latency, interruptions, device permissions and the freedom to change provider.
Low latency
Streaming audio processing, voice activity detection (VAD) and an efficient WebSocket transport keep the delay close to real time.
AI provider agnostic
Choose the best AI providers for your use case. Mix and match OpenAI, ElevenLabs, Cartesia, Mistral, Gladia, and more. Build custom integrations using our abstract interfaces.
Runs on your machine
The local packages run the speech models inside your Node process and the agent on Ollama, so the whole conversation works offline, with no API key and no audio leaving the machine.
Web and mobile
The browser and React Native clients are two thin layers over the same engine, so a call behaves the same on a laptop and on a phone. Microphone permission, audio session and echo cancellation are handled for you.
Developer experience
Written in TypeScript, with typed events, React hooks, runnable examples and documentation that covers every provider.
Build sovereign voice AI
Combine European AI providers to keep your data and your infrastructure inside EU borders, in French as well as in 90 other languages.
100% open-source stack. Your data stays in the EU, or on your own machine with local models. Full GDPR compliance.
Learn more about sovereign voice AIFrench LLM and realtime transcription
Gladia Speech-to-TextFrench STT with 90+ languages
Gradium Speech-to-Text & Text-to-SpeechFrench STT and TTS with natural voices
Local models Agent, Speech-to-Text & Text-to-SpeechWhisper, Piper and Ollama on your own machine
See it in action
The creator walks through Micdrop and how the pieces of a voice pipeline fit together.
Just call Micdrop.start() and your app holds a conversation.
Free and open source under the MIT license. Bring your own API keys, or run the models on your own machine.