Local Windows-first launcher for OpenBMB/VoxCPM, with a decoupled FastAPI service, the upstream Gradio WebUI, and a small compatibility layer for OpenAI-style TTS clients.
中文说明 | API Docs | API 文档 | Model Sources
pixienvironment management- local model download into
./models - upstream
OpenBMB/VoxCPMas a git submodule - official Gradio WebUI launcher
- standalone FastAPI server
- config-driven
pixi run serveentrypoint for API, Admin, or both - OpenAI-compatible
/v1/audio/speech - native VoxCPM routes under
/api/voxcpm/... - TOML voice sets and local voice profiles under
configs/andruntime/voices/ - compatibility with the
vllm-omniVoxCPM2 example request shape
OpenAI-style model=default means a voice set, not the underlying VoxCPM2 weights. The native VoxCPM2 model path and runtime options live in configs/model-presets/default.toml. The default voice set preserves the three VoxCPM2 inference modes as file-backed profiles:
voxcpm2-design: text-only voice designvoxcpm2-clone: reference-audio controllable cloningvoxcpm2-ultimate-clone:prompt_audio+prompt_texthigh-fidelity cloning
git clone --recurse-submodules https://github.com/neiroha/<repo-name>.git
cd <repo-name>If you already cloned the outer repo:
git submodule update --init --recursivepixi installpixi run installOptional ASR model:
pixi run install-asrDefault API + Neiroha Admin:
pixi run serveAPI only:
pixi run apiPorts, startup surface, preload behavior, and the default model preset come from configs/server.toml and configs/model-presets/default.toml; pixi tasks do not hardcode model paths or ports.
Neiroha Admin only:
pixi run adminFor other startup surfaces or engine options, edit configs/server.toml and configs/model-presets/default.toml, or call scripts/launch_engine.py --help for one-off overrides.
Contract checks:
pixi run test
pixi run smokeSee all launcher options:
python -B scripts/launch_engine.py --helpFor the Neiroha front-end, the recommended baseline is:
- Base URL:
http://127.0.0.1:8000 - TTS endpoint:
POST /v1/audio/speech - Voice list:
GET /v1/audio/voices - Model id:
default
Recommended request body:
{
"model": "default",
"input": "Hello from Neiroha.",
"voice": "default",
"response_format": "wav"
}For one-off voice cloning, send ref_audio or reference_audio.
For reusable local speakers, create a voice profile with POST /api/voxcpm/voices, then call:
{
"model": "default",
"input": "Read this in the registered voice.",
"voice": "taichi_cn_01"
}Legacy model ids voxcpm2, openbmb/VoxCPM2, and voxcpm-openai-tts remain accepted as compatibility aliases. Native routes are standardized under /api/voxcpm/*; legacy /voxcpm/* routes remain available.
.
├─ app/
├─ configs/
├─ docs/
├─ models/
├─ runtime/
├─ scripts/
├─ tests/
├─ VoxCPM/
└─ pixi.toml
- model weights are not committed
- runtime caches, outputs, logs, and local voices are not committed
- model source and license notes live in docs/model-sources.md
- this repo currently targets Windows + CUDA + Pixi
- API details live in one page: docs/API.md