Speak your ideas. Get a polished blog post β entirely on your iPhone.
Record a voice note, walk away with a formatted blog post, meeting notes, or personal notes β plus ready-to-post LinkedIn and Instagram captions. No cloud. No API keys. No per-run cost. Your words never leave your device.
Most voice-to-text tools send your audio to the cloud. Most AI writing tools charge per token and store your prompts on someone else's servers.
Voice Blogger takes a different approach: two small AI models download once to your iPhone, then everything runs locally β transcription, rewriting, and social caption generation. Talk freely about sensitive topics, work offline after setup, and never worry about a monthly API bill.
| Cloud tools | Voice Blogger | |
|---|---|---|
| Privacy | Audio & text sent to servers | Stays on your device |
| Cost | Subscriptions or per-token fees | Free after download |
| Offline | Requires internet | Works offline after setup |
| Account | Usually required | None |
flowchart LR
A["ποΈ Record or import audio"] --> B["Whisper on-device<br/>transcription"]
B --> C["Qwen 2.5 on-device<br/>polish & structure"]
C --> D["Blog post Β· Meeting notes Β· Notes"]
D --> E["LinkedIn & Instagram captions"]
E --> F["Share or export"]
- Record β Tap the mic (or import an existing audio file). Live waveform, background recording, and Siri shortcuts supported.
- Transcribe β WhisperKit runs OpenAI Whisper Medium entirely on the Neural Engine. Supports 90+ languages.
- Generate β Qwen 2.5 1.5B (4-bit, via MLX) turns your rambling into structured writing. Watch it stream in real time.
- Publish β Copy or share your blog post, meeting notes, or social captions.
- Creators & founders who think out loud and want a first draft without staring at a blank page
- Meeting participants who want clean notes from a debrief recording
- Multilingual speakers who record in Hindi, Spanish, French, or dozens of other languages and want English output (or keep the original language)
- Privacy-conscious writers who don't want their drafts on someone else's GPU
- One-tap recording with a live waveform visualizer
- Background recording β keep talking while you switch apps
- Import existing audio files (
.m4a,.mp3,.wav, and more) - On-device transcription via Whisper Medium β no upload step
- 90+ languages; optional translate-to-English mode
- Siri Shortcuts: "Start recording in Voice Blogger"
- Live Activities & Dynamic Island progress during recording and model downloads
- Control Center widgets for quick start/stop
- Blog posts, meeting notes, or personal notes β the app adapts structure to your content
- Optional beta: automatic content-type detection (Settings β Beta)
- Streaming generation β watch the text appear word by word
- Long recordings handled via chunked map-reduce (up to ~16k characters of transcript)
- LinkedIn post generation with platform-appropriate tone
- Instagram captions with hashtags (multiple variants)
- Full-text search across your history
- No account, no analytics, no telemetry
- All recordings and generated content stored locally (SwiftData)
- Works fully offline after the one-time model download
- Open source β audit the code yourself
Requirements: iPhone running iOS 18+ with ~2 GB free storage for on-device models.
- Download Voice Blogger from the App Store
- On first launch, tap Download Models β grab a coffee; this takes a few minutes on Wi-Fi (~1.5 GB total)
- Tap the microphone and start talking β or import an audio file from the toolbar
- Stop recording β transcription begins automatically
- Tap Generate and watch your post write itself
- Switch to the LinkedIn or Instagram tab to generate social captions, then share
No signup. No API key. No cloud.
Voice Blogger is built on Apple's on-device ML ecosystem:
| Layer | Technology |
|---|---|
| iOS app | SwiftUI, SwiftData, App Intents |
| Speech-to-text | WhisperKit Β· openai/whisper-medium |
| Text generation | MLX Swift + mlx-swift-lm Β· mlx-community/Qwen2.5-1.5B-Instruct-4bit |
| Model hosting | Hugging Face Hub (download only; inference is local) |
| CLI (Mac) | mlx-whisper + Ollama |
Models run on the Apple Neural Engine and GPU via Metal β fast, efficient, and private.
A Python command-line companion lives in cliTools/ for batch-processing audio files on M1/M2/M3/M4 Macs. It uses mlx-whisper for transcription and Ollama for blog polishing.
Note: MLX requires Apple Silicon. The CLI does not run on Intel Macs, Linux, or Windows.
cd cliTools
# Create a virtual environment (recommended)
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Install Ollama and pull a model
brew install ollama # or download from https://ollama.com
ollama pull gemma4:e4b # default; any capable model workspython Transcribe_and_blog.py <audio_file> [options]| Flag | Default | Description |
|---|---|---|
--language |
hi |
Source language (ISO 639-1: en, hi, es, fr, β¦) |
--task |
translate |
translate β English output Β· transcribe β keeps source language |
--model |
gemma4:e4b |
Ollama model name (ollama list to see installed models) |
--no-instagram |
off | Skip Instagram caption generation |
# Hindi audio β English blog + Instagram captions (defaults)
python Transcribe_and_blog.py ~/recordings/idea.m4a
# English podcast, keep original language, skip Instagram
python Transcribe_and_blog.py podcast.m4a --language en --task transcribe --no-instagram
# Spanish interview β English blog with a different model
python Transcribe_and_blog.py entrevista.mp3 --language es --task translate --model qwen2.5:14bGiven my_recording.m4a, three files are written under cliTools/:
| File | Contents |
|---|---|
Raw_Data/my_recording_raw.txt |
Raw Whisper transcript |
blog/my_recording_blog.md |
Polished blog post (Markdown) |
insta/my_recording_instagram.md |
Instagram captions with hashtags |
voiceblogger/
βββ iOS App/VoiceBlogger/ # Native SwiftUI iOS app (main product)
β βββ VoiceBlogger/
β β βββ Models/ # SwiftData models & migrations
β β βββ Services/ # Audio, transcription, LLM, model downloads
β β βββ Views/ # SwiftUI screens
β β βββ Utilities/ # Prompts, content detection, markdown
β β βββ AppIntents/ # Siri Shortcuts
β βββ VoiceBloggerLiveActivities/ # Dynamic Island & Lock Screen widgets
βββ cliTools/
β βββ Transcribe_and_blog.py # Python CLI for Mac
β βββ requirements.txt
β βββ Raw_Data/ # CLI transcript output
β βββ blog/ # CLI blog output
β βββ insta/ # CLI Instagram output
βββ CONTRIBUTING.md
βββ PrivacyPolicy.md
βββ LICENSE
Want to hack on the app or run it on your own device?
- Clone the repo:
git clone https://github.com/kavin0x/VoiceBlogger.git cd VoiceBlogger - Open
iOS App/VoiceBlogger/VoiceBlogger.xcodeprojin Xcode 16+ - Select your development team for code signing
- Build and run on a physical iPhone (iOS 18+) β the simulator lacks Neural Engine support for full model inference
- On first launch, download the bundled models from the in-app onboarding flow
See CONTRIBUTING.md for branch naming, commit style, and PR guidelines.
Does my audio leave my phone? No. After the one-time model download from Hugging Face, all transcription and generation runs locally. See PrivacyPolicy.md.
How much storage do the models need? Roughly 1.5β2 GB total (Whisper Medium + Qwen 2.5 1.5B 4-bit).
Can I use it on iPad? The App Store listing is iPhone-focused; iPad compatibility depends on the current App Store build.
What languages are supported?
Whisper supports 90+ languages for transcription. Blog generation output is primarily English, though you can transcribe in the original language with --task transcribe (CLI) or the in-app transcription mode.
Why is generation slow on older iPhones? On-device LLM inference is CPU/GPU-bound. Newer chips with more Neural Engine throughput produce faster results. Long transcripts are automatically chunked.
Is the CLI required? No. The iOS app is the main product. The CLI is a convenience for Mac users who want to batch-process existing audio files.
Voice Blogger is designed from the ground up for privacy:
- No account required β ever
- No internet required after first-time model download
- No analytics or telemetry collected
- All audio and text stays on your device
- Microphone is the only permission requested
Full details: PrivacyPolicy.md
Contributions are welcome β bug reports, feature ideas, docs improvements, and code.
- Read CONTRIBUTING.md
- Fork the repo and branch from
main(feat/β¦orfix/β¦) - Open a pull request with a clear description and test steps
Apache License 2.0 β free to use, modify, and distribute.