- Right Tool Between VoiceDash & Spokenly
- VoiceDash vs Spokenly features
- Test Case 1: Spokenly vs VoiceDash Audio to Text
- Test Case 2. Code Syntax & Technical Dictation
- Test Case 3. Radiology Report Dictation
- Does Spokenly Work on Android?
- Spokenly & VoiceDash Pricing
- Spokenly and VoiceDash Privacy
- Spokenly or VoiceDash: Strength & Weakness
- Bottom Line
- Frequently Asked Questions
Spokenly vs VoiceDash: A Deep Dive into AI Dictation Workflows
Choosing between Spokenly and VoiceDash is not about finding a single “best” speech-to-text tool; it is a choice between local engine control and multi-device pipeline convenience. If your workflow relies on offline privacy, bring-your-own-key (BYOK) execution, or raw verbatim transcripts, Spokenly leads. But if you need cleaned text at the cursor on Mac, Windows, iOS, and Android, VoiceDash takes over where Spokenly hits a wall.
Right Tool Between VoiceDash & Spokenly
- Go with Spokenly if you require full engine control, offline functionality, bring-your-own-key (BYOK) configurations, or exact verbatim transcripts that retain natural speech nuances.
- Go with VoiceDash if cross-platform availability, specifically native Android support, is a hard requirement today, or if you need structured, send-ready paragraphs directly at your cursor.
30-Second Check: Before changing or canceling any subscriptions, test both tools against your daily tasks:
- Email Drafting: Dictate a sample email paragraph into Gmail on your desktop.
- Code & Syntax: Dictate a technical string (for example, checkout.ts or /api/v2/payments).
- Cross-Device Hand-off: Try repeating the email draft on your mobile device. VoiceDash supports this flow across Mac, Windows, iPhone, and Android; Spokenly currently limits this due to the lack of an Android client.
| Need | Winner in this Spokenly versus VoiceDash matchup |
|---|---|
| Offline dictation, BYOK, verbatim speech | Spokenly |
| Android plus formatted, sendable text | VoiceDash |
Spokenly vs VoiceDash is a split between engine control and a finished writing path. Spokenly is a configurable speech engine for Mac, Windows, Linux, and iPhone, with free offline Whisper and Parakeet models. VoiceDash is a cloud dictation that types cleaned text at the cursor on Mac, Windows, iPhone, and Android.


Prices and platforms were checked on 6 September 2026 on Spokenly pricing, Spokenly’s Android page, VoiceDash pricing, and the VoiceDash privacy policy. The two runs below are the supplied packet, not a lab WER study.
VoiceDash vs Spokenly features
| Feature | Spokenly | VoiceDash |
|---|---|---|
| Mac / Windows / iPhone | Yes | Yes |
| Android | No. Official waitlist, page dated June 2026 | Yes. Google Play listing |
| Offline local ASR | Whisper and Parakeet, no word cap | Not the primary path |
| Default output | Closer to raw speech in Test 1 | Closer to finished text in Test 1 |
| Voice editing | AI Instructions. Agent Mode on Mac | Command Mode |
| File transcription/ speaker labels | Yes/ yes | Web transcription available / speaker labels not documented |
| MCP | Yes | No |
| Free tier | Unlimited local, no account required | 1,000 words per month. Pricing page lists Mac and Windows on Free |
| Pro | $99.99 per year ($8.33 per month on that page) | $12 per month annually, or $15 per month |
Test Case 1: Spokenly vs VoiceDash Audio to Text
Same 45-second clip. Fillers, homophones, numbers, and technical terms. Full engine dumps were not in the packet, while the Input and the scored items were.
Input
“Right then, um, so like, I need to test this ASR system, yeah? Well, they’re going there to see the sea and write the right number. It’s two too many, no wait—two oh two, that’s two hundred and two. Uh the year was nineteen ninety-five, or 1995. Fifteen percent versus fifty percent. Ring five five five, one two three four. Don’t confuse eight with ate, or four with for. The transformer model tokenises phonemes and morphemes; the word error rate, WER, should stay low. Aluminium, schedule, privacy, lieutenant, vitamin, tomato. That’s it, innit.”


