Turn your .md, .docx, and .txt notes into .mp3 files you can listen to anywhere.
- Paste text directly and convert instantly
- Upload files:
.md,.markdown,.docx,.txt - Smart text extraction: strips markdown syntax, code blocks, URLs — leaves clean readable prose
- 50+ languages powered by Google TTS (gTTS)
- Slow mode for language learners or clearer speech
- Built-in audio player — listen before downloading
- Audio library — all your conversions in one place
- Long document support — automatically chunks and merges large texts
- Download as
.mp3
- Python 3.10+
- Internet connection (Google TTS requires it)
cd voicenotespython3 -m venv venv
source venv/bin/activate # Linux/macOS
# venv\Scripts\activate # Windowspip install -r requirements.txtpython app.pyhttp://localhost:5050
- Click "Paste Text" tab
- Paste or type your notes
- Choose language and output filename
- Click "Generate Audio"
- Listen in the browser or download the
.mp3
- Click "Upload File" tab
- Drop or select your
.md,.docx, or.txtfile - Choose language
- Click "Generate Audio from File"
- A text preview will show what was extracted
- Download your
.mp3
- The Library tab shows all files you've converted in this session
- Play, download, or delete them from there
| Code | Language |
|---|---|
en |
English |
fr |
French |
ar |
Arabic |
es |
Spanish |
de |
German |
it |
Italian |
pt |
Portuguese |
zh-TW |
Chinese (Traditional) |
ja |
Japanese |
ko |
Korean |
ru |
Russian |
Full list loads automatically from Google TTS in the app.
voicenotes/
├── app.py # Flask backend — routing, TTS, text extraction
├── requirements.txt # Python dependencies
├── README.md
├── templates/
│ └── index.html # Single-page UI
├── uploads/ # Temp folder for uploaded files (auto-cleaned)
└── output/ # Generated MP3 files (stored in memory for session)
- Audio files are kept in memory for the duration of the server session.
When you stop the server, the files are still on disk in
output/until you delete them. - Max text: 50,000 characters per conversion
- Max file upload: 20 MB
- Requires internet (Google TTS calls Google's servers)
"Connection refused" on first launch
→ Make sure you're running python app.py, not flask run
Arabic / RTL language sounds off
→ gTTS supports Arabic (ar) — works well for MSA. Moroccan Darija is not supported.
Large .docx files take a while → Normal — text is split into chunks and merged. Progress bar shows status.
Port already in use
→ Change the port at the bottom of app.py: app.run(port=5051)