Skip to main content

Modular audio model inference runtime with plugin architecture

Project description

VOCO Logo

VOCO

Modular audio inference runtime with plugin architecture.

Overview

Voco separates the core runtime from model implementations. Install only what you need, use a consistent API across different models.

Core concept: One interface for multiple TTS/audio models.

router = AudioRouter()
router.load("kokoro", alias="tts")
router.infer("tts", text="Hello world")

Switch models without changing your code:

router.load("other-model", alias="tts")  # Same interface
router.infer("tts", text="Hello world")

Install

# Core (lightweight, no dependencies)
pip install voco

# Install plugins you need
pip install voco-kokoro  # for Kokoro TTS

Usage

from voco.core import AudioRouter
import voco_kokoro

router = AudioRouter()
router.load("kokoro", alias="tts", device="cpu")

for result in router.infer("tts", text="Hello world", voice="af_heart"):
    audio = result.audio

How It Works

Voco separates the core runtime from model plugins:

  1. Core (voco): Router, caching, plugin loader - no heavy dependencies
  2. Plugins (voco-kokoro, voco-gtts, etc.): Each model is a separate package with its own dependencies

Load models dynamically at runtime:

router = AudioRouter()
router.load("kokoro", alias="tts")  # Loads voco-kokoro plugin
audio = router.infer("tts", text="Hello world")

Switch models without changing code:

router.load("gtts", alias="tts")  # Replace with Google TTS
audio = router.infer("tts", text="Hello world")  # Same interface

Features

  • Zero dependencies in core
  • Consistent API across models
  • Plugin architecture
  • Optional caching layer (experimental)
  • Type safe

Caching (Experimental)

Optional file-based cache for repeated inference calls.

router = AudioRouter(cache=True)

# First call generates and caches
audio = router.infer("tts", text="Hello world")

# Subsequent calls return cached result
audio = router.infer("tts", text="Hello world")

Configuration

router = AudioRouter(
    cache=True,
    cache_config={
        "max_size_mb": 500,           # Max cache size
        "ttl_seconds": 86400,         # Time to live (1 hour - 30 days)
        "warn_at_percent": 80,        # Warning threshold
    }
)

Management

router.cache.stats()              # View cache usage
router.cache.clear()              # Clear all cache
router.cache.clear(model="tts")   # Clear specific model

Per-Call Control

# Skip cache for specific call
audio = router.infer("tts", text="Hello", cache=False)

Notes

voco uses file-based cache and stored in ~/.voco/cache/. Keys are generated from model name, text, and parameters by default.

Useful for repeated phrases. Not recommended for unique text or privacy-sensitive content and realtime environments.

Plugins

Each plugin is a separate PyPI package with its own dependencies. Install only what you need.

Available Plugins

  • voco-kokoro - Kokoro TTS

Creating Plugins

Plugins register themselves via Python entry points. See CONTRIBUTING.md for the plugin development guide.

# Your plugin structure
voco-myplugin/
├── voco_myplugin/
   └── __init__.py  # Implements BaseAudioModel
└── pyproject.toml   # Defines entry point

Development

See CONTRIBUTING.md for detailed setup and plugin development guide.

git clone https://github.com/yourusername/voco.git
cd voco
pip install -e .
pip install -e plugins/voco-kokoro
python examples/generate_audio.py

License

MIT

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

voco-0.0.7.tar.gz (9.4 kB view details)

Uploaded Source

Built Distribution

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

voco-0.0.7-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file voco-0.0.7.tar.gz.

File metadata

  • Download URL: voco-0.0.7.tar.gz
  • Upload date:
  • Size: 9.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for voco-0.0.7.tar.gz
Algorithm Hash digest
SHA256 0bce672b2e51a30f863615e7de11f7e4a2cf6a8608fc45f153130264a63d1a91
MD5 65da305708a67cd43097d2f63587a011
BLAKE2b-256 a7cdb84c1a2a62188bdf9569fab7ff3880317cbeb44d9e885ac2a457548f402f

See more details on using hashes here.

File details

Details for the file voco-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: voco-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 10.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for voco-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 b7419fdd97d2fa81f2f58c655f04e7541b56bd721980ef572613d0639a278983
MD5 8db4bd68eef8682616b787bdeb826d1e
BLAKE2b-256 642b475035a176773699cd2e1ea21ca4c9725bfde692cd6033a3e498cd94722f

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