| Test item | Spokenly | VoiceDash | Edge |
|---|---|---|---|
| Fillers | Keeps more of the original fillers | Mostly cleans them up | Spokenly for raw transcription |
| see the sea | see the C | see the sea | VoiceDash |
| two too many | Preserved | Changed to It’s 202 | Spokenly |
| two oh two / 202 | Spoken form largely preserved | Normalized to 202 | VoiceDash for clean text |
| nineteen ninety-five, or 1995 | nineteen ninety five or one nine nine five | 1995 | VoiceDash |
| fifteen percent vs fifty percent | Keeps them as words | 15% vs 50% | VoiceDash for formatted text |
| Phone number | Drops one five | 555-1234 | VoiceDash |
| eight with ate / four with for | Keeps the spoken homophones | 8 with 8 / 4 with 4 | Spokenly |
| word error rate, WER | word error rate, W E R | Word Error Rate, WER | VoiceDash |
| Technical vocabulary | Generally accurate | Generally accurate | Tie |
| Extra content | No obvious insertion | Adds an extra tail: Right then | Spokenly |
Spokenly kept more of the speech, including fillers and “two too many.” VoiceDash built more sendable text and inserted “Right then.” That is not a raw-accuracy win for VoiceDash.
That split is not new. Xuedong Huang, then Microsoft’s chief speech scientist, wrote in August 2017 after a Switchboard result: “We have much work to do in teaching computers not just to transcribe the words spoken, but also to understand their meaning and intent. Moving from recognizing to understanding speech is the next major frontier for speech technology.”


Test Case 2. Code Syntax & Technical Dictation
Table scores shared tokens in the two outputs. It does not score either output against the labeled Input.
Input
“Okay, let me trace this bug from the top, because I’m not convinced the problem is where the stack trace says it is. First, I’m opening src/services/authService.ts, and I’m checking whether getUserById() is returning null, undefined, or an actual user object. Wait, actually, the function is called getUserByID, with a capital D, so don’t silently normalize that to getUserById. The request goes to /api/v3/users/42?include=profile, and the expected response is HTTP 200, not 201 or 204. Hmm, the server is returning 401, which makes me think Authorization: Bearer <token> is missing, but before changing anything I want to inspect process.env.JWT_SECRET_KEY, not JWT-SECRET-KEY. Let’s add a temporary log around response.data?.user?.email; no, scratch that, we absolutely should not log the user’s email in production. I’ll use response.data?.user?.id instead. The validation rule is /^[a-zA-Z0-9_-]{8,32}$/, and I need to preserve every character: caret, brackets, hyphen, underscore, braces, backslash, and dollar sign. The retry limit is three, the backoff is 1.5 seconds, and the total timeout must stay below 10,000 milliseconds. Now, in package.json, the script is npm run test:e2e, not npm run test-e2e; after that, run npm run build && npm run lint. If the build fails with TS2322, check whether UserResponse<T> is being assigned to UserResponse<User>. Actually, wait, I see it: the generic is <T extends BaseUser>, not <T = BaseUser>. That single character changes the constraint. Finally, compare status codes 200, 201, 400, 401, 403, 404, 409, 422, and 500, and make sure 2026-09-06T12:30:45.123Z remains exactly in ISO 8601 format. If everything passes, commit with git commit -m “fix: preserve user ID casing” and push to origin/main—no, stop, don’t push to main; create a branch called fix/auth-user-id first.”
VoiceDash Voice to Text Output
“Okay, let me think this through out loud. I’m going to refactor the processPayment function, but before I touch it, I want to check whether the bug is actually in checkout.ts or in payment-service.ts. Hmm, no, wait, it’s probably the API response, because we’re getting a 404 from /api/v2/payments, not a 403. The timeout is set to 2,500 milliseconds, but I think we should change that to 2,000, not 20,000. Also, don’t rename userId to user_id, because that would break the existing TypeScript interface. Right, and the environment variable is STRIPE_SECRET_KEY, all caps with underscores, not stripe-secret-key. Let me add a null check here. If response.data is null or undefined, return an empty object—no, wait, scratch that. The caller expects an array, so return an empty array. And we need to make sure 2026-09-06T12:30:00Z stays in ISO 8601 format. The regex is /[R-2-5-D4]/. And yes, the plus belongs inside the expression. One more thing: async goes before function, await goes before the promise, and try needs a matching catch. I nearly forgot the semicolon after return false. Okay, that should compile, but I’d still run npm test, then npm run build, and finally check HTTP status codes 200, 201, 400, 401, 403, 404, and 500 before I call this done.”


