Someone drops a 90-second voice memo in your server. You're in a meeting. Miwa reads it for you — no replaying, no AirPods required.
Free to add · No setup required · Works the moment someone sends a voice note
Voice notes are fast to send and slow to consume. Miwa closes that gap automatically.
Send a voice note like normal. Miwa notices it and replies with the text — nobody has to type a command.
Reply with !translate and a foreign-language voice note comes back in English.
Audio is processed in memory and never stored on disk. The transcript is the only thing that sticks around — in your channel, not on a server.
Record one the normal way, right inside Discord. Miwa picks it up the moment it lands in the channel.
The audio is sent over an encrypted connection to be transcribed, then discarded. Nothing is written to disk.
A reply lands under the original voice note — the words, the detected language, and how confident the read was.
Most of the time you won't need these — just send a voice note. They're here for replies and older messages.
!transcribe [lang]
Transcribes an attached audio file, or one you're replying to. Add a language code (like es) if it's not in English.
!translate
Same idea, but the text always comes back in English — no matter what language was spoken.
(just send a voice note)
No command needed. Miwa replies automatically under any voice message sent in a channel it's in.
Miwa is a solo-built side project — async Python throughout, no part of it blocks while waiting on audio or the network.
Built on discord.py, running fully async — message events, attachment detection, and replies all happen without blocking the event loop.
Audio is sent to Groq's hosted Whisper endpoint (whisper-large-v3-turbo for transcription, whisper-large-v3 for translation) over an async httpx client.
An asyncio.Semaphore caps how many transcriptions run at once, so a burst of voice notes queues politely instead of overwhelming the API.
Structured logs via structlog trace every voice note from detection through delivery — useful for debugging issues after the fact, not for watching anyone in real time.