app-accessibility/whisper-cpp - 1.4.2 (luke-jr)

Search

Install

Install this version:

emerge -a =app-accessibility/whisper-cpp-1.4.2

If this version is masked, you can unmask it using the autounmask tool or standard emerge options:

autounmask =app-accessibility/whisper-cpp-1.4.2

Or alternatively:

emerge --autounmask-write -a =app-accessibility/whisper-cpp-1.4.2

Package Information

Description:
High-performance automatic speech recognition (ASR) using inference
Homepage:
https://github.com/ggerganov/whisper.cpp
License:
MIT

Ebuild Details

Version EAPI Keywords Slot
1.4.2 7 ~amd64 ~ppc64 0
View Raw Ebuild
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

DESCRIPTION="High-performance automatic speech recognition (ASR) using inference"
HOMEPAGE="https://github.com/ggerganov/whisper.cpp"
LICENSE="MIT"

SRC_URI="https://github.com/ggerganov/whisper.cpp/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz"
SLOT="0"
KEYWORDS="~amd64 ~ppc64"

S="${WORKDIR}/${PN/-/.}-${PV}"

IUSE="debug +command +models +quantize +stream"

DEPEND="
	command? ( media-libs/libsdl2 )
	stream? ( media-libs/libsdl2 )
"
RDEPEND="${DEPEND}
	models? ( app-accessibility/whisper-ggml-models )
"
BDEPEND=""

# FIXME: libtoolise libwhisper.so
# FIXME: make commands use libwhisper.so
# TODO: add 'talk', 'talk-llama', etc examples (use a shell script; check system call for security and fix paths)

target_list=(
	command
	quantize
	stream
)

src_prepare() {
	sed 's/^[[:space:]]\+.\/main -h$//' -i Makefile || die

	local target
	for target in main "${target_list[@]}"; do
		sed 's~"models/~"/usr/share/whisper/ggml-models/~' -i "examples/$target/$target.cpp"
	done

	default
}

src_configure() {
	if use ppc64; then
		sed 's/#include <immintrin.h>//' -i ggml.c || die
	fi
}

src_compile() {
	local common_cflags=(
		-I.
		-fPIC
		-pthread
		$(use debug '' -DNDEBUG)
		-D_POSIX_SOURCE -D_GNU_SOURCE
	)
	local my_makeopts=(
		CFLAGS="-std=c11 ${common_cflags[*]} ${CFLAGS}"
		CXXFLAGS="-std=c++11 ${common_cflags[*]} -I./examples ${CXXFLAGS}"
		LDFLAGS="${LDFLAGS}"
	)
	local my_targets=(
		main
		libwhisper.so
	)
	local target
	for target in "${target_list[@]}"; do
		use "$target" || continue

		my_targets+=( "$target" )
	done
	emake "${my_makeopts[@]}" "${my_targets[@]}"
}

src_install() {
	newbin main whisper-cpp
	dolib.so libwhisper.so
	for target in "${target_list[@]}"; do
		newbin "$target" "whisper-cpp_$target"
	done
}

USE Flags

Manage flags for this package: euse -i <flag> -p app-accessibility/whisper-cpp | euse -E <flag> -p app-accessibility/whisper-cpp | euse -D <flag> -p app-accessibility/whisper-cpp

Global/Standard Flags

command
Default: Enabled (+)
models
Default: Enabled (+)
quantize
Default: Enabled (+)
stream
Default: Enabled (+)

Dependencies

DEPEND

	command? ( media-libs/libsdl2 )
	stream? ( media-libs/libsdl2 )

RDEPEND

	command? ( media-libs/libsdl2 )
	stream? ( media-libs/libsdl2 )

	models? ( app-accessibility/whisper-ggml-models )

Manifest for 1.4.2

Type File Size Source URLs
DIST whisper-cpp-1.4.2.tar.gz 3508271 bytes https://github.com/ggerganov/whisper.cpp/archive/refs/tags/v1.4.2.tar.gz