GitHub 火线榜

GitHub 火线榜 · 仓库档案

ttlequals0/Audicle

Your reading list, as a podcast you own (简介来自仓库自身文档。)

数据截至 10月26日ttlequals0

最好成绩

#266

被忽视榜 · 活跃却无人问津

当前上榜 · 被忽视 #266

100

累计 Star

2

Fork 总数

1

近 30 天在榜天数

许可证: NOASSERTION最近 push: 10月26日Open Issues(含 PR): 14自 2026-10-25 起采集;未知 = 尚未采集到

当前上榜

  • 266

    被忽视榜 · 活跃却无人问津

    100 星 · 2 fork · 累计 Star(升序)

    被忽视 →

近 30 天势头

累计 Star 走势

名次走势

自 2026-10-25 起采集;未知 = 尚未采集到

项目文档

Audicle

Audicle

Self-hosted Podcasting 2.0 service that turns saved articles into a personal podcast feed.

Paste a URL or upload a document (PDF including scanned, DOCX, Markdown, text, HTML, or an image), wait a few minutes, and get an episode with cloned-voice narration, chapters, artwork, an LLM-written episode summary, and a WebVTT transcript. Subscribe in Pocket Casts, Overcast, or Apple Podcasts like any other show.

Your reading list, as a podcast you own.

Contents

Why

I read too much, I like my hands free on the go, and the existing article-to-audio tools either lock the audio in their app, charge per minute, or use voices that sound like an airport PA. I wanted something that:

  • I control fully
  • produces a real podcast feed any podcatcher can subscribe to
  • uses my own voice (or any voice I have rights to)
  • keeps my reading list private

That's what this is. No GPU? It runs on CPU too (including Apple Silicon), just slower.

Screenshots

Home: paste a URL or drop files (up to 20 at once), and they join the feed.

Home, desktop Home, mobile

Feed: search and page through your episodes, with inline players, transcripts, and per-episode actions.

Feed, desktop Feed, mobile

Settings: browse one category at a time, or search across all settings.

Settings, desktop Settings, mobile

Sample

A short clip of cloned-voice narration.

trim.B6BE34AB-D812-4973-8866-AC36AE24443C.MOV

Download the MP4

Quickstart

You need Docker and docker-compose. The app boots unconfigured: set the LLM provider, feed metadata, and admin password, and upload a reference voice, from the Settings UI after it starts.

git clone https://github.com/ttlequals0/Audicle && cd Audicle
cp .env.example .env
# Set BUILD_VERSION in .env to the release tag you want to run.
docker compose up -d

The web UI is at http://localhost:8000/, and it installs as a PWA on a phone home screen. The Feed page shows the exact RSS URL to paste into a podcatcher.

Full setup, including CPU-only deployment and file permissions, is in Installation.

Documentation

The full index is docs/README.md. The short version:

Topic Covers
How it works Pipeline from URL to episode, extraction cascade, quality gates
Installation Requirements, quick start, CPU-only and Apple Silicon
Web interface Home, Feed, and Settings pages
UI design guide Colors, fonts, controls and UI review checks
Configuration Every settings category, what saves where
Environment variables Every variable, runtime-editable ones flagged
Voices and TTS Voice cloning, running Chatterbox or Whisper on other hosts
Paywalled articles What happens when a site serves a teaser instead of the article
Feeds and Podcasting 2.0 RSS feed, authenticated feeds, chapters, artwork, retention
API and webhooks REST surface and episode webhooks
Glossary Every term the app uses
Releasing Versioning, build, CVE gate, ship
Deployment runbook Health checks, logs, rollback, disk

What's in the repo

backend/        FastAPI app, SQLite, the job pipeline
tts-wrapper/    TTS model server (Chatterbox; separate GPU container)
render/         full-article render sidecar and its restricted egress proxy
frontend/       React + Tailwind operator UI
docs/           documentation and screenshots
data/           runtime artifacts (gitignored: SQLite, MP3, JPG, VTT)
docker-compose.yml

Development

Backend:

uv sync
uv run pytest                              # 1000+ tests, a few minutes
uv run uvicorn app.main:create_app --factory --reload --app-dir backend

Frontend:

cd frontend
npm ci
npm run dev

Run npm test and npm run build from frontend/ before submitting UI changes. The build fails on stale design tokens: edit branding/tokens.json, then run node scripts/sync_design_tokens.mjs from the repository root to regenerate the CSS.

Follow the UI design guide and include before and after screenshots for UI changes.

The tts-wrapper/ and render/ packages have their own test suites (uv run pytest in each). Lint with uv run ruff check from the root; one run covers everything. The OpenAPI schema lives at openapi.yaml; regenerate it with uv run python scripts/dump_openapi.py.

CodeQL runs on every PR through GitHub's default-setup code scanning (there is no in-repo workflow file for it).

Licensing notes

The application code is MIT. A few things downstream of it have their own terms:

  • Chatterbox is the TTS engine. The chatterbox-tts library and its model weights are MIT, so there's no non-commercial restriction on the model itself. Every output carries Resemble's inaudible PerTh watermark for provenance, with no flag to turn it off.
  • Wrapper runtime: the wrapper runs Python 3.11 from python:3.11-slim. Its GPU image uses the CUDA 12.6 torch wheels and requires a host driver that exposes CUDA 12.6 or newer. The backend is separate: Python >=3.13, shipped on python:3.14-slim.

The Audicle name and logo are reserved; see branding/README.md.

LLM disclosure

This project was developed with AI agents as a pair programmer. It was NOT vibe coded. I'm a systems engineer with 15+ years of professional experience; every architecture and design decision here is mine, not the AI's, and every line the LLMs wrote, I reviewed and tested myself.

Credits

The paywall bypass strategies are inspired by Ladder; see Paywalled articles.

把上榜徽章放进你的 README · ttlequals0/Audicle[![把上榜徽章放进你的 README](https://git.vaiox.xyz/api/badge/ttlequals0/Audicle.svg)](https://git.vaiox.xyz/zh/repo/ttlequals0/Audicle)

Badge · 任何仓库都可以挂 —— 未上榜的仓库显示灰章,上完榜会自动点亮。

<a href="https://git.vaiox.xyz/zh/repo/ttlequals0/Audicle"><img src="https://git.vaiox.xyz/api/badge/ttlequals0/Audicle.svg" alt="把上榜徽章放进你的 README" height="20"></a>

← 回到榜单

GitHub 火线榜往日榜发现联系我们 · Contact