From a90486d490ac8c75aefbcf95d7fe5987f2af7f62 Mon Sep 17 00:00:00 2001 From: civ Date: Sun, 5 Jul 2026 18:24:47 +0700 Subject: [PATCH] Update README.md --- README.md | 91 +++++++++++++++++++++++-------------------------------- 1 file changed, 38 insertions(+), 53 deletions(-) diff --git a/README.md b/README.md index f4302be..88ad7cb 100644 --- a/README.md +++ b/README.md @@ -1,43 +1,36 @@ -# omnivoice.cpp +# omnivoice.cpp - docker version -Local AI text-to-speech with voice cloning and voice design, powered -by GGML. C++17 port of OmniVoice (k2-fsa/OmniVoice). 646 languages, -24 kHz mono output, runs on CPU, CUDA, ROCm, Metal, Vulkan. +Локальный искусственный интеллект для синтеза речи (Text-to-Speech) с +клонированием и конструированием голоса, работающий на базе GGML. +Порт проекта 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 -- 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 +## Сборка образа Docker ``` git clone --recurse-submodules https://github.com/ServeurpersoCom/omnivoice.cpp.git cd omnivoice.cpp -./buildcuda.sh # NVIDIA GPU -./buildvulkan.sh # AMD/Intel GPU (Vulkan) -./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.) +./buildvulkan.sh # Most GPUs (Vulkan) and CPU (if GPU unavailable) reference +docker-compose build ``` -## Model conversion +## Конвертация моделей -Pre-converted GGUFs are available on Hugging Face : +Предварительно сконвертированные GGUF доступны на Hugging Face: https://huggingface.co/Serveurperso/OmniVoice-GGUF -Drop them in `models/` and skip to the quick start. To convert from -the original checkpoint : +Положите их в папку models/ и переходите к быстрому старту. Для конвертации из исходного чекпоинта: ``` ./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) ``` -## Quick start +## Быстрый старт ``` echo "Hello world." | ./build/omnivoice-tts \ @@ -54,7 +47,7 @@ echo "Hello world." | ./build/omnivoice-tts \ --lang English -o hello.wav ``` -Voice cloning : +Копирование голоса : ``` ./build/omnivoice-tts \ @@ -64,10 +57,10 @@ Voice cloning : --lang English -o out.wav < prompt.txt ``` -Pre-encoded reference (`clone.sh`): `omnivoice-codec` encodes a reference WAV -into a compact `.rvq` latent (it applies the exact TTS reference -preprocessing, so the codes are bit-identical to the `--ref-wav` path). -Passing it via `--ref-rvq` skips the codec encode on every synthesis: +Готовый эталон (clone.sh): утилита `omnivoice-codec` кодирует эталонный WAV +в компактный латент .rvq. Она применяет точную предобработку эталона для синтеза, +поэтому коды битово идентичны файлу из `--ref-wav`. Передача через --ref-rvq +пропускает кодировку кодеком при каждом синтезе: ``` 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 ``` -## Embedding the library - -The CLI tools are thin wrappers over a public ABI. Single-header, -single-name-prefix, plain C linkage so that C, C++, Python ctypes, -Rust bindgen and Go cgo all consume it the same way. +## Встраивание библиотеки +Консольные утилиты — это тонкая оболочка над открытым ABI. +Однозаголовочная библиотека, единый префикс имени, чистая C-связка. +Это позволяет использовать её одинаково в C, C++, Python (ctypes), +Rust (bindgen) и Go (cgo). ```c #include "omnivoice.h" @@ -106,23 +99,15 @@ ov_audio_free(&audio); ov_free(ov); ``` -`tests/abi-c.c` is built with `-std=c99 -Wall -Werror -pedantic` on -every build, so any regression that breaks plain C consumability fails -the build, not just an opt-in target. +tests/abi-c.c собирается с флагами -std=c99 -Wall -Werror -pedantic при каждой сборке. Любая регрессия, ломающая совместимость с чистым C, остановит сборку, а не просто станет опциональной целью. -For a binding-friendly shared library (libomnivoice.so / .dll / .dylib), -configure with `cmake -DOMNIVOICE_SHARED=ON ...`. The shared target -exports only the `ov_*` symbols ; every internal `pipeline_*` and -`backend_*` stays hidden inside the .so. +Для создания связывающей разделяемой библиотеки (libomnivoice.so / .dll / .dylib) используйте конфигурацию cmake -DOMNIVOICE_SHARED=ON .... Разделяемый объект экспортирует только символы ov_*; все внутренние pipeline_* и backend_* остаются скрытыми внутри .so. -See [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) for the model, the -GGUF layout, the inference pipeline, every CLI flag, the public API -reference and the validation results. +Ознакомьтесь с docs/ARCHITECTURE.md для сведений о модели, структуре GGUF, конвейере вывода (inference pipeline), всех флагах CLI, справке по общедоступному API и результатах валидации. -## License +## Лицензия -MIT. See [LICENSE](LICENSE). +MIT. См. [LICENSE](LICENSE). -Upstream model : OmniVoice by Xiaomi / k2-fsa, Apache 2.0. -Audio codec : Higgs Audio v2 (`bosonai/higgs-audio-v2-tokenizer`), -Apache 2.0. +Исходная модель : OmniVoice от Xiaomi / k2-fsa, Apache 2.0. +Аудиокодек: Higgs Audio v2 (`bosonai/higgs-audio-v2-tokenizer`), Apache 2.0.