Now transcribing in your server

Voice notes,
now in writing.

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

#general · just now
0:42
"Hey — can you push the deploy before 5? I'll review the PR once you ping me, just don't merge to main yet."
EN · DETECTED 97% CONFIDENCE 0:42
Why people add it

Built for the moment you can't listen right now.

Voice notes are fast to send and slow to consume. Miwa closes that gap automatically.

No tapping required

Send a voice note like normal. Miwa notices it and replies with the text — nobody has to type a command.

Readable in any language

Reply with !translate and a foreign-language voice note comes back in English.

Nothing kept around

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.

How it works

Three steps, none of them yours.

01

Send a voice note

Record one the normal way, right inside Discord. Miwa picks it up the moment it lands in the channel.

02

It listens, briefly

The audio is sent over an encrypted connection to be transcribed, then discarded. Nothing is written to disk.

03

Text shows up

A reply lands under the original voice note — the words, the detected language, and how confident the read was.

Commands

For when you want to ask directly.

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.
Good to know

What happens to your audio.

Processed in memory, never saved to disk
Sent over encrypted connections only
Transcription handled by Groq's Whisper models
For the curious

What's actually running underneath.

Miwa is a solo-built side project — async Python throughout, no part of it blocks while waiting on audio or the network.

Discord layer

Built on discord.py, running fully async — message events, attachment detection, and replies all happen without blocking the event loop.

Transcription

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.

Concurrency control

An asyncio.Semaphore caps how many transcriptions run at once, so a burst of voice notes queues politely instead of overwhelming the API.

Observability

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.

View the source