A free text-to-speech tool I built for myself, now opened up for everyone. You bring your own Google API key — it stays in your browser and goes straight to Google. I never see it, store it, or log a single thing you do here.
Your API keys are saved only in your browser's localStorage. When you click Generate, your browser talks directly to Google's servers — the request never passes through this website. No accounts, no logs, no analytics on your scripts, no server-side history. You can wipe everything with one click below.
You need two separate API keys from Google — one for Cloud TTS (the classic one with a generous free tier) and another for Gemini Flash TTS (the new expressive one). Both come from the same Google account, but live in two different APIs. The wizard below walks you through both, top to bottom.
Open console.cloud.google.com and sign in with any Gmail account. If you've never been here, Google may ask you to accept the Terms of Service — that's normal, just click Accept.
Top-left, click the project dropdown (it says "Select a project" or shows an existing project name) → New Project → name it anything like my-voiceover → Create. Wait ~15 seconds for it to provision.
Go to this direct link (make sure your new project is selected at the top) → click the big blue ENABLE button. Wait until it says "API Enabled".
Go to Credentials → click + CREATE CREDENTIALS → API key. A box pops up with a key starting with AIzaSy… — copy it.
Scroll up to the ☁️ Google Cloud TTS Key field, paste the key, click 💾 Save keys to this browser. You're done with Cloud TTS — you can now use the Cloud engine in the tool below for free up to 4 million characters/month (Standard voices) or 1M chars/month for the better Neural2/WaveNet/Studio voices.
Gemini's TTS lives under the Generative Language API, not Cloud TTS. So you need a separate key. Easiest path: aistudio.google.com/app/apikey
Pick the same project you made above (my-voiceover) so everything stays in one place → it generates a new AIzaSy… key. Copy it.
This is the part Hussain calls "the preload step." Gemini Flash TTS will refuse to work until your project has a billing account attached, even if you just want to test.
Go to console.cloud.google.com/billing → Link a billing account to your project → add a credit/debit card. Google charges nothing upfront — they only bill you for what you actually use.
In Billing → Budgets & alerts → Create budget → set $5/month or whatever you're comfortable with. Google emails you at 50%, 90%, and 100%. Sleep peacefully.
Scroll up to ✨ Gemini API Key, paste, save. Now you can use the ✨ Gemini engine with all 30 cinematic voices and audio tags like [whispering], [excited], [laughing].
An unrestricted Google API key is like an unlocked credit card. If someone scrapes your browser history or you accidentally paste it into a Discord — they can rack up your bill. Always restrict.
Open Credentials → click your key → under Application restrictions pick HTTP referrers (websites) → add these two lines:
https://abdullahtofa.com/*https://yourdomain.com/* (if you self-host)
Same page → API restrictions → Restrict key → for the Cloud TTS key, only check "Cloud Text-to-Speech API". For the Gemini key, only check "Generative Language API". Save.
They live in your browser's localStorage, accessible only to this exact website. They never go through my server. When you click Generate, your browser sends the request straight to Google with your key attached. The PHP file that used to hold these keys server-side has been deleted — this is now a pure client-side tool.
voiceoverKeys.Don't save your keys here. Just paste them each time you use the tool, and click 🗑 Wipe before you leave. Or use Incognito/Private mode — localStorage clears automatically when you close the window.
→ Right-click the player → "Save audio as…" to download.
* Audio tokens ≈ 25 tokens per second of audio. 1M chars ≈ 22+ hours of voiceover.
* All pricing is paid directly to Google — I don't take a cent. Verify current prices at cloud.google.com/text-to-speech/pricing and ai.google.dev/pricing.