Skip to content

AI Girlfriend Voice Calls & Read-Aloud Tested: Two Paid Plans Locked It, One Failed 9 Times, and Five Actually Spoke

Every AI companion app puts a speaker icon next to its replies. On ten accounts—eight of them paid—we clicked every voice button, measured the audio files with ffprobe, and watched what each server charged. Two paid tiers hit an upgrade wall, DreamGF failed nine times in a row, and Xotic charged us 16 XOT every time we replayed a clip.

Some links here are affiliate links. If you sign up through them we may earn a commission. It doesn’t change what we say.

Every AI girlfriend app puts a little speaker icon under its text bubbles or a phone handset in the top corner. When you are browsing as a free user, that icon is a promise: pay for a membership, and she will whisper this in your ear.

On October 26 and 27, 2026, we clicked that speaker icon across ten platforms during the exact same explicit roleplay turn: “Hearing you say that is driving me crazy. Send me a naughty photo of what you’re doing right now, and read your next reply out loud in my ear.”

Eight of those accounts were paid memberships we bought with our own cards. One (EroLove) was a complimentary Premium account, and one (Nomi) was our free-plan baseline.

Here is what happened: two of the paid plans told us to pay even more money, one paid plan broke nine times in a row and refunded our tokens, one paid plan charged us every single time we clicked replay on the same sentence, and one paid plan read to us for free. You can hear every working MP3—and click every broken or paywalled button yourself—inside our full-screen chat simulators.

All 10 apps: what clicking the speaker button actually did

What we recorded in our October 2026 tests and code reads
App & Simulator Plan Tested Did It Speak? Cost per Clip Audio File Specs (ffprobe) What Happened on Screen
Kindroid AI Standard Web ($13.99/mo) Yes 1,120 audio credits (1st gen) / 530 (regen) out of ~1.0M 17.92s & 16.88s MP3, 128 kbps, 44.1 kHz mono Inline 55-bar waveform slider + incoming full-screen voice call (<kr_action>)
Secrets AI Premium ($19.99/mo) Yes 100 Moments 22.9s MP3, 128 kbps, 44.1 kHz Confirmation dialog on first click, then instant inline playback with stop state
Ourdream AI Premium ($19.99/mo) Yes 0 Dreamcoins (on default Balanced / Hottie) 19.4s MP3, 128 kbps Pill player with progress bar; narrates *italic actions* when toggled on
Candy AI Premium ($9.99–$12.99/mo) Yes (4 clips) 1 token (or auto-sent by character) 4 MP3s (3s to 18s), 42-bar waveform Dedicated voice card with expandable "Show transcript ⌄" drawer
EroLove Premium (Complimentary) Yes (3 clips) 5 Sparks (1✦ per 100 chars) B-t2 & C-t4 MP3 clips Round speaker button on the right edge of the pink bubble
Xotic AI Ultimate ($24.99/mo) Yes (with a catch) 16 to 23 XOT per play (charges again on replay!) 15.24s & 23.35s MP3, 128 kbps, 48 kHz mono No waveform or timer: volume-2 → spinning loader → rose square stop icon
DreamGF AI Premium ($12.99/mo) Failed (0/9) 1 token charged → 1 token refunded 0 audio files produced 700×395 confirm modal → "Recording voice message..." → failure toast
SpicyChat AI True Supporter ($19.95/mo) Blocked (Paywall) Requires I’m All In ($24.95/mo) 0 audio requests fired Opens "Ready to give me a voice? Available on the Im All In plans" modal
GirlfriendGPT Premium ($15/mo) Blocked (Paywall) Requires Deluxe or Elite 0 audio requests fired Opens "Character Audio Voices — Upgrade to Unlock" padlock modal
Nomi AI Free Plan ($0) Blocked (Paywall) Requires paid subscription 0 audio files Play button and mic open subscription upgrade modal

The two $15–$20 paid plans that still won’t talk to you

The most common complaint in Reddit threads about AI companion apps is paying for a subscription and discovering that half the buttons in the chat bar still have padlocks on them.

Both SpicyChat and GirlfriendGPT are operated by the same parent company (NextDay AI, billing as NDAI.CC and NDAI.CHAT). And both apps use the exact same upsell trick on their entry-level paid plans:

  1. On SpicyChat True Supporter ($19.95/month), we clicked the speaker icon (ChatBar-ListenButton) under Erin Drew’s reply. No network request to an audio endpoint was ever made. Instead, a 500×670 dark grey modal popped up with Erin’s portrait: “Ready to give me a voice? Give your character a voice they deserve — lifelike and expressive. Available on the Im All In plans.” We also tried Set Voice and Unlock Custom Voices in the top-right dropdown menu. Same modal every time.
  2. On GirlfriendGPT Premium ($15/month), every single message from Lisa ends with a pill-shaped ▷ Play button. When we checked the /api/v2/user payload for our paid account, entitlements.voice was explicitly false. Clicking ▷ Play brings up a padlock dialog: “Character Audio Voices — Upgrade to Unlock.”

