Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
62 changes: 62 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1691,6 +1691,18 @@ audiocpp_add_model(breeze_tts
engine::models::breeze_tts::make_breeze_tts_loader
)

audiocpp_add_model(vibeasr
SOURCES
src/community_models/vibeasr/assets.cpp
src/community_models/vibeasr/vae_encoder.cpp
src/community_models/vibeasr/lm_decoder.cpp
src/community_models/vibeasr/session.cpp
INCLUDES
engine/community_models/vibeasr/session.h
LOADERS
engine::community_models::vibeasr::make_vibeasr_loader
)

set(AUDIOCPP_ENABLED_MODELS "")
if (AUDIOCPP_MODEL_SET STREQUAL "full")
set(AUDIOCPP_ENABLED_MODELS ${AUDIOCPP_MODEL_TARGETS})
Expand Down Expand Up @@ -2500,6 +2512,56 @@ if (ENGINE_BUILD_TESTS)
target_link_libraries(test_granite5asr_golden_transcription PRIVATE OpenMP::OpenMP_CXX)
endif()

if (vibeasr IN_LIST AUDIOCPP_LINKED_MODELS)
add_executable(test_vibeasr_vae_encoder
tests/vibeasr/test_vibeasr_vae_encoder.cpp
)
target_compile_definitions(test_vibeasr_vae_encoder PRIVATE
ENGINE_REPO_ROOT="${CMAKE_CURRENT_SOURCE_DIR}"
)
target_link_libraries(test_vibeasr_vae_encoder PRIVATE engine_runtime ggml)
target_include_directories(test_vibeasr_vae_encoder PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
if (ENGINE_ENABLE_OPENMP)
target_link_libraries(test_vibeasr_vae_encoder PRIVATE OpenMP::OpenMP_CXX)
endif()
add_test(
NAME test_vibeasr_vae_encoder
COMMAND test_vibeasr_vae_encoder
--model ${CMAKE_CURRENT_SOURCE_DIR}/models/vibeasr/vibeasr-vae-encoder-i8_s.gguf
--audio ${CMAKE_CURRENT_SOURCE_DIR}/assets/asr_validation/librispeech/librispeech_test_clean_6930-75918-0000.wav
)
# Needs the converted 703 MB encoder package, which a normal checkout
# does not have; the probe exits 125 (skip) instead of failing. Pass
# --reference-acoustic / --reference-semantic by hand to also check
# parity against a VibeASR.cpp dump.
set_tests_properties(test_vibeasr_vae_encoder PROPERTIES
SKIP_RETURN_CODE 125
TIMEOUT 300
)

add_executable(test_vibeasr_asr
tests/vibeasr/test_vibeasr_asr.cpp
)
target_compile_definitions(test_vibeasr_asr PRIVATE
ENGINE_REPO_ROOT="${CMAKE_CURRENT_SOURCE_DIR}"
)
target_link_libraries(test_vibeasr_asr PRIVATE engine_runtime ggml)
target_include_directories(test_vibeasr_asr PRIVATE ${CMAKE_CURRENT_SOURCE_DIR})
if (ENGINE_ENABLE_OPENMP)
target_link_libraries(test_vibeasr_asr PRIVATE OpenMP::OpenMP_CXX)
endif()
add_test(
NAME test_vibeasr_asr
COMMAND test_vibeasr_asr --threads 8
)
# Same story as the encoder probe, plus the 993 MB decoder: exits 125
# (skip) unless both converted GGUFs sit in models/vibeasr/.
set_tests_properties(test_vibeasr_asr PROPERTIES
SKIP_RETURN_CODE 125
TIMEOUT 600
)
endif()

if (audio8_asr IN_LIST AUDIOCPP_LINKED_MODELS)
add_executable(test_audio8_asr_units
tests/audio8_asr/test_audio8_asr_units.cpp
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,7 @@ Community model ports live under `community_models` to make the ownership bounda
| **sense_asr** | ASR | auto, zh, en, yue, ja, ko, pt, ru, es, it, fr, de, nl, pl, tr, ar, hi, vi, th, id, ms, fa, nospeech | GGUF Q8, Stream | Jason Chen [@jasonchen31](https://github.com/jasonchen31), [@LauraGPT](https://github.com/LauraGPT) / FunASR | [SenseVoice-Small](docs/community_models/sense_asr.md) offline/streaming SAN-M + CTC transcription with event/emotion/language tags and ITN |
| **soprano_tts** | TTS | en | GGUF Q8, Stream | [@drzsdrtfg](https://github.com/drzsdrtfg) | [Soprano-1.1-80M](https://huggingface.co/WalkingCat/Soprano-1.1-80M-GGUF) ultra-lightweight TTS with Qwen3 LM + Vocos decoder |
| **vietneu_tts** | TTS, Clone | vi, en | GGUF | Phuoc [@phuocnguyen90](https://github.com/phuocnguyen90) | [VieNeu-TTS-v3-Turbo](docs/community_models/vietneu_tts.md) TTS and voice cloning support |
| **vibeasr** | ASR | en | GGUF I8_S + I2_S | [@XsquirrelC](https://github.com/XsquirrelC) | [VibeASR](docs/community_models/vibeasr.md) fully quantized port of [VibeASR.cpp](https://github.com/microsoft/VibeASR.cpp): VibeVoice acoustic/semantic tokenizers on INT8 weights and INT8 activations, feeding a ternary BitNet Qwen2 decoder. Offline, CPU only |
| **voxcpm1** | TTS, Clone | zh, en, ja, ko | GGUF Q8, Stream | [@jasonchen31](https://github.com/jasonchen31) | [VoxCPM1](docs/community_models/voxcpm1.md) tokenizer-free 0.5B TTS with 16 kHz output, streaming, and continuation-mode voice cloning |

## Docker
Expand Down
5 changes: 5 additions & 0 deletions docs/asr.md
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,11 @@ chunking, server usage, and validation notes.

VibeVoice ASR is an offline ASR model with greedy, sampling, and beam-search decode paths. It can return transcription text and structured segment/speaker-turn output when the model produces timestamps.

A fully quantized port of the same model — INT8 activations through the encoder,
ternary BitNet weights in the decoder — lives under community models as
`vibeasr`: see [VibeASR](community_models/vibeasr.md). It is not a separate
model, only a CPU-only alternative numeric pipeline for the same weights.

| Field | Value |
|---|---|
| Family | `vibevoice_asr` |
Expand Down
1 change: 1 addition & 0 deletions docs/community_models/models.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,3 +35,4 @@ Practical expectations:
| **sense_asr** | ASR | auto, zh, en, yue, ja, ko, pt, ru, es, it, fr, de, nl, pl, tr, ar, hi, vi, th, id, ms, fa, nospeech | Jason Chen [@jasonchen31](https://github.com/jasonchen31), [@LauraGPT](https://github.com/LauraGPT) / FunASR | [SenseVoice-Small](sense_asr.md) offline/streaming SAN-M + CTC transcription with event/emotion/language tags and ITN |
| **vietneu_tts** | TTS, voice cloning | vi, en | Phuoc [@phuocnguyen90](https://github.com/phuocnguyen90) | [VieNeu-TTS-v3-Turbo](vietneu_tts.md) TTS and voice cloning support |
| **moss_voicegen** | Voice design | en, zh | Joost [@jrohde](https://github.com/jrohde) | [MOSS-VoiceGenerator](moss_voicegen.md) voice design from a written instruction, on the MOSS delay architecture |
| **vibeasr** | ASR | en | [@XsquirrelC](https://github.com/XsquirrelC) | [VibeASR](vibeasr.md) fully quantized port of [VibeASR.cpp](https://github.com/microsoft/VibeASR.cpp): the VibeVoice acoustic/semantic tokenizers on INT8 weights *and* INT8 activations through the fused `GGML_TYPE_I8_S` ops, feeding a ternary `GGML_TYPE_I2_S` BitNet Qwen2 decoder. Offline, CPU only |
Loading
Loading