Modular audio model inference runtime with plugin architecture
Project description
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:
- Core (
voco): Router, caching, plugin loader - no heavy dependencies - 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file voco-0.0.2.tar.gz.
File metadata
- Download URL: voco-0.0.2.tar.gz
- Upload date:
- Size: 9.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.10.19
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a869bcfe912f5f6250ed685355d11c0684dc51360dff338797f4978afce4723
|
|
| MD5 |
d51e182afc7c65d2de820b647108289e
|
|
| BLAKE2b-256 |
10836d5ef13c3598740c084bd3326ace348526e29b3bc39a60209a2771898286
|
File details
Details for the file voco-0.0.2-py3-none-any.whl.
File metadata
- Download URL: voco-0.0.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cdec0ec552eb15480b40184bccdb9a5fadeec5575ed5139d77097a0f58f3c1f7
|
|
| MD5 |
06955668dbfb891368579fed3d8aae31
|
|
| BLAKE2b-256 |
9489ed7ecbb1e8f0d4936f9ba95ad427a2796717f79dc9731e3aec29b4bd37e8
|