Transform articles into natural podcast episodes using local TTS models
Project description
Local AI Podcast Studio
Transform articles, papers, and notes into natural-sounding podcast episodes—locally, privately, and without limits.
What is this?
Local AI Podcast Studio converts written content into engaging multi-voice podcast episodes using local text-to-speech models. Drag and drop a URL, PDF, or Markdown file, and get back a finished podcast with realistic dialogue, ad-libbed transitions, and chapter markers—all processed on your machine with zero cloud dependencies or subscription fees.
Features
- Local-first processing – No cloud APIs, no data upload, no usage limits
- Multi-voice conversations – Automatic dialogue generation with distinct speaker personalities
- Content extraction – Direct URL support plus PDF and Markdown file parsing
- Realistic audio – Distilled TTS models deliver natural-sounding speech with contextual pausing
- Smart structuring – Chapter markers, transitions, and pacing optimized for listening
- Privacy by design – All inference runs on your hardware
- One-time purchase – $29 perpetual license, no subscriptions
Quick Start
Installation
Clone the repository and install dependencies:
git clone https://github.com/yourusername/local-ai-podcast-studio.git
cd local-ai-podcast-studio
pip install -e .
Usage
Via CLI:
podcast-studio --input article.pdf --output podcast.mp3
podcast-studio --url https://example.com/article --voice clara,james
Via API:
from podcast_studio import PodcastStudio
studio = PodcastStudio()
podcast = studio.create(
source="https://example.com/article",
voices=["clara", "james"],
output_path="podcast.mp3"
)
Via Desktop App:
- Launch the application
- Drag and drop a URL, PDF, or Markdown file
- Select voices and customize settings
- Click "Generate Podcast"
- Download your MP3
Tech Stack
- Language: Python 3.10+
- TTS Engine: Local distilled models (Needle 26M or similar)
- Content Extraction: BeautifulSoup, PyPDF2, Markdown parser
- API Framework: FastAPI
- Desktop UI: PyQt6 (or Electron for cross-platform)
- Audio Processing: librosa, pydub
- Testing: pytest, unittest
- CI/CD: GitHub Actions
Architecture
podcast_studio/
├── extractor.py # URL/PDF/Markdown parsing
├── scripter.py # Dialogue generation & structuring
├── synthesizer.py # TTS and audio composition
├── api.py # REST API endpoints
├── cli.py # Command-line interface
├── main.py # Desktop application
└── config.py # Configuration management
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file local_ai_podcast_studio-0.1.0.tar.gz.
File metadata
- Download URL: local_ai_podcast_studio-0.1.0.tar.gz
- Upload date:
- Size: 13.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
810ef00e7ae1848210e02724d21da23cacb7c0d3a505080050e2a8c93972c25a
|
|
| MD5 |
8efbcaa4792707a9a200aa523d01107a
|
|
| BLAKE2b-256 |
e38ad4816adac1e619a42da52b289659579c4414fe68aae948adcf2da87a3211
|
File details
Details for the file local_ai_podcast_studio-0.1.0-py3-none-any.whl.
File metadata
- Download URL: local_ai_podcast_studio-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5125a2780501864b5cecc92112828e9239b633069f0f57add869d5503a77cbd6
|
|
| MD5 |
6a5167e1bac1a200256ab0e22642f0dd
|
|
| BLAKE2b-256 |
0b0f2d6718fc51cec000e1cc305de97deaa0762b5ec393e2232603104b4bd0bd
|