Skip to content

Releases: atharva-again/AudioRAG

v0.15.0 - Local-Only Audio Processing

15 Feb 10:11
7268f14

Choose a tag to compare

Breaking

  • Removed YouTube/URL support: AudioRAG now processes only local audio files. Removed all YouTube, yt-dlp, and HTTP URL source providers.
    • Removed YouTubeSource, URLSource, AudioSourceRouter
    • Removed youtube optional dependency group
    • Removed ydl_utils.py and yt-dlp integration
    • Removed source_path in favor of local paths only
    • discover_sources() now only expands directories to audio files
  • Config changes: Removed YouTube-related config options (youtube_format, youtube_cookies_from_browser, youtube_cookie_file, etc.)

Changed

  • Simplified CLI: Index command now only accepts local file/directory paths
  • README and docs updated: Reflects local-only operation

Fixed

  • file:// URL handling: Fixed local file processing to properly handle file:// URLs in both LocalSource.download() and discover_sources()
  • Copilot review fixes: Various docstring and help text updates

v0.14.1 - Narrow YouTube Format Exclusion

15 Feb 07:05
v0.14.1
f7d8079

Choose a tag to compare

Fixed

  • Copilot review follow-up: Narrowed Issue #43 fix to only exclude the format key during metadata-only extraction, rather than all ydl_opts. This preserves auth/session options (cookies, po_token, visitor_data, extractor_args) needed for age-restricted/private content discovery.

v0.14.0 - YouTube Discovery Fixes

15 Feb 06:20
v0.14.0
21033a3

Choose a tag to compare

Fixed

  • Issue #43: youtube_format applied during playlist discovery: Skip yt-dlp options during metadata-only extraction to prevent format errors when discovering playlists with youtube_format config set.
  • Issue #41: Redundant YouTube discovery calls: Cache metadata during discovery and pass to pipeline to avoid redundant yt-dlp network calls when indexing each video in a playlist.

Breaking

  • discover_sources() returns rich objects: Now returns list[DiscoveredSource] with url and metadata fields instead of plain strings. This enables metadata caching.
  • Added discover_source_urls() convenience function for backward compatibility when only URLs are needed.

v0.13.0 - YouTube Audio-Only Downloads

14 Feb 18:50
v0.13.0
ef7d12b

Choose a tag to compare

Added

  • youtube_format config option: New youtube_format config to enable audio-only YouTube downloads.
    • Set AUDIORAG_YOUTUBE_FORMAT=bestaudio to download audio-only (saves ~95% bandwidth).
    • Works with yt-dlp format selection: bestaudio, bestaudio/best, worstaudio.
    • Compatible with existing -x --audio-format mp3 post-processing.

v0.12.0 - Budget Store, Doctor CLI, .env Discovery, Index Status

14 Feb 16:17
19163ed

Choose a tag to compare

Added

  • Persistent BudgetStore: New BudgetStore protocol enables pluggable budget state management backends.
    • Added SqliteBudgetStore for persistent budget tracking across process restarts.
    • Added atomic_reserve() for atomic check-and-record in a single transaction.
  • Budget sipping: New budget adjustment feature that reconciles estimated vs actual audio duration after download.
    • Prevents budget waste by reserving based on estimated duration, then "sipping" (releasing) excess after actual duration is known.
  • audiorag doctor CLI: New audiorag doctor subcommand for diagnosing pipeline issues.
    • Verifies all required dependencies are installed.
    • Checks provider configurations.
    • Provides actionable troubleshooting advice.
  • .env auto-discovery: Configuration now automatically discovers .env files by walking up from the current directory.
    • Supports nested project structures.
    • Falls back to default locations if not found.
  • get_index_status API: New pipeline.get_index_status(source_url) method to check if a source is indexed without triggering re-indexing.
    • Returns indexing status: not_indexed, indexed, or failed.
    • Useful for checking pipeline state before queries.

Changed

  • BudgetGovernor refactor: Split into separate modules for better maintainability.
    • budget.py - In-memory budget tracking
    • budget_store_sqlite.py - SQLite-backed persistent storage
    • protocols/budget_store.py - Protocol definition for custom stores

v0.11.0 - YouTube Improvements

14 Feb 09:05
v0.11.0
ef09b83

Choose a tag to compare

Added

  • YouTube cookies-from-browser: New config option youtube_cookies_from_browser to extract cookies directly from browser (e.g., chrome, firefox:default, chrome+gnomekeyring:Profile1).
  • Cookie file support: Wired up existing youtube_cookie_file config option (was dead code).
  • CI improvements: CI now installs all optional dependencies for better test coverage.