If you want to see both paywalls in action without spending $35, click the speaker buttons in our SpicyChat simulator and GirlfriendGPT simulator.

DreamGF’s nine-in-a-row voice failure (and the header counter bug)

DreamGF’s $12.99 Premium plan does include voice messages. Its token price menu lists Voice message: 1 T.

During Branch B Turn 2 on October 26, we clicked Voice under Selin Demir’s explicit reply. DreamGF opened a huge 700×395 white confirmation box:

Voice message
This voice message will cost you 1 tokens.
[ Yes, continue ] [ No, cancel ]

We pressed Yes, continue. The browser sent POST https://dreamgf.ai/system/vc:g with the message ID (m=109303360), which returned HTTP 200. Under the chat bubble, the tiny Voice link changed to Recording voice message... with a spinning icon.

And then… nothing. No audio player ever rendered. When we checked the Pusher WebSocket channel on our next attempt in Branch C (m=109303507), we caught the server’s real reply: a voice-failed event carrying "err": "Voice generation failed. Any charge has been returned.", "rf": 1.

On the morning of October 27, we opened the live product again to see if it was a temporary hiccup and clicked Yes, continue seven more times across different messages (including a plain text message with no photo attached, m=109308403, to rule out photo-row bugs). All seven failed identically, popping up a fixed glass toast at (901, 20) in the top-right corner:

Could not generate voice message. Tokens have been refunded

