joshua_brunk
back to research

PodcastLM

A self hosted AI podcast engine. Give it a topic and a panel of AI personas with distinct voices and personalities debates it live, grounded in real web research, and the listener can speak back at any time.

TypeCollaborative project
CollaboratorAlexander Gomez de Siqueira
DurationFebruary 2025 to present
Repogithub.com/LunaVoid/podcastlm
podcastlm_demo.mp4
placeholder

Focus

PodcastLM explores how far a fully self hosted AI pipeline can go: local text to speech, local embeddings, local web search, and local vector storage, with a cloud LLM as the only external dependency. The goal was a live, interactive roundtable debate rather than a static generated script, where a listener can interrupt and the panel responds in character.

Responsibilities

I am building this with Alexander Gomez de Siqueira. My focus has been the full retrieval augmented generation pipeline: a self hosted SearXNG instance researches the topic in the background while personas are generated, and results are chunked, embedded, and stored in ChromaDB so each conversation turn retrieves grounded facts instead of letting the model hallucinate. For long uploaded documents I implemented a RAPTOR style summarization tree so the model gets both fine detail and high level context in the same turn. I also evaluated and benchmarked four text to speech backends (Supertonic, Qwen3-TTS, Dia, Orpheus) before selecting Supertonic as the default for its balance of latency and quality on CPU only hardware, since the project's constraint was that no GPU should be required to run it.

Stack

PythonFastAPIChromaDB SearXNGDockerSupertonic TTS Web Speech APIVanilla JS