Three single-file web tools that do speech AI entirely in the browser. No server, no upload, no API key, no account. Open the HTML file and it works — your audio never leaves the tab.
| Tool | What it does |
|---|---|
index.html |
Convert Audio to Text — drop an MP3, get a transcript. Tuned for German. |
text-to-speech.html |
Text to Speech — natural English voices from typed text. |
podcast.html |
Podcast Maker — write a two-voice dialogue, get a played-out conversation. |
A personal case study, published for review rather than reuse. Three HTML files, each self-contained, testing one premise: how much AI can you ship with no backend at all?
No models are committed here — the browser fetches and caches them at runtime.
├── index.html transcription — Whisper via Transformers.js
├── text-to-speech.html synthesis — Kokoro via kokoro-js
└── podcast.html two-voice dialogue built on the same pipeline
Model choice is a UI control, not a config value. Running in the browser means the user pays for the model as a first-run download, and there's no honest way to hide that. So tiny / base / small sit in the interface, and the person choosing gets to make the trade themselves. That's the whole design lesson of the project: when a cost lands on the user, put the decision there too.
The privacy story is the reason to build it. For a class recording or a personal voice note, "it never leaves your device" isn't a feature bullet — it's the only reason to use this instead of a hosted service. That constraint drove every other choice, including the no-backend premise itself.
WebGPU where available, WASM where not. The same page has to work on a two-year-old laptop, so the pipeline degrades rather than refusing.
Open the file. Or serve the folder, if your browser is strict about cross-origin model loading:
python3 -m http.server 8000Transformers.js · Whisper · Kokoro via
kokoro-js · Tailwind from CDN. No build step, no dependencies to install, three files.
All rights reserved. Published for review, not for reuse — see LICENSE.
The models and libraries are third-party: see NOTICE.md.