From 7467b51281a99f1f435880fca1dbd7fba287006d Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Mon, 5 Oct 2026 23:48:20 +0000 Subject: [PATCH] test(gallery): expect speaker_recognition on the bundles with a voice component The parakeet-cpp backend now answers VoiceEmbed and VoiceVerify, so the pinning test asserts the usecase on the entries that declare it instead of its absence. Document voice_verify_threshold. Assisted-by: Claude Code:claude-sonnet-5-5 --- core/gallery/parakeet_bundle_entries_test.go | 9 +++------ docs/content/features/voice-recognition.md | 3 +++ 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/core/gallery/parakeet_bundle_entries_test.go b/core/gallery/parakeet_bundle_entries_test.go index c09f69e6b..5facc52fc 100644 --- a/core/gallery/parakeet_bundle_entries_test.go +++ b/core/gallery/parakeet_bundle_entries_test.go @@ -65,18 +65,15 @@ var _ = Describe("gallery/index.yaml parakeet-cpp bundle entries", func() { } }) - // speaker_recognition is deliberately absent: that usecase means the model - // answers the /v1/voice/* RPCs (VoiceEmbed, VoiceVerify), which the - // parakeet-cpp backend does not implement, and it picks the default model - // for those routes. Naming registered speakers works from the - // speaker_component option alone, with no usecase. + // speaker_recognition means the model answers the /v1/voice/* RPCs + // (VoiceEmbed, VoiceVerify). The parakeet-cpp backend does since it binds + // parakeet_capi_speaker_embed_pcm, so entries with a speaker encoder declare it. It("declares the usecases and options of the roles each bundle covers", func() { all := entries() for name, w := range want { e := all[name] Expect(e.Overrides["known_usecases"]).To(ConsistOf(toAny(w.usecases)...), name) Expect(e.Overrides["options"]).To(ConsistOf(toAny(w.options)...), name) - Expect(e.Overrides["known_usecases"]).ToNot(ContainElement("speaker_recognition"), name) } }) diff --git a/docs/content/features/voice-recognition.md b/docs/content/features/voice-recognition.md index 625015b32..b9512ae90 100644 --- a/docs/content/features/voice-recognition.md +++ b/docs/content/features/voice-recognition.md @@ -230,6 +230,9 @@ other. Use a distance threshold near 0.5 for this encoder, as for `speaker_model naming below. The response `model` field is the `sha256:` identity of the encoder weights. +`/v1/voice/verify` uses a distance threshold of 0.5 when the request has none. Set the +model option `voice_verify_threshold:` (a distance in (0, 2)) to change it. + Only embedding, identification and plain verification are available. There is no anti-spoofing head, so a verify request with `anti_spoofing: true` is refused, and `/v1/voice/analyze` is not served by parakeet-cpp. The backend needs a libparakeet.so