Update README.md
This commit is contained in:
@@ -1,43 +1,36 @@
|
|||||||
# omnivoice.cpp
|
# omnivoice.cpp - docker version
|
||||||
|
|
||||||
Local AI text-to-speech with voice cloning and voice design, powered
|
Локальный искусственный интеллект для синтеза речи (Text-to-Speech) с
|
||||||
by GGML. C++17 port of OmniVoice (k2-fsa/OmniVoice). 646 languages,
|
клонированием и конструированием голоса, работающий на базе GGML.
|
||||||
24 kHz mono output, runs on CPU, CUDA, ROCm, Metal, Vulkan.
|
Порт проекта OmniVoice на C++17. Поддержка 646 языков, выходной сигнал 24 кГц (моно),
|
||||||
|
контейнер работает на CPU и Vulkan.
|
||||||
|
|
||||||
## Features
|
## Возможности
|
||||||
|
- Клонирование голоса по эталонному WAV-файлу и его транскрипту
|
||||||
|
- Конструирование голоса через ключевые атрибуты (пол, возраст, высота тона, стиль, громкость, эмоции)
|
||||||
|
- Авто-голос с сохранением идентичности говорящего на длинных текстах
|
||||||
|
- Длительный синтез с учетом пунктуации, выделение голосовых промптов, кроссфейд и удаление тишины по стандартам pydub
|
||||||
|
- Побитовая детерминированность в жадном режиме (greedy mode), генерация через семафорное распределенное случайное число (PRNG Philox)
|
||||||
|
- Квантование модели Qwen3 (612 млн параметров) в формат Q8_0
|
||||||
|
- Два консольных инструмента: omnivoice-tts (текст -> WAV) и omnivoice-codec (WAV <-> RVQ коды)
|
||||||
|
- OpenAI API-совместивый сервер с возможностью интеграции в Open WebUI (tools/tts-server)
|
||||||
|
|
||||||
- Voice cloning from a reference WAV plus its transcript
|
## Сборка образа Docker
|
||||||
- Voice design via attribute keywords (gender, age, pitch, style,
|
|
||||||
volume, emotion)
|
|
||||||
- Auto voice with consistent speaker identity across long inputs
|
|
||||||
- Long-form synthesis with punctuation-aware text chunking, voice
|
|
||||||
prompt promotion, cross-fade and pydub-strict silence removal
|
|
||||||
- Bit deterministic generation in greedy mode, seedable Philox PRNG
|
|
||||||
for stochastic sampling
|
|
||||||
- Q8_0 quantisation of the 612 M parameter Qwen3 backbone
|
|
||||||
- Two CLI tools : `omnivoice-tts` (text -> WAV) and `omnivoice-codec`
|
|
||||||
(WAV <-> RVQ codes)
|
|
||||||
|
|
||||||
## Build
|
|
||||||
|
|
||||||
```
|
```
|
||||||
git clone --recurse-submodules https://github.com/ServeurpersoCom/omnivoice.cpp.git
|
git clone --recurse-submodules https://github.com/ServeurpersoCom/omnivoice.cpp.git
|
||||||
cd omnivoice.cpp
|
cd omnivoice.cpp
|
||||||
./buildcuda.sh # NVIDIA GPU
|
./buildvulkan.sh # Most GPUs (Vulkan) and CPU (if GPU unavailable) reference
|
||||||
./buildvulkan.sh # AMD/Intel GPU (Vulkan)
|
docker-compose build
|
||||||
./buildcpu.sh # CPU only
|
|
||||||
./buildall.sh # all backends, runtime DL loading
|
|
||||||
NVCC_CCBIN=g++-13 ./buildcuda.sh # rolling release distros (Arch w/ GCC 16, etc.)
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Model conversion
|
## Конвертация моделей
|
||||||
|
|
||||||
Pre-converted GGUFs are available on Hugging Face :
|
Предварительно сконвертированные GGUF доступны на Hugging Face:
|
||||||
|
|
||||||
https://huggingface.co/Serveurperso/OmniVoice-GGUF
|
https://huggingface.co/Serveurperso/OmniVoice-GGUF
|
||||||
|
|
||||||
Drop them in `models/` and skip to the quick start. To convert from
|
Положите их в папку models/ и переходите к быстрому старту. Для конвертации из исходного чекпоинта:
|
||||||
the original checkpoint :
|
|
||||||
|
|
||||||
```
|
```
|
||||||
./checkpoints.sh # hf download k2-fsa/OmniVoice -> checkpoints/
|
./checkpoints.sh # hf download k2-fsa/OmniVoice -> checkpoints/
|
||||||
@@ -45,7 +38,7 @@ the original checkpoint :
|
|||||||
./quantize.sh # base LM Q8_0 (tokenizer stays at native dtype)
|
./quantize.sh # base LM Q8_0 (tokenizer stays at native dtype)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Quick start
|
## Быстрый старт
|
||||||
|
|
||||||
```
|
```
|
||||||
echo "Hello world." | ./build/omnivoice-tts \
|
echo "Hello world." | ./build/omnivoice-tts \
|
||||||
@@ -54,7 +47,7 @@ echo "Hello world." | ./build/omnivoice-tts \
|
|||||||
--lang English -o hello.wav
|
--lang English -o hello.wav
|
||||||
```
|
```
|
||||||
|
|
||||||
Voice cloning :
|
Копирование голоса :
|
||||||
|
|
||||||
```
|
```
|
||||||
./build/omnivoice-tts \
|
./build/omnivoice-tts \
|
||||||
@@ -64,10 +57,10 @@ Voice cloning :
|
|||||||
--lang English -o out.wav < prompt.txt
|
--lang English -o out.wav < prompt.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
Pre-encoded reference (`clone.sh`): `omnivoice-codec` encodes a reference WAV
|
Готовый эталон (clone.sh): утилита `omnivoice-codec` кодирует эталонный WAV
|
||||||
into a compact `.rvq` latent (it applies the exact TTS reference
|
в компактный латент .rvq. Она применяет точную предобработку эталона для синтеза,
|
||||||
preprocessing, so the codes are bit-identical to the `--ref-wav` path).
|
поэтому коды битово идентичны файлу из `--ref-wav`. Передача через --ref-rvq
|
||||||
Passing it via `--ref-rvq` skips the codec encode on every synthesis:
|
пропускает кодировку кодеком при каждом синтезе:
|
||||||
|
|
||||||
```
|
```
|
||||||
build/omnivoice-codec --model models/omnivoice-tokenizer-F32.gguf -i ref.wav
|
build/omnivoice-codec --model models/omnivoice-tokenizer-F32.gguf -i ref.wav
|
||||||
@@ -78,11 +71,11 @@ build/omnivoice-tts \
|
|||||||
--lang English -o out.wav < prompt.txt
|
--lang English -o out.wav < prompt.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
## Embedding the library
|
## Встраивание библиотеки
|
||||||
|
Консольные утилиты — это тонкая оболочка над открытым ABI.
|
||||||
The CLI tools are thin wrappers over a public ABI. Single-header,
|
Однозаголовочная библиотека, единый префикс имени, чистая C-связка.
|
||||||
single-name-prefix, plain C linkage so that C, C++, Python ctypes,
|
Это позволяет использовать её одинаково в C, C++, Python (ctypes),
|
||||||
Rust bindgen and Go cgo all consume it the same way.
|
Rust (bindgen) и Go (cgo).
|
||||||
|
|
||||||
```c
|
```c
|
||||||
#include "omnivoice.h"
|
#include "omnivoice.h"
|
||||||
@@ -106,23 +99,15 @@ ov_audio_free(&audio);
|
|||||||
ov_free(ov);
|
ov_free(ov);
|
||||||
```
|
```
|
||||||
|
|
||||||
`tests/abi-c.c` is built with `-std=c99 -Wall -Werror -pedantic` on
|
tests/abi-c.c собирается с флагами -std=c99 -Wall -Werror -pedantic при каждой сборке. Любая регрессия, ломающая совместимость с чистым C, остановит сборку, а не просто станет опциональной целью.
|
||||||
every build, so any regression that breaks plain C consumability fails
|
|
||||||
the build, not just an opt-in target.
|
|
||||||
|
|
||||||
For a binding-friendly shared library (libomnivoice.so / .dll / .dylib),
|
Для создания связывающей разделяемой библиотеки (libomnivoice.so / .dll / .dylib) используйте конфигурацию cmake -DOMNIVOICE_SHARED=ON .... Разделяемый объект экспортирует только символы ov_*; все внутренние pipeline_* и backend_* остаются скрытыми внутри .so.
|
||||||
configure with `cmake -DOMNIVOICE_SHARED=ON ...`. The shared target
|
|
||||||
exports only the `ov_*` symbols ; every internal `pipeline_*` and
|
|
||||||
`backend_*` stays hidden inside the .so.
|
|
||||||
|
|
||||||
See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the model, the
|
Ознакомьтесь с docs/ARCHITECTURE.md для сведений о модели, структуре GGUF, конвейере вывода (inference pipeline), всех флагах CLI, справке по общедоступному API и результатах валидации.
|
||||||
GGUF layout, the inference pipeline, every CLI flag, the public API
|
|
||||||
reference and the validation results.
|
|
||||||
|
|
||||||
## License
|
## Лицензия
|
||||||
|
|
||||||
MIT. See [LICENSE](LICENSE).
|
MIT. См. [LICENSE](LICENSE).
|
||||||
|
|
||||||
Upstream model : OmniVoice by Xiaomi / k2-fsa, Apache 2.0.
|
Исходная модель : OmniVoice от Xiaomi / k2-fsa, Apache 2.0.
|
||||||
Audio codec : Higgs Audio v2 (`bosonai/higgs-audio-v2-tokenizer`),
|
Аудиокодек: Higgs Audio v2 (`bosonai/higgs-audio-v2-tokenizer`), Apache 2.0.
|
||||||
Apache 2.0.
|
|
||||||
|
|||||||
Reference in New Issue
Block a user