In this run, VoiceDash text landed at the cursor.
Spokenly output
“Okay, let me think this through out loud. I’m going to refactor the process payment function, but before I touch it, I want to check whether the bug is actually in checkout. ts or in payment-service. ts. Hmm, no, wait, it’s probably the API response, because we’re getting a 404 from slash API slash v2 slash payments, not a 403. The timeout is set to 2500 milliseconds, but I think But I think we should change that to 2000, not 20,000. Also, don’t rename user ID to user ID because that would break the existing TypeScript interface. Right, and the environment variable is stripe underscore secret underscore key, all caps with underscores, not stripe dash secret dash key. Let me add a null check here. If response. data is mull or undefined, return an empty object, not an empty array. Actually, scratch that. The caller expects an array, so return empty array. And we need to make sure 2026-09-06T1 The regex is capital R-2 to 5-D four dollar sign. And yes, the plus belongs inside the expression. One more thing. Async goes before function, await goes before the promise, and try needs a match and catch. I nearly forgot the semicolon after return false. Okay, that should compile, but I’d still run npm test, then npm run build, and finally check http status codes 200, 201, 400, 401, 403, 4 fo0ur hund4red, fo andur five hundred before I call this done.”


In this run, Spokenly used the app window. Spokenly’s docs still describe system-wide cursor insertion on the desktop.
| Test area | VoiceDash | Spokenly | Shared output tokens |
|---|---|---|---|
| Natural-language narration | Mostly accurate | Mostly accurate | Tie |
| CamelCase identifiers | processPayment preserved | processPayment → process payment | VoiceDash |
| Case-sensitive identifiers | userId kept in places; userID drifted toward user_id | userId / userID → user ID | VoiceDash |
| File names | checkout.ts preserved | checkout. ts | VoiceDash |
| API paths | /api/v2/payments preserved | slash API slash v2 slash payments | VoiceDash |
| Environment variables | STRIPE_SECRET_KEY preserved | Underscores verbalized | VoiceDash |
| Numbers | Mostly preserved | More normalization and sequence errors | VoiceDash |
| ISO timestamp | Preserved | Truncated | VoiceDash |
| HTTP status codes | Preserved | Sequence corrupted | VoiceDash |
| Object notation | response.data preserved | response. data | VoiceDash |
| Array syntax | [] → empty array | [] → empty array | Tie |
| Regex | Corrupted | More severely corrupted | Neither usable |
| Punctuation | Mostly preserved | More frequent normalization | VoiceDash |
| Code-ready output | Fewer repairs | More manual correction | VoiceDash |
| Workflow in this run | Text landed at the cursor | Session used the Spokenly app window | This session only |
On shared tokens, VoiceDash kept /api/v2/payments and response.data. Spokenly verbalized both. Regex failed on both sides. Do not score File B as a match to the labeled Input.
Try Free Voice to Text for Developers
Test Case 3. Radiology Report Dictation
“Alright, uh, findings, yeah. The, um, the right ovary—now that’s right, r-i-g-h-t, not write it down, the right ovary—measures three point two by two point one by two point four centimeters, you hear? Two, too, two. Within the right ovary there is, uh, hold on, a simple, uh, anechoic cyst, that’s cyst like C-Y-S-T, not cist, measuring one point eight centimeters, no wait, one eight, not ate, without, um, septation, mural nodularity, or internal vascularity, no flow, know what I mean, no flow. The left ovary measures two point nine by one point eight by two point two and is, uh, unremarkable. No adnexal mass. No free fluid in the cul-de-sac, none seen, not scene. Impression: simple right ovarian cyst, likely physiologic. Follow-up pelvic ultrasound in eight to twelve weeks, eight not ate, weeks not weaks, if, uh, clinically indicated. Yeah. That’s it.”
VoiceDash output
“Findings: The right ovary measures 3.2 x 2.1 x 2.4 cm. Within the right ovary, there is a simple anechoic cyst measuring 1.8 cm, without septation, mural nodularity, or internal vascularity. The left ovary measures 2.9 x 1.8 x 2.2 cm and is unremarkable. No adnexal mass or free fluid in the cul-de-sac is seen.
Impression: Simple right ovarian cyst, likely physiologic. Follow-up pelvic ultrasound in 8 to 12 weeks, if clinically indicated.”


