A browser-based voice transcription app that lets you record audio, send it to cloud speech-to-text models, and compare their speed and accuracy side by side. Everything stays local: no server, no account, no background telemetry.
By Awais Alwaisy | Maina Voice | MIT License
Maina Voice publicly launched on August 12, 2026.
| Directory | Status | Submitted |
|---|---|---|
| WhatAreYouBuilding.ai | Live | Aug 28, 2026 |
| TinyLaunch | Scheduled for Sep 28, 2026 | Aug 28, 2026 |
| SubmitForBacklinks | In review, launch week of Oct 5, 2026 | Aug 28, 2026 |
Record mode: Pick a speech model, record your voice, and get a transcript. Re-transcribe the same recording with another model whenever you want to compare outputs without speaking twice.
Benchmark mode: Run multiple models on the same audio clip simultaneously to see which finishes first and check the exact speed ratio between them.
History: Saves every transcription locally with full version tracking. Re-transcribe as many times as you like without losing older attempts. You can diff, copy, or clean them up anytime.
Backup and restore: Export your recordings, transcripts, and settings to a ZIP archive. Filenames include your local time and timezone so you always know when a backup was taken.
| Usage scale | Monthly words | Estimated audio time | Wispr Flow Pro | Maina Voice (OpenRouter API) | Your monthly savings |
|---|---|---|---|---|---|
| Light dictation | 2,000 words | ~15 minutes | $0.00 (Free tier cap limit) | ~$0.05 | Free tier cap hit on Flow |
| Casual user | 10,000 words | ~1.2 hours | $15.00 / mo ($180/yr) | ~$0.27 | Save $14.73 / month (98.2%) |
| Power dictator | 30,000 words | ~3.5 hours | $15.00 / mo ($180/yr) | ~$0.81 | Save $14.19 / month (94.6%) |
| Heavy professional | 100,000 words | ~12 hours | $15.00 / mo ($180/yr) | ~$2.70 | Save $12.30 / month (82.0%) |
| Enterprise / Heavy | 250,000 words | ~30 hours | $15.00 + team upsell | ~$6.75 | Save $8.25 / month (55.0%) |
Note: Maina Voice costs come directly from live benchmarked usage in the dashboard image above (~2,594 words processed for $0.07 across OpenAI GPT-Transcribe, Fish Audio Transcribe-1, Deepgram Nova-3, and NVIDIA Parakeet).
- Pay only for what you use: Wispr Flow charges $15/month ($144/year) regardless of whether you speak 500 words or 50,000 words. Maina Voice uses pay-as-you-go pricing, so light users pay cents instead of a full monthly bill.
- No word caps or forced upgrades: Wispr Flow caps free accounts at 2,000 words per week (roughly 15 minutes of audio). Maina Voice puts no limits on your usage because you connect your own OpenRouter key directly.
- Multi-model benchmarking: Wispr Flow ties you to a single closed stack. Maina Voice lets you choose between 4+ providers (OpenAI, Deepgram, NVIDIA, Fish Audio) and benchmark them head-to-head.
- Local data storage: Wispr Flow syncs your audio and text to cloud servers under a user account. Maina Voice stores everything in your browser's IndexedDB. Audio goes straight to OpenRouter over HTTPS and nowhere else.
If someone asks how word counts translate into audio duration:
Average conversational dictation sits around 150 Words Per Minute (WPM).
-
Words per second (WPS):
$150 \div 60 = 2.5\text{ words/sec}$ -
Seconds per word:
$1 \div 2.5 = 0.4\text{ seconds/word}$
- Sample run: 24 runs, 2,594 words, total audio ~365 seconds (~6.08 minutes).
- Total OpenRouter cost: $0.07 total across all four models.
-
Unit metrics:
$$\text{Cost per 1,000 words} = \frac{$0.07}{2,594} \times 1,000 =
$0.027$ $ $$\text{Cost per minute of audio} = \frac{$0.07}{6.08\text{ mins}} =$0.0115$ $
| Category | Words / Month | Formula | Audio Time | Maina Voice (OpenRouter API) | Wispr Flow Flat Fee |
|---|---|---|---|---|---|
| Casual | 10,000 words | ~66.6 mins (~1.1 hrs) | ~$0.27 | $15.00 | |
| Moderate | 30,000 words | ~200 mins (~3.3 hrs) | ~$0.81 | $15.00 | |
| Heavy | 100,000 words | ~666 mins (~11.1 hrs) | ~$2.70 | $15.00 |
Maina Voice connects to both OpenRouter and direct provider APIs (such as Groq), giving you direct access to the top speech-to-text models.
| Speech Model | Provider | Latency Grade | Accuracy Grade | Cost per Min | Cost per Hour | Status & Rank |
|---|---|---|---|---|---|---|
| Transcribe-1 | Fish Audio | Fast | Very High | $0.0038 | $0.228 | 🥇 #1 Best Overall Accuracy |
| GPT-Transcribe | OpenAI | Fast | State-of-the-Art | $0.0045 | $0.270 | 🥈 #2 High Precision |
| Whisper Large v3 Turbo | Groq | Blazing | Very High | $0.00067 | $0.040 | ⚡ #3 Ultra-Fast & Cheapest ($0.04/hr) |
| Nova-3 | Deepgram | Ultra-Fast | Very High | $0.0043 | $0.258 | 🟡 Standard Cloud API |
| Parakeet TDT v3 | NVIDIA | Ultra-Fast | High | $0.0035 | $0.210 | 🟢 Lightweight Model |
Key takeaway: Groq Whisper Large v3 Turbo offers sub-300ms latency at $0.04/hr (up to 9x cheaper than standard APIs with 2,000 free requests/day). However, benchmark testing shows Fish Audio Transcribe-1 and OpenAI GPT-Transcribe consistently rank higher in raw transcription accuracy and nuance handling, placing Groq in 3rd position for overall output quality.
We are continuously benchmarking and expanding Maina Voice to evaluate the absolute best speech-to-text APIs in the industry:
- Benchmark & Integrate Top STT APIs (Gladia, etc.): Benchmark and evaluate industry leaders (as discussed in Awais Alwaisy's update and Gladia's STT API landscape study) to integrate the highest-accuracy real-time engines.
- Groq LPU Direct Integration: Native support for Groq API keys (
https://api.groq.com/openai/v1/audio/transcriptions) for $0.04/hr Whisper Large v3 Turbo transcriptions. - Custom OpenAI-Compatible Endpoints: Allow users to specify custom API Base URLs (for local Ollama, vLLM, or self-hosted Whisper microservices).
- Global Hotkey Dictation: Desktop system-wide hold-to-talk keybindings for immediate pasting into active windows.
- Advanced LLM Post-Processing & Cleanup: Custom background cleanup prompts for fixing punctuation, filler words ("uh", "um"), and domain jargon using local or cloud LLMs.
- Vue 3 with Composition API (
<script setup>) - Vite as the build tool
- TypeScript in strict mode
- Tailwind CSS v4 via
@tailwindcss/vite - Pinia for state management
- Reka UI for accessible UI primitives
- IndexedDB for local storage (no backend)
- Web Audio API for audio conversion
- Node.js 20+
- pnpm 9+
- An OpenRouter API key
git clone https://github.com/alwaisy/mainavoice-web.git
cd mainavoice
pnpm install
pnpm devOpen the app in your browser, head to Settings, and paste your OpenRouter API key.
pnpm build
pnpm previewsrc/
assets/ Global styles and Tailwind setup
components/ UI components and dialogs
ui/ Primitive components (Reka UI wrappers)
i18n/ Localization files
layouts/ Shared layout components
lib/ Utility functions
pages/ Page views (Record, Compare, History, Settings, Audio Detail)
router/ Route definitions
schemas/ Zod validation schemas
services/ Transcription, transliteration, backup, and DB logic
stores/ Pinia stores
public/ Static assets, icons, PWA manifest
The browser's MediaRecorder API captures microphone input directly as lightweight WebM Opus (or Ogg/MP4 depending on browser). Maina Voice streams this compact audio payload directly to OpenRouter and Groq endpoints (/audio/transcriptions), minimizing network latency and delivering sub-second transcription speeds without client-side CPU bloat.
Transcriptions stream asynchronously and independently per model slot, rendering each card the millisecond its result arrives.
Your audio only leaves your device when you explicitly submit a recording for transcription. All recordings, transcripts, and configuration settings stay in IndexedDB (mainavoice_indexeddb). The app runs no telemetry, tracking scripts, or remote database logging.
Your OpenRouter API key is stored locally in IndexedDB and attached to requests via HTTP Authorization: Bearer headers. It is sent exclusively to OpenRouter endpoints.
When transcribed text includes Devanagari script, Maina Voice can convert it to Urdu. This works offline using a character map in transliteration-service.ts and can be enabled or disabled in Settings.
Run validation before submitting a pull request:
pnpm check # runs lint:fix, lint, and typecheck in sequenceAvailable commands:
pnpm dev # start dev server
pnpm build # production build
pnpm lint # lint only
pnpm lint:fix # auto-fix lint issues
pnpm typecheck # type check only
pnpm clean # remove build artifacts
pnpm shadcn # add a Reka UI componentContribution guidelines:
- Write commits using Conventional Commits (
feat:,fix:,chore:,docs:). - Keep PRs green with
pnpm check. - Use
<script setup>syntax exclusively. - Follow
@antfu/eslint-configformatting (2 spaces, single quotes, no semicolons). - Route state modifications through Pinia actions.
MIT. See LICENSE.md.
