Skip to content

feat(inference): add parakeet.cpp backend - #844

Open
sozercan wants to merge 1 commit into
mainfrom
feat/parakeet-cpp
Open

feat(inference): add parakeet.cpp backend#844
sozercan wants to merge 1 commit into
mainfrom
feat/parakeet-cpp

Conversation

@sozercan

@sozercan sozercan commented Aug 9, 2026

Copy link
Copy Markdown
Member

What this PR does / why we need it:

Adds LocalAI v4.8.2 parakeet.cpp speech-to-text support for CPU and NVIDIA CUDA deployments.

  • Supports Linux CPU on amd64 and arm64, plus CUDA 12 on amd64.
  • Adds secure GGUF downloading, model-aware caching, and LocalAI configuration generation for runner images.
  • Installs FFmpeg so Parakeet can normalize noncanonical audio inputs.
  • Adds CPU and CUDA runner definitions, release matrices, and pinned transcription CI coverage.

Which issue(s) this PR fixes:

None.

Special notes for your reviewer:

Validation completed:

  • go test -race -count=1 ./...
  • golangci-lint run -v ./... --timeout 5m --new-from-rev=HEAD: zero issues
  • actionlint and YAML parsing passed; the existing custom gpu runner label was allowed
  • Built and ran the Linux arm64 CPU runner with LocalAI v4.8.2
  • A stereo 44.1 kHz fixture produced the exact expected transcript
  • Runtime hygiene checks passed and the compressed arm64 image is about 235 MiB, below its 250 MiB budget

CUDA execution requires the existing self-hosted GPU workflow. ROCm support is intentionally out of scope.

Signed-off-by: Sertac Ozercan <sozercan@gmail.com>
Copilot AI balanced review requested due to automatic review settings August 9, 2026 02:23

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds LocalAI v4.8.2 Parakeet speech-to-text support for CPU and CUDA runners.

Changes:

  • Adds Parakeet backend selection, platform validation, and FFmpeg support.
  • Implements secure GGUF downloading, caching, and LocalAI configuration.
  • Adds runner definitions, release matrices, and CPU/GPU transcription tests.
Show a summary per file
File Description
runners/parakeet-cpp-cuda.yaml Defines the CUDA runner.
runners/parakeet-cpp-cpu.yaml Defines the CPU runner.
pkg/utils/const.go Adds the backend constant.
pkg/build/build.go Validates Parakeet platforms and runtimes.
pkg/build/build_test.go Tests validation rules.
pkg/aikit2llb/inference/runner.go Implements runtime model handling.
pkg/aikit2llb/inference/runner_test.go Tests downloading, validation, and caching.
pkg/aikit2llb/inference/parakeet.go Installs FFmpeg.
pkg/aikit2llb/inference/parakeet_test.go Tests dependency installation.
pkg/aikit2llb/inference/convert.go Selects the runtime base.
pkg/aikit2llb/inference/convert_test.go Tests base selection.
pkg/aikit2llb/inference/backend.go Selects and installs backend artifacts.
pkg/aikit2llb/inference/backend_test.go Tests artifact selection and metadata.
.github/workflows/test-docker-runner.yaml Adds CPU transcription CI.
.github/workflows/test-docker-runner-gpu.yaml Adds CUDA transcription CI.
.github/workflows/release-runners.yaml Adds release targets and size budgets.

Review details

Tip

Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

  • Files reviewed: 16/16 changed files
  • Comments generated: 1
  • Review effort level: Balanced

// Python backends retain Ubuntu for their additional system libraries.
selfContainedBackend := len(c.Backends) == 0 ||
(len(c.Backends) == 1 && slices.Contains([]string{utils.BackendLlamaCpp, utils.BackendVLLMCpp}, c.Backends[0]))
(len(c.Backends) == 1 && slices.Contains([]string{utils.BackendLlamaCpp, utils.BackendParakeetCpp, utils.BackendVLLMCpp}, c.Backends[0]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants