mirror of
https://github.com/mudler/LocalAI.git
synced 2026-07-31 10:28:43 -04:00
* feat(backend): add moss-tts-cpp text-to-speech backend Add a Go + purego backend wrapping the moss-tts.cpp ggml port of the OpenMOSS MOSS-TTS-Local v1.5 text-to-speech model (GPT-J local transformer decoded through MOSS-Audio-Tokenizer-v2), producing 48 kHz stereo audio with optional reference-audio voice cloning. Mirrors the qwen3-tts-cpp backend: dlopen the static-ggml shared library, bind the moss-tts.cpp C-API via purego, and serve the gRPC TTS method. A thin C shim holds the pipeline handle and copies engine PCM into a Go-freeable buffer. Wires the CI registration: backend-matrix.yml (CPU, CUDA 12/13, Intel SYCL f16/f32, Vulkan, ROCm, NVIDIA L4T, plus Darwin metal), backend/index.yaml metas and image entries pointing at mudler/MOSS-TTS-Local-Transformer-v1.5-GGUF, the root Makefile build targets, and the changed-backends.js path mapping. Assisted-by: Claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * docs: list the moss-tts-cpp backend among the LocalAI-maintained engines Add moss-tts.cpp to the README "Backends built by us" table, the Text-to-Speech compatibility table, and the reference-audio voice-cloning backend list, so the new backend is documented alongside its peers. Assisted-by: Claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * backend(moss-tts-cpp): pin moss-tts.cpp to the squashed single-commit release moss-tts.cpp history was collapsed to a single commit; repoint MOSSTTS_CPP_VERSION to ee722b8e9205ee9b1b1c398a4e87e4e393e9be41. Assisted-by: Claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> * backend(moss-tts-cpp): add the moss-tts-cpp-development gallery meta The gallery had the -development image entries but no matching -development meta anchor (as locate-anything-cpp and depth-anything-cpp have), so the master build was not installable as a gallery backend. Add moss-tts-cpp-development mirroring the production meta with the -development capability image names. Assisted-by: Claude:claude-opus-4-8 [Claude Code] Signed-off-by: Ettore Di Giacinto <mudler@localai.io> --------- Signed-off-by: Ettore Di Giacinto <mudler@localai.io> Co-authored-by: Ettore Di Giacinto <mudler@localai.io>
49 lines
2.0 KiB
CMake
49 lines
2.0 KiB
CMake
cmake_minimum_required(VERSION 3.18)
|
|
project(gomosstts-cpp LANGUAGES C CXX)
|
|
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
|
|
|
set(MOSS_DIR ${CMAKE_CURRENT_SOURCE_DIR}/sources/moss-tts.cpp)
|
|
|
|
# Override upstream's CMAKE_CUDA_ARCHITECTURES before add_subdirectory.
|
|
if(NOT DEFINED CMAKE_CUDA_ARCHITECTURES)
|
|
set(CMAKE_CUDA_ARCHITECTURES "75-virtual;80-virtual;86-real;89-real")
|
|
endif()
|
|
|
|
# Add the upstream project. Its own CMakeLists vendors ggml under
|
|
# third_party/ggml and builds the moss-tts library (STATIC by default, since we
|
|
# do NOT set MOSS_TTS_SHARED). EXCLUDE_FROM_ALL keeps its CLI tool / tests /
|
|
# examples from building unless referenced.
|
|
add_subdirectory(${MOSS_DIR} mosstts EXCLUDE_FROM_ALL)
|
|
|
|
add_library(gomosstts-cpp MODULE cpp/mossttscpp.cpp)
|
|
target_link_libraries(gomosstts-cpp PRIVATE moss-tts)
|
|
|
|
target_include_directories(gomosstts-cpp PRIVATE ${MOSS_DIR}/include ${MOSS_DIR}/src)
|
|
target_include_directories(gomosstts-cpp SYSTEM PRIVATE ${MOSS_DIR}/third_party/ggml/include)
|
|
|
|
# Link GPU backends if the upstream ggml created them. moss-tts links these
|
|
# PUBLIC when enabled, but we re-list them so the MODULE carries the symbols
|
|
# even under static ggml (mirrors qwen3-tts-cpp).
|
|
foreach(backend blas cuda hip metal vulkan sycl)
|
|
if(TARGET ggml-${backend})
|
|
target_link_libraries(gomosstts-cpp PRIVATE ggml-${backend})
|
|
if(backend STREQUAL "cuda")
|
|
find_package(CUDAToolkit QUIET)
|
|
if(CUDAToolkit_FOUND)
|
|
target_link_libraries(gomosstts-cpp PRIVATE CUDA::cudart)
|
|
endif()
|
|
endif()
|
|
endif()
|
|
endforeach()
|
|
|
|
if(MSVC)
|
|
target_compile_options(gomosstts-cpp PRIVATE /W4 /wd4100 /wd4505)
|
|
else()
|
|
target_compile_options(gomosstts-cpp PRIVATE -Wall -Wextra
|
|
-Wno-unused-parameter -Wno-unused-function)
|
|
endif()
|
|
|
|
set_property(TARGET gomosstts-cpp PROPERTY CXX_STANDARD 17)
|
|
set_target_properties(gomosstts-cpp PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
|