Changed

  • Consolidated ydl_opts: Created shared audiorag.source.ydl_utils module to consolidate yt-dlp option building (was duplicated in pipeline.py and discovery.py).

Fixed

  • Type safety: Resolved pre-existing type errors in weaviate.py, assemblyai.py, groq.py, and cohere.py exposed by full dependency installation.

v0.10.0 - Transcription Resumability

14 Feb 07:50
v0.10.0
2f6b6c5

Choose a tag to compare

Added

  • Transcription resumability: Pipeline now tracks per-part transcription in SQLite, enabling resumption after partial failures without re-transcribing completed parts.
  • Transcripts table: New database table stores transcription segments per audio part.
  • StateManager methods: Added store_transcript(), get_transcripts(), and get_transcribed_part_indices() methods.

Benefits

  • Saves money: If transcription fails at part 8/10, next run skips parts 1-7 and only transcribes 8-10, saving Groq/STT budget.
  • Enables re-chunking: Raw transcript storage infrastructure ready for future re-chunking without re-STT.
  • Resilient: Each part is persisted immediately after successful transcription.

Fixed

  • Timestamp alignment: Stored timestamps are now adjusted with cumulative offset to ensure correct time alignment after resume.

v0.9.0 - Persistent Cache & Cache Management

13 Feb 20:27
v0.9.0
605a5d6

Choose a tag to compare

Added

  • Persistent work_dir default: Default work_dir now uses platform-appropriate cache directory:
    • Linux: ~/.cache/audiorag
    • macOS: ~/Library/Caches/audiorag
    • Windows: %LOCALAPPDATA%\audiorag
  • Cache management CLI: New commands to manage cached audio files:
    • audiorag cache info - Show cache location and size
    • audiorag cache clear - Clear all cached audio files
  • Cache management SDK: New methods on AudioRAGPipeline:
    • pipeline.clear_cache() - Clear cache, returns count of items removed
    • pipeline.get_cache_info() - Get cache location, file count, and size

Fixed

  • Type safety: Fixed type checking for metadata.duration attribute access in budget reservation logic.

v0.8.1 - Vector Store Source ID Fix

13 Feb 19:38
v0.8.1
2a79dfd

Choose a tag to compare

Fixed

  • Leaky abstraction in vector stores: Vector store providers now use canonical source_id instead of raw source_url. This fixes issue #19 where backends had to parse Source IDs from URLs.
    • Added source_id to StageContext for pipeline-wide canonical ID
    • Renamed VectorStoreProvider.delete_by_source() to delete_by_source_id()
    • Updated all vector store implementations (ChromaDB, Pinecone, Weaviate, Supabase) to filter by source_id
    • Updated metadata to use source_id instead of source_url

Migration Note

⚠️ Existing vector stores with source_url metadata will need to be re-indexed for force=True deletion to work. Alternatively, users can manually delete via the vector store's native tools.

v0.8.0 - Auto-detect File Protocol

13 Feb 19:07
aefb6fa

Choose a tag to compare

Added

  • Audio source auto-routing: New AudioSourceRouter automatically detects URL protocol:
    • file:// URLs → LocalSource (bypasses yt-dlp)
    • Local paths (/home/user/audio.mp3, ./audio.mp3) → LocalSource
    • YouTube URLs → YouTubeSource
    • Other HTTP URLs → URLSource
  • URL source provider: New audio_source_provider config option supports url to use URLSource directly.
  • Robust YouTube URL detection: Uses proper URL parsing instead of substring matching to avoid false positives (e.g., myyoutube.com is not YouTube).

Changed

  • Replaced pydub with ffprobe: Duration detection in LocalSource and URLSource now uses ffprobe directly instead of pydub.

Fixed

  • Protocol conformance: get_metadata() return type now allows None to conform with implementations that don't support metadata extraction.
  • URL parameter naming: Fixed parameter name mismatch (source_urlurl) in URLSource.download() to match protocol.

Configuration

# Select audio source provider (default: youtube - auto-routing enabled)
export AUDIORAG_AUDIO_SOURCE_PROVIDER="local"   # Force LocalSource
export AUDIORAG_AUDIO_SOURCE_PROVIDER="url"    # Force URLSource
export AUDIORAG_AUDIO_SOURCE_PROVIDER="youtube"  # YouTube + auto-routing (default)