Some checks failed
Linux Build / Linux cpu (push) Has been cancelled
Linux Build / Linux cpu-clang (push) Has been cancelled
Linux Build / Linux vulkan (push) Has been cancelled
mac-build / macOS CPU (push) Has been cancelled
Nix Build / Nix (cpu) (push) Has been cancelled
Nix Build / Nix (vulkan) (push) Has been cancelled
windows-build / Windows CPU (push) Has been cancelled
63 lines
2.1 KiB
Markdown
63 lines
2.1 KiB
Markdown
# OmniVoice tests
|
|
|
|
Voice-clone benchmark scripts and a Python-to-C++ integration test for the
|
|
`omnivoice` family. All scripts resolve the repository root themselves, so they
|
|
can be run from any directory.
|
|
|
|
They expect `models/OmniVoice` to be installed:
|
|
|
|
```bash
|
|
python3 tools/model_manager.py install omnivoice
|
|
```
|
|
|
|
## Build
|
|
|
|
```bash
|
|
cmake -S . -B build -DENGINE_ENABLE_CUDA=ON
|
|
cmake --build build --parallel --target audiocpp_cli audiocpp_server
|
|
```
|
|
|
|
## Weight-type benchmarks
|
|
|
|
`run_clone_benchmark.sh` sweeps single voice-clone requests and
|
|
`run_clone_batch_benchmark.sh` sweeps `--batch-text-file` runs, both across
|
|
every combination of `--num-inference-steps` (8 to 64),
|
|
`omnivoice.generator_weight_type`, and `omnivoice.audio_tokenizer_weight_type`.
|
|
|
|
```bash
|
|
./tests/omnivoice/run_clone_benchmark.sh
|
|
./tests/omnivoice/run_clone_batch_benchmark.sh
|
|
```
|
|
|
|
Each script runs 375 combinations, so a full sweep takes hours. Edit
|
|
`STEPS_LIST`, `WEIGHT_TYPES`, and `AUDIO_TOKENIZER_WEIGHT_TYPES` at the top to
|
|
narrow it. WAVs and a full log are written under `tests/omnivoice/outputs/`,
|
|
which is ignored by Git.
|
|
|
|
Measured results are in
|
|
[OmniVoice runtime weight-type benchmark](../../docs/reports/omnivoice_weight_type_benchmark.md).
|
|
The headline finding is that runtime `omnivoice.audio_tokenizer_weight_type=q8_0`
|
|
produces unusable audio without being any faster, while
|
|
`omnivoice.generator_weight_type=f16` is 1.26x faster than the native path.
|
|
|
|
## Assets
|
|
|
|
`assets/` holds the shared Bengali fixtures used by every script here:
|
|
|
|
```text
|
|
ref_audio_01.wav ref_text_01.txt longer reference voice
|
|
ref_audio_02.wav ref_text_02.txt reference voice used by default
|
|
clone_batch_prompts.txt 10 prompts, one request per line
|
|
```
|
|
|
|
## Python-to-C++ integration
|
|
|
|
[`python_cpp_simple/`](python_cpp_simple/) drives OmniVoice from Python while
|
|
keeping inference in C++, by sending HTTP requests to `audiocpp_server` using
|
|
only the Python standard library.
|
|
|
|
## Warm benchmark
|
|
|
|
`omnivoice_warm_bench.cpp` and `omnivoice_python_warm_bench.py` are the
|
|
framework warmbench helpers driven by `tests/warmbench.py`, and are unrelated to
|
|
the sweep scripts above.
|