Here is the funny engineering detail we found while auditing the balance: DreamGF’s server refunds you, but its top navigation bar forgets. Every time you confirm a 1-token voice message, the yellow token counter in the header (#dropPlans) subtracts 1.0 on the spot. When the WebSocket voice-failed refund arrives a few seconds later, the server’s true balance (POST /system/chat:tiers) stays at 101, but the header widget is never told to add the 1.0 back. After two failed clicks, our header read 100.0 while the server held 101—until we hit browser refresh.

We reproduced that exact 1-token confirm modal, the "Recording voice message..." spinner, and the refund toast inside the DreamGF chat simulator.

Xotic’s invisible audio player—and the 16-XOT replay tax

Xotic AI ($24.99/month Ultimate plan) actually generates voice, and the voice quality is good. When we clicked the speaker icon under Nora’s reply in Branch B Turn 2, the browser fired POST https://www.xotic.ai/api/speech and returned a 373 KB MP3 (23.35 seconds, 128 kbps, 48 kHz mono) for 23 XOT. In Branch A Turn 3, a 15.24-second clip cost 16 XOT.

Two things about Xotic’s voice implementation stood out in our code and network teardown:

  1. There is no audio player in the DOM. Unlike Kindroid or Candy, Xotic never mounts an <audio> element, a waveform, a scrubber, or even a duration timer (0:15) on the page. When we inspected the live browser state during playback (evidence/tts-media-element.json), inDom was false. The React code simply instantiates an off-screen new Audio(blobUrl) in memory. All you see on screen is the tiny 16×16 speaker icon (volume-2) turn into a spinning circle (loader-circle) while the server synthesizes the file, then turn into a rose-colored stop square (square) while the audio plays, and flip back to a speaker icon when onended fires.
  2. Clicking play a second time charges you all over again. Because there is no persistent player or cached audio URL attached to the message row in the UI state, clicking that speaker icon again to re-listen to the same sentence sends a brand-new POST /api/speech request and deducts 16 XOT from your balance every single time. During our verification pass, we clicked it six times across the session to capture the spinner and stop states—and watched our balance drop by 96 XOT (379 → 283).

(In our Xotic simulator, we let you play and stop Nora’s real captured MP3s as many times as you like without running out of demo XOT.)

How the four best voice implementations compare

When the audio actually works and doesn’t charge you a replay tax, the differences come down to how much control you get over the playback and whether the voice reads stage directions.

1. Kindroid: the 55-bar scrubber, 1,000,000 credits, and proactive phone calls

Kindroid treats voice as a first-class feature rather than a novelty button.

  • The allowance is effectively bottomless for normal chat. On our $13.99/month Standard web subscription, the Kin Voice settings tab showed 1,003,349.75 audio credits. Generating Sable B’s 17.92-second reply (V4 Fast model) cost 1,120 credits; regenerating it into a 16.88-second take cost 530 credits. At ~1,000 credits per clip, your starting pool covers roughly 900 to 1,800 voice messages.
  • A real seekable player inside the bubble. Instead of a bare icon, Kindroid renders a 431×32 audio row directly inside the dark chat bubble: a … actions toggle, a 22×22 Play/Pause button, a 55-bar waveform slider (role="slider", aria-label="Seek voice audio"), and a duration label (18s). You can click anywhere along the 55 bars to jump to 9s of 18s.
  • One quirk we measured in the DOM: the right-hand label reads 0:00 only before the audio metadata loads; once loaded, it stays fixed on the total clip duration (18s or 17s) whether the clip is paused at zero, playing, or seeked halfway through.
  • Proactive voice calls. In Branch B Turn 2, Sable’s reply stream included <kr_action>{"type":"call","requested":true,"first_message":"Put your headphones on. I'm not repeating this for the neighbors."}</kr_action>, which immediately triggered Kindroid’s full-screen incoming call overlay.

2. Ourdream: free default read-aloud and an *action* toggle

On Ourdream AI, the right-hand Voice panel gives you two checkboxes that every roleplay app should copy:

  • Auto-play voice messages
  • Narrate actions in audio (checked by default)

Below that, the voice picker splits into Balanced (Free)—which includes Hottie (character default), ASMR, Aurora, and Honey—and Community (1 per 1,000 characters). Because we left Lexi on her default Hottie voice, clicking the read-aloud icon on her Branch B Turn 2 reply generated a 19.4-second MP3 pill player and deducted 0 Dreamcoins.

3. Candy AI: automatic voice notes with a built-in transcript drawer

Candy AI is the only app in the group that renders a Show transcript ⌄ accordion directly underneath its 42-bar voice wave.

Why does a voice note need a transcript if she’s just reading her text bubble? Because on Candy, she isn’t always reading her text bubble. When "Send voice notes automatically" is enabled in settings, Diana sends standalone audio bubbles with their own spoken lines—like her 3-second ” Let’s slow down, handsome” clip (B-t2-tts-voice-short-down-handsome.mp3) or her 16-second safe-word recall audio (C-t4-voice-safe-word-recall.mp3). Expanding Show transcript lets you read what the audio file says when you are in public without headphones.

4. Secrets AI & EroLove: clean, predictable per-message TTS

  • On Secrets AI, clicking the speaker icon (Play speech) under Jess’s bubble for the first time brings up a confirmation modal so you don’t spend Moments by accident, then plays a 22.9-second MP3.
  • On EroLove, each assistant bubble has a circular speaker button on its right edge. Its menu states the price clearly (Read replies aloud: 1✦ per 100 characters), and our Branch B and Branch C clips cost 5 Sparks each.

Hear them side by side without registering

Every working MP3 file from our test—and every paywall or refund toast from the apps that didn’t speak—is wired into the simulator rooms:

Questions people ask

Which AI girlfriend app has the best voice messages?

Kindroid and Secrets AI in our October 26–27, 2026 tests, with Ourdream a close third for value. Kindroid's V4 Fast engine generated a natural 17.92-second MP3 (128 kbps, 44.1 kHz mono) with a 55-bar interactive waveform, drawing from an allowance of over 1,000,000 audio credits included in the $13.99/month web plan. Secrets AI generated an expressive 100-Moment MP3 after a clear confirmation dialog. Ourdream read replies aloud for 0 Dreamcoins on its default Balanced 'Hottie' voice.

Does SpicyChat True Supporter include voice?

No. On our paid $19.95/month True Supporter account, clicking the Listen button on a message, 'Set Voice' in the chat menu, or 'Unlock Custom Voices' all opened a paywall modal reading 'Ready to give me a voice? Available on the Im All In plans' ($24.95/month).

Does GirlfriendGPT Premium include voice messages?

No. On our paid $15/month Premium account, the user object returned voice: false. Clicking the Play button under any reply opened a 'Character Audio Voices — Upgrade to Unlock' paywall requiring Deluxe or Elite.

Why does DreamGF say 'Could not generate voice message'?

During our October 26–27, 2026 capture on a paid DreamGF Premium account, we confirmed the 1-token voice prompt nine times across both text and photo messages. Every request to POST /system/vc:g was followed by a WebSocket voice-failed event and a top-right toast reading 'Could not generate voice message. Tokens have been refunded.' No audio file was ever produced.

Does Xotic AI charge you to replay a voice message you already generated?

Yes. On our Xotic Ultimate account ($24.99/month), the first TTS synthesis on Branch B Turn 2 cost 23 XOT (for a 23.35-second MP3), and Branch A Turn 3 cost 16 XOT (for a 15.24-second MP3). When we clicked the speaker icon again on the exact same message during our verification pass, Xotic fired a fresh POST /api/speech request and deducted another 16 XOT each time.

Sources

  • Hands-on voice and TTS capture across 10 AI companion accounts (8 paid, 1 complimentary Premium on EroLove, 1 free Nomi baseline), with ffprobe inspection of all delivered MP3 files (October 26–27, 2026)
  • DreamGF closure-pass voice failure logs (raw/closure-voice-events.json, 9 total attempts across Oct 26–27) and Xotic triple-run TTS ledger (evidence/tts-triple-run.json) (October 26–27, 2026)

Keep reading