Spokenly output
“All right, uh findings, yeah. The um the right ovary now that’s right. R I G H T, not write it down. The right ovary measures three point two by two point one by two point four centimeters, you hear? 222. Within the right ovary, there is uh hold on a simple uh anachoic cyst. That’s cyst, like CYST, not cyst, measuring one point eight centimeters, no eight, one eight, not eight, without um septation, mural nodularity, or internal vascularity, no flow. Know what I mean? No flow. The left ovary measures 2. 9 by 1. 8 by 2. 2 and is uh unremarkable. No adnexal mass, no free fluid in the cul-de-sac, none seen, not seen. Impression. Simple right ovarian cyst. Likely physiologic. Follow up pelvic ultrasound in eight to twelve weeks. Eight not eight. Weeks not weeks. If uh clinically indicated. Yeah, that’s it.”


What each output did
Spokenly stayed closer to the messy take. Fillers and asides are still visible. VoiceDash stayed closer to the filed note. Numerals, anechoic, and the Findings / Impression frame survived. Fillers and spelling asides were stripped. Two Findings sentences were merged into one. 8–12 became 8 to 12.
| Item | Spokenly | VoiceDash |
|---|---|---|
| Fillers and asides | Mostly kept | Mostly removed |
| Report structure | Speech-shaped | Findings / Impression |
| Right ovary 3.2 x 2.1 x 2.4 | Spoken form | Numeric form, correct |
| Cyst 1.8 cm | Spoken form | Numeric form, correct |
| Left ovary 2.9 x 1.8 x 2.2 | Spaces inside decimals | Numeric form, correct |
| anechoic | anachoic | anechoic |
| two / too / two | 222 | Not in output |
| eight / ate, weeks / weaks | Aside collapsed | 8 to 12 weeks |
| Workflow in this run | File in the Spokenly app | Cleaned paragraph (live path not shown in this file test) |
If the job is a transcript of a messy dictation, Spokenly left more of the take and also introduced anachoic and 222. If the job is a paragraph a clinician can paste, VoiceDash matched the target report more closely and discarded the asides. That is two different error profiles, not a single accuracy crown.
Does Spokenly Work on Android?
No, September 2026 list: Mac, Windows, Linux, iPhone. Android page dated June 2026 is a waitlist. VoiceDash has a Google Play listing.


VoiceDash on smart phone: dictate into the message field at the cursor.


VoiceDash can type at the cursor in Android apps you already use, including message fields. Spokenly cannot be tested on Android because there is no Android app. The official page remains a waitlist as of September 2026.


Spokenly & VoiceDash Pricing
Spokenly local and BYOK: $0 to Spokenly. Pro: $99.99 per year ($8.33 per month on that page). VoiceDash free: 1,000 words per month; pricing page lists Mac and Windows on Free. Pro: $144 per year or $15 month-to-month.$24 per month when billed annually, or $29 month-to-month, up to five people. AppSumo lifetime SKUs are not on the current VoiceDash pricing page.
| Path | Year 1 | Three years |
|---|---|---|
| Spokenly local | $0 | $0 plus setup time |
| Spokenly Pro | $99.99 | About $300 |
| VoiceDash Pro annual | $144 | About $432 |
Spokenly and VoiceDash Privacy
Spokenly can perform transcription entirely on-device when a local model is selected. VoiceDash’s published privacy policy describes cloud processing through OpenAI rather than local-only transcription.
VoiceDash policy text says it does not store voice files or transcriptions on its servers except for Notes you save, does not train on that voice data, and sends live audio to OpenAI. Spokenly Pro and BYOK use cloud processing when a cloud provider is selected. Policy text is not HIPAA, SOC 2, or a signed processing agreement.
Spokenly or VoiceDash: Strength & Weakness
Spokenly
- For: free local models, offline, BYOK, raw File A transcript, file diarization, and MCP.
- Against: no Android, more cleanup on shared File B code tokens, setup cost.
You can also read Spokenly Alternatives
VoiceDash
- For: Android plus desktop and iPhone, formatted File A text, fewer repairs on shared File B code tokens, Command Mode, snippets.
- Against: cloud-first, 1,000-word free cap, inserted text on File A, regex still broken, no published WER.


Bottom Line
Spokenly vs VoiceDash is not one accuracy crown. File A: Spokenly kept more speech; VoiceDash built more of the document and inserted extra text. File B: VoiceDash kept more shared code tokens; neither output matches the labeled Input. Keep Spokenly for offline and verbatim work. Use VoiceDash when the next device is Android, and the next step is to send. File C: Spokenly kept more of the messy take and wrote ‘anachoic’ and 222. VoiceDash produced a paste-ready note and dropped the asides.


