AI-powered audio broadcast generator with voice cloning.
- Create custom voices from short reference audio clips.
- Generate spoken broadcasts from a topic plus optional creative "twist".
- Configure target script length from the admin panel.
- Optionally generate TTS in paragraph-aligned chunks and stitch with silence.
- Auto-generate and store teaser summaries per broadcast.
- Public listing page with inline audio playback and script view.
- FastAPI + Jinja2 templates
- MongoDB
- Google Gemini (script + summary generation)
- Replicate qwen3-tts (voice cloning + speech synthesis)
- Docker Compose for local/prod-style deployment
Create a local .env file (or export vars in your shell):
RADIONOW_GEMINI_API_KEY=your_gemini_api_key
RADIONOW_REPLICATE_API_TOKEN=your_replicate_api_token
RADIONOW_PORT=8090
# Optional: if set, radionow uses this external/shared MongoDB and does NOT
# start the local mongodb service.
# RADIONOW_MONGO_URL=mongodb://user:pass@host:27017/
# Optional local Mongo credentials (used when RADIONOW_MONGO_URL is unset):
# RADIONOW_MONGO_INITDB_ROOT_USERNAME=admin
# RADIONOW_MONGO_INITDB_ROOT_PASSWORD=admin
# Optional docker network override (defaults to breathnet):
# DOCKER_NETWORK_NAME=breathnetmake runBehavior:
- If
RADIONOW_MONGO_URLis unset,make runstarts a local MongoDB container (localdbprofile). - If
RADIONOW_MONGO_URLis set,make runstarts only the app and uses that external MongoDB URL.
- Public page:
http://localhost:8090/ - Admin panel:
http://localhost:8090/admin
These match the repository Makefile:
make build- Build the Docker imagemake init- Ensureaudio/andvoices/directories existmake run- Start servicesmake logs- Show application logsmake shell- Open a shell in the app containermake stop- Stop servicesmake help- Show command help
radionow/
├── app/
│ ├── main.py
│ ├── generator.py
│ ├── models.py
│ ├── database.py
│ ├── templates/
│ └── static/
├── audio/ # Generated broadcast audio (volume)
├── voices/ # Uploaded voice reference audio (volume)
├── docker-compose.yml
├── Dockerfile
├── Makefile
└── requirements.txt
- This repo intentionally does not contain runtime secrets.
.envfiles are gitignored.- If deploying publicly, place
/adminbehind authentication and HTTPS. - The stack uses an external Docker network (
breathnetby default).make init/make runcreates it automatically when missing.
