Skip to main content

An agentic Python package that converts ideas and documents into audio – PDF papers, reports, and regulations turned into podcast-style audio files.

Project description

audia — turn your ideas into audio

Python 3.10+ License: MIT PyPI version PyPI Downloads Tests Coverage GitHub last commit

audia is an agentic Python package that converts PDFs — academic papers, reports, regulations — into podcast-style audio files. It uses an LLM to rewrite content into natural spoken language (math in plain English, tables as sentences, no citations) before passing it to a TTS engine, so the result actually sounds good when read aloud.

The audia CLI

Features

  • LLM-curated text — mandatory LLM pass rewrites math notation, condenses tables and acknowledgements, removes citation artefacts, and ensures smooth spoken flow
  • Chunk-level stitching — long documents are split at paragraph boundaries; each chunk receives the tail of the previous curated output as transition context
  • ArXiv research — search papers by query and convert them to audio in one command
  • Voice input (STT) — record a spoken query to trigger an ArXiv search
  • Multiple TTS backendsedge-tts (default, free), kokoro (local), or OpenAI TTS
  • Multiple LLM backends — OpenAI (gpt-4o-mini default) or Anthropic
  • CLIaudia convert, research, listen, serve, info
  • Web UI — FastAPI backend + SPA frontend
  • Local storage — SQLite database for papers and audio files via SQLAlchemy
  • Debug output — every run saves raw, preprocessed, and curated text to ~/.audia/debug/<run_id>/

Tech Stack

Backend

  • Python 3.10+ — package language
  • FastAPI — backend for the web UI
  • LangGraph — agentic pipeline orchestration (PDF → preprocess → LLM curate → TTS)
  • LangChain — LLM abstraction
    • Current support for LLMs from Anthropic, Google, and OpenAI
  • edge-tts — default TTS backend, no API key required
  • faster-whisper — STT for voice input
  • PyMuPDF — PDF text extraction
  • SQLite — local database for papers and audio files

Frontend

  • React — interactive frontend
  • Vite — fast dev server and production bundler
  • Tailwind CSS — utility-first styling
  • TypeScript — type-safe component and API code

CLI

  • Typer + Rich — CLI with coloured progress output

Packaging

  • PyPI — distributed as an installable Python package

Installation

pip install audia

For CLI usage, pipx is recommended — it installs audia in an isolated environment while exposing the command globally:

pipx install audia

Optional extras:

Extra Installs
kokoro local Kokoro TTS
pip install "audia[kokoro]"

Configuration

Copy .env.example to .env in your working directory and set your API key:

cp .env.example .env

Minimum required settings:

AUDIA_LLM_PROVIDER=openai           # or anthropic
AUDIA_OPENAI_API_KEY=sk-...

All settings use the AUDIA_ prefix. Run audia info to see the active configuration.

Quick Start

Show active configuration:

audia info

Convert a local PDF:

audia convert paper.pdf

Convert multiple PDFs to a specific output folder:

audia convert paper1.pdf paper2.pdf --output ~/audiobooks

Search ArXiv and convert the top results:

audia research "retrieval augmented generation" --max-results 3 --convert

Start the web UI:

audia serve
# → http://localhost:8000

The audia UI

Pipeline

The pipeline can be entered in three ways:

Entry point Command
Voice input audia listen — record speech, LLM distils a search query, confirm, then runs the full pipeline
Text query audia research "retrieval augmented generation" — search ArXiv by text, select papers, run pipeline
Local PDF audia convert paper.pdf — skip Steps 0, go straight to extraction

When starting from voice or text, the full five-step LangGraph pipeline runs. For local PDFs, Steps 1–4 run directly:

 [voice input]          [text query]
      │                      │
      ▼                      │
  Microphone                 │
  (faster-whisper STT)       │
      │                      │
      ▼                      │
  LLM query distillation     │        ← extracts concise ArXiv search terms
      │                      │           from natural speech
      ▼                      │
  Confirm / re-record?       │
      │  yes                 │
      ▼                      ▼
Step 0 — ArXiv search    (or use local PDF)
 │        arxiv API: fetch metadata, download PDF
 │
 ▼
Step 1 — PDF extraction       PyMuPDF: text + metadata per page
 │
 ▼
Step 2 — Heuristic pre-pass   Regex: strip citations, LaTeX commands, figure captions
 │
 ▼
Step 3 — LLM curation         Chunked LLM pass: math → English, tables → sentences,
 │                             smooth spoken transitions between chunks
 ▼
Step 4 — TTS synthesis        edge-tts (or kokoro / OpenAI): split into ~3800-char
                               chunks, synthesise, concatenate → .mp3

Output files for a run on 2025_Xu+.pdf:

~/.audia/audio/2025_Xu+_20260329_084445.mp3
~/.audia/debug/2025_Xu+_20260329_084445/
    1_raw.txt            ← PyMuPDF output
    2_preprocessed.txt   ← after heuristic pass
    3_curated.txt        ← after LLM curation

Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/my-change)
  3. Make your changes
  4. Run the test suite: pytest --cov=src --cov-report=term-missing
  5. Submit a pull request

License

MIT — see LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

audia-0.4.4.tar.gz (156.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

audia-0.4.4-py3-none-any.whl (141.2 kB view details)

Uploaded Python 3

File details

Details for the file audia-0.4.4.tar.gz.

File metadata

  • Download URL: audia-0.4.4.tar.gz
  • Upload date:
  • Size: 156.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for audia-0.4.4.tar.gz
Algorithm Hash digest
SHA256 ad047d3828a89ed245c384e83b0eeb41d52470c3eb2bd803b1b3620e2e966a9c
MD5 3b97b6c3be96366a9cd7490fe442c435
BLAKE2b-256 5f6e7ae789a5366e0fae2871ce9afbfc35583258d4bda6d644a67f8c5ba46e1a

See more details on using hashes here.

File details

Details for the file audia-0.4.4-py3-none-any.whl.

File metadata

  • Download URL: audia-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 141.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for audia-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 368dd892c0faff3b5122e5c41dd086c287083d95b99572a6cb1a22727fbfa090
MD5 71c71b3a965a69cdb6e154fc38814edd
BLAKE2b-256 ffd2b29515e8bf5c41d44fe27f39249aaaa390c7c833b713addb720fd2208453

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page