Install this version:
emerge -a =app-local-ai/crispasr-4.9.0
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =app-local-ai/crispasr-4.9.0
Or alternatively:
emerge --autounmask-write -a =app-local-ai/crispasr-4.9.0
| Version | EAPI | Keywords | Slot |
|---|---|---|---|
| 4.9.0 | 8 | ~amd64 |
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
# LocalAI speech backend built on CrispASR, a multi-architecture ggml
# speech engine: speech-to-text (Whisper, Parakeet, Canary, Voxtral,
# Qwen3-ASR, FunASR/Paraformer/SenseVoice, ...), text-to-speech (Qwen3-TTS,
# Orpheus, Chatterbox, Kokoro, F5-TTS, VibeVoice, ...), language
# identification, punctuation and translation — a CGO-free Go gRPC server
# dlopens the compute library built from the engine at the exact commit
# this LocalAI release pins.
EAPI=8
LOCAL_AI_ENGINE_LIB="libgocrispasr.so"
LOCAL_AI_CMAKE_TARGET="gocrispasr"
# Keep the build lean, as upstream's backend build does: no tests/examples/
# server binaries, no SDL2, and no in-engine model downloading (model
# acquisition is the LocalAI server's job; backends only get local paths).
LOCAL_AI_EXTRA_CMAKE_ARGS=(
-DCRISPASR_BUILD_TESTS=OFF
-DCRISPASR_BUILD_EXAMPLES=OFF
-DCRISPASR_BUILD_SERVER=OFF
-DCRISPASR_SDL2=OFF
-DCRISPASR_CURL=OFF
)
inherit local-ai-ggml-go
# The CrispASR commit LocalAI v4.9.0 builds against. Source of truth:
# backend/go/crispasr/Makefile (CRISPASR_VERSION) at the upstream release
# tag; the other two are that commit's submodule gitlinks (CrispStrobe's
# ggml fork and the C2PA content-credentials signer).
CRISPASR_COMMIT="a153b09b37c90cd55cd9336fccbdf3ba7a289596"
GGML_COMMIT="5049ebb8472fdc965eb3fb72c1cb111260726186"
C2PA_COMMIT="e40329b83f16f67bb5ddc7bb13ae18de0a9376fc"
DESCRIPTION="LocalAI speech backend (CrispASR gRPC server)"
SRC_URI="
${LOCAL_AI_GO_SRC_URI}
https://github.com/CrispStrobe/CrispASR/archive/${CRISPASR_COMMIT}.tar.gz -> CrispASR-${CRISPASR_COMMIT}.tar.gz
https://github.com/CrispStrobe/ggml/archive/${GGML_COMMIT}.tar.gz -> crispstrobe-ggml-${GGML_COMMIT}.tar.gz
https://github.com/CrispStrobe/c2pa-audio/archive/${C2PA_COMMIT}.tar.gz -> c2pa-audio-${C2PA_COMMIT}.tar.gz
"
S="${WORKDIR}/LocalAI-${PV}/backend/go/crispasr"
KEYWORDS="~amd64"
IUSE="+ffmpeg"
# ffmpeg decode support lets the backend transcribe any audio/video
# container directly (upstream disables it only because their scratch
# container cannot ship the ffmpeg runtime).
RDEPEND+="
ffmpeg? ( media-video/ffmpeg:= )
"
DEPEND+="
ffmpeg? ( media-video/ffmpeg:= )
"
src_unpack() {
local-ai-backend_go_unpack
local subs=(
"crispstrobe-ggml-${GGML_COMMIT}.tar.gz" "ggml-${GGML_COMMIT}" ggml
"c2pa-audio-${C2PA_COMMIT}.tar.gz" "c2pa-audio-${C2PA_COMMIT}" third_party/c2pa-audio
)
local-ai-backend_engine_unpack "CrispASR-${CRISPASR_COMMIT}.tar.gz" CrispASR "${subs[@]}"
}
src_prepare() {
# CrispASR's src/CMakeLists.txt locates its vendored llama.cpp, the
# c2pa-audio submodule, and WebRTC VAD via ${CMAKE_SOURCE_DIR}, which
# assumes CrispASR is the top-level CMake project; under
# add_subdirectory that resolves to the wrapper dir instead. Rewrite
# to ${PROJECT_SOURCE_DIR}, exactly as upstream's clone recipe does.
einfo "Rewriting CMAKE_SOURCE_DIR source references to PROJECT_SOURCE_DIR"
sed -i -e 's#${CMAKE_SOURCE_DIR}/examples/talk-llama#${PROJECT_SOURCE_DIR}/examples/talk-llama#' -e 's#${CMAKE_SOURCE_DIR}/third_party#${PROJECT_SOURCE_DIR}/third_party#' "${S}/sources/CrispASR/src/CMakeLists.txt" || die
grep -q 'PROJECT_SOURCE_DIR}/third_party' "${S}/sources/CrispASR/src/CMakeLists.txt" || die "source-dir rewrite did not apply"
local-ai-ggml_src_prepare
}
src_configure() {
LOCAL_AI_EXTRA_CMAKE_ARGS+=( -DCRISPASR_FFMPEG=$(usex ffmpeg) )
local-ai-ggml_src_configure
}
Manage flags for this package:
euse -i <flag> -p app-local-ai/crispasr |
euse -E <flag> -p app-local-ai/crispasr |
euse -D <flag> -p app-local-ai/crispasr