@elizaos/plugin-local-inference 2.0.0-beta.1 → 2.0.3-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +157 -0
- package/dist/actions/generate-media.d.ts +59 -0
- package/dist/actions/generate-media.d.ts.map +1 -0
- package/dist/actions/identify-speaker.d.ts +23 -0
- package/dist/actions/identify-speaker.d.ts.map +1 -0
- package/dist/actions/transcription-control.d.ts +29 -0
- package/dist/actions/transcription-control.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/environment.d.ts +12 -0
- package/dist/adapters/capacitor-llama/environment.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/index.browser.d.ts +9 -0
- package/dist/adapters/capacitor-llama/index.browser.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/index.d.ts +18 -0
- package/dist/adapters/capacitor-llama/index.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/loader.d.ts +35 -0
- package/dist/adapters/capacitor-llama/loader.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/native-voice-capture.d.ts +70 -0
- package/dist/adapters/capacitor-llama/native-voice-capture.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/structured-output.d.ts +62 -0
- package/dist/adapters/capacitor-llama/structured-output.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/text-streaming.d.ts +24 -0
- package/dist/adapters/capacitor-llama/text-streaming.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/types.d.ts +338 -0
- package/dist/adapters/capacitor-llama/types.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/voice-turn.d.ts +86 -0
- package/dist/adapters/capacitor-llama/voice-turn.d.ts.map +1 -0
- package/dist/backends/apple-foundation.d.ts +56 -0
- package/dist/backends/apple-foundation.d.ts.map +1 -0
- package/dist/index.d.ts +8 -37
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38979 -430
- package/dist/index.js.map +217 -0
- package/dist/local-inference-routes.d.ts +47 -0
- package/dist/local-inference-routes.d.ts.map +1 -0
- package/dist/provider.d.ts +21 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/routes/compat-helpers.d.ts +18 -0
- package/dist/routes/compat-helpers.d.ts.map +1 -0
- package/dist/routes/family-member-route.d.ts +62 -0
- package/dist/routes/family-member-route.d.ts.map +1 -0
- package/dist/routes/index.d.ts +20 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +42040 -0
- package/dist/routes/index.js.map +236 -0
- package/dist/routes/live-diarization-route.d.ts +33 -0
- package/dist/routes/live-diarization-route.d.ts.map +1 -0
- package/dist/routes/local-inference-asr-route.d.ts +4 -0
- package/dist/routes/local-inference-asr-route.d.ts.map +1 -0
- package/dist/routes/local-inference-asr-transcribe.d.ts +20 -0
- package/dist/routes/local-inference-asr-transcribe.d.ts.map +1 -0
- package/dist/routes/local-inference-compat-routes.d.ts +16 -0
- package/dist/routes/local-inference-compat-routes.d.ts.map +1 -0
- package/dist/routes/local-inference-tts-route.d.ts +7 -0
- package/dist/routes/local-inference-tts-route.d.ts.map +1 -0
- package/dist/routes/native-pcm-turn-route.d.ts +3 -0
- package/dist/routes/native-pcm-turn-route.d.ts.map +1 -0
- package/dist/routes/transcript-audio-store.d.ts +15 -0
- package/dist/routes/transcript-audio-store.d.ts.map +1 -0
- package/dist/routes/transcripts-routes.d.ts +44 -0
- package/dist/routes/transcripts-routes.d.ts.map +1 -0
- package/dist/routes/voice-first-run-routes.d.ts +62 -0
- package/dist/routes/voice-first-run-routes.d.ts.map +1 -0
- package/dist/routes/voice-models-routes.d.ts +62 -0
- package/dist/routes/voice-models-routes.d.ts.map +1 -0
- package/dist/routes/voice-profile-plugin-routes.d.ts +19 -0
- package/dist/routes/voice-profile-plugin-routes.d.ts.map +1 -0
- package/dist/routes/voice-profiles-management-routes.d.ts +52 -0
- package/dist/routes/voice-profiles-management-routes.d.ts.map +1 -0
- package/dist/routes/voice-speaker-profile-routes.d.ts +57 -0
- package/dist/routes/voice-speaker-profile-routes.d.ts.map +1 -0
- package/dist/runtime/embedding-manager-support.d.ts +77 -0
- package/dist/runtime/embedding-manager-support.d.ts.map +1 -0
- package/dist/runtime/embedding-presets.d.ts +16 -0
- package/dist/runtime/embedding-presets.d.ts.map +1 -0
- package/dist/runtime/embedding-warmup-policy.d.ts +14 -0
- package/dist/runtime/embedding-warmup-policy.d.ts.map +1 -0
- package/dist/runtime/ensure-local-inference-handler.d.ts +70 -0
- package/dist/runtime/ensure-local-inference-handler.d.ts.map +1 -0
- package/dist/runtime/index.d.ts +15 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +38768 -0
- package/dist/runtime/index.js.map +217 -0
- package/dist/runtime/mobile-local-inference-gate.d.ts +63 -0
- package/dist/runtime/mobile-local-inference-gate.d.ts.map +1 -0
- package/dist/runtime/voice-entity-binding.d.ts +113 -0
- package/dist/runtime/voice-entity-binding.d.ts.map +1 -0
- package/dist/services/active-model.d.ts +310 -0
- package/dist/services/active-model.d.ts.map +1 -0
- package/dist/services/asr-provenance.d.ts +5 -0
- package/dist/services/asr-provenance.d.ts.map +1 -0
- package/dist/services/assignments.d.ts +84 -0
- package/dist/services/assignments.d.ts.map +1 -0
- package/dist/services/backend-selector.d.ts +55 -0
- package/dist/services/backend-selector.d.ts.map +1 -0
- package/dist/services/backend.d.ts +440 -0
- package/dist/services/backend.d.ts.map +1 -0
- package/dist/services/bionic-host-loader.d.ts +67 -0
- package/dist/services/bionic-host-loader.d.ts.map +1 -0
- package/dist/services/bundled-models.d.ts +34 -0
- package/dist/services/bundled-models.d.ts.map +1 -0
- package/dist/services/cache-bridge.d.ts +206 -0
- package/dist/services/cache-bridge.d.ts.map +1 -0
- package/dist/services/catalog.d.ts +10 -0
- package/dist/services/catalog.d.ts.map +1 -0
- package/dist/services/checkpoint-client.d.ts +109 -0
- package/dist/services/checkpoint-client.d.ts.map +1 -0
- package/dist/services/checkpoint-manager.d.ts +217 -0
- package/dist/services/checkpoint-manager.d.ts.map +1 -0
- package/dist/services/cloud-fallback.d.ts +102 -0
- package/dist/services/cloud-fallback.d.ts.map +1 -0
- package/dist/services/context-fit.d.ts +36 -0
- package/dist/services/context-fit.d.ts.map +1 -0
- package/dist/services/conversation-registry.d.ts +142 -0
- package/dist/services/conversation-registry.d.ts.map +1 -0
- package/dist/services/desktop-fused-ffi-backend-runtime.d.ts +111 -0
- package/dist/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
- package/dist/services/device-bridge.d.ts +188 -0
- package/dist/services/device-bridge.d.ts.map +1 -0
- package/dist/services/device-resource-metrics.d.ts +149 -0
- package/dist/services/device-resource-metrics.d.ts.map +1 -0
- package/dist/services/device-tier.d.ts +133 -0
- package/dist/services/device-tier.d.ts.map +1 -0
- package/dist/services/downloader.d.ts +94 -0
- package/dist/services/downloader.d.ts.map +1 -0
- package/dist/services/engine.d.ts +579 -0
- package/dist/services/engine.d.ts.map +1 -0
- package/dist/services/ensure-local-artifacts.d.ts +82 -0
- package/dist/services/ensure-local-artifacts.d.ts.map +1 -0
- package/dist/services/external-scanner.d.ts +17 -0
- package/dist/services/external-scanner.d.ts.map +1 -0
- package/dist/services/ffi-llm-mock.d.ts +90 -0
- package/dist/services/ffi-llm-mock.d.ts.map +1 -0
- package/dist/services/ffi-llm-streaming-abi.d.ts +318 -0
- package/dist/services/ffi-llm-streaming-abi.d.ts.map +1 -0
- package/dist/services/ffi-streaming-backend.d.ts +201 -0
- package/dist/services/ffi-streaming-backend.d.ts.map +1 -0
- package/dist/services/ffi-streaming-runner.d.ts +146 -0
- package/dist/services/ffi-streaming-runner.d.ts.map +1 -0
- package/dist/services/gpu-autotune.d.ts +150 -0
- package/dist/services/gpu-autotune.d.ts.map +1 -0
- package/dist/services/gpu-detect.d.ts +56 -0
- package/dist/services/gpu-detect.d.ts.map +1 -0
- package/dist/services/handler-registry.d.ts +72 -0
- package/dist/services/handler-registry.d.ts.map +1 -0
- package/dist/services/hardware.d.ts +63 -0
- package/dist/services/hardware.d.ts.map +1 -0
- package/dist/services/image-description-runtime.d.ts +14 -0
- package/dist/services/image-description-runtime.d.ts.map +1 -0
- package/dist/services/imagegen/aosp-unavailable.d.ts +134 -0
- package/dist/services/imagegen/aosp-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/backend-selector.d.ts +118 -0
- package/dist/services/imagegen/backend-selector.d.ts.map +1 -0
- package/dist/services/imagegen/coreml-unavailable.d.ts +105 -0
- package/dist/services/imagegen/coreml-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/errors.d.ts +16 -0
- package/dist/services/imagegen/errors.d.ts.map +1 -0
- package/dist/services/imagegen/index.d.ts +58 -0
- package/dist/services/imagegen/index.d.ts.map +1 -0
- package/dist/services/imagegen/mflux.d.ts +74 -0
- package/dist/services/imagegen/mflux.d.ts.map +1 -0
- package/dist/services/imagegen/sd-cpp.d.ts +181 -0
- package/dist/services/imagegen/sd-cpp.d.ts.map +1 -0
- package/dist/services/imagegen/tensorrt-unavailable.d.ts +83 -0
- package/dist/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/types.d.ts +181 -0
- package/dist/services/imagegen/types.d.ts.map +1 -0
- package/dist/services/index.d.ts +31 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +39453 -0
- package/dist/services/index.js.map +227 -0
- package/dist/services/inference-capabilities.d.ts +132 -0
- package/dist/services/inference-capabilities.d.ts.map +1 -0
- package/dist/services/inference-telemetry.d.ts +59 -0
- package/dist/services/inference-telemetry.d.ts.map +1 -0
- package/dist/services/ios-llama-streaming.d.ts +119 -0
- package/dist/services/ios-llama-streaming.d.ts.map +1 -0
- package/dist/services/kv-spill.d.ts +189 -0
- package/dist/services/kv-spill.d.ts.map +1 -0
- package/dist/services/latency-trace.d.ts +346 -0
- package/dist/services/latency-trace.d.ts.map +1 -0
- package/dist/services/lib-target.d.ts +55 -0
- package/dist/services/lib-target.d.ts.map +1 -0
- package/dist/services/live-signals.d.ts +86 -0
- package/dist/services/live-signals.d.ts.map +1 -0
- package/dist/services/llama-server-metrics.d.ts +114 -0
- package/dist/services/llama-server-metrics.d.ts.map +1 -0
- package/dist/services/llm-streaming-binding.d.ts +96 -0
- package/dist/services/llm-streaming-binding.d.ts.map +1 -0
- package/dist/services/load-args.d.ts +82 -0
- package/dist/services/load-args.d.ts.map +1 -0
- package/dist/services/manifest/index.d.ts +4 -0
- package/dist/services/manifest/index.d.ts.map +1 -0
- package/dist/services/manifest/schema.d.ts +903 -0
- package/dist/services/manifest/schema.d.ts.map +1 -0
- package/dist/services/manifest/types.d.ts +32 -0
- package/dist/services/manifest/types.d.ts.map +1 -0
- package/dist/services/manifest/validator.d.ts +66 -0
- package/dist/services/manifest/validator.d.ts.map +1 -0
- package/dist/services/memory-arbiter.d.ts +348 -0
- package/dist/services/memory-arbiter.d.ts.map +1 -0
- package/dist/services/memory-benchmark.d.ts +76 -0
- package/dist/services/memory-benchmark.d.ts.map +1 -0
- package/dist/services/memory-monitor.d.ts +128 -0
- package/dist/services/memory-monitor.d.ts.map +1 -0
- package/dist/services/memory-pressure.d.ts +130 -0
- package/dist/services/memory-pressure.d.ts.map +1 -0
- package/dist/services/mtp-doctor.d.ts +13 -0
- package/dist/services/mtp-doctor.d.ts.map +1 -0
- package/dist/services/network-policy.d.ts +127 -0
- package/dist/services/network-policy.d.ts.map +1 -0
- package/dist/services/paths.d.ts +6 -0
- package/dist/services/paths.d.ts.map +1 -0
- package/dist/services/planner-skeleton.d.ts +124 -0
- package/dist/services/planner-skeleton.d.ts.map +1 -0
- package/dist/services/providers.d.ts +38 -0
- package/dist/services/providers.d.ts.map +1 -0
- package/dist/services/ram-budget.d.ts +110 -0
- package/dist/services/ram-budget.d.ts.map +1 -0
- package/dist/services/readiness.d.ts +9 -0
- package/dist/services/readiness.d.ts.map +1 -0
- package/dist/services/recommendation.d.ts +111 -0
- package/dist/services/recommendation.d.ts.map +1 -0
- package/dist/services/registry.d.ts +33 -0
- package/dist/services/registry.d.ts.map +1 -0
- package/dist/services/router-handler.d.ts +92 -0
- package/dist/services/router-handler.d.ts.map +1 -0
- package/dist/services/routing-policy.d.ts +92 -0
- package/dist/services/routing-policy.d.ts.map +1 -0
- package/dist/services/routing-preferences.d.ts +8 -0
- package/dist/services/routing-preferences.d.ts.map +1 -0
- package/dist/services/runtime-target.d.ts +98 -0
- package/dist/services/runtime-target.d.ts.map +1 -0
- package/dist/services/service.d.ts +128 -0
- package/dist/services/service.d.ts.map +1 -0
- package/dist/services/session-pool.d.ts +72 -0
- package/dist/services/session-pool.d.ts.map +1 -0
- package/dist/services/structured-output/deterministic-repair.d.ts +23 -0
- package/dist/services/structured-output/deterministic-repair.d.ts.map +1 -0
- package/dist/services/structured-output/index.d.ts +2 -0
- package/dist/services/structured-output/index.d.ts.map +1 -0
- package/dist/services/structured-output.d.ts +311 -0
- package/dist/services/structured-output.d.ts.map +1 -0
- package/dist/services/system-memory.d.ts +33 -0
- package/dist/services/system-memory.d.ts.map +1 -0
- package/dist/services/types.d.ts +19 -0
- package/dist/services/types.d.ts.map +1 -0
- package/dist/services/verify-on-device.d.ts +34 -0
- package/dist/services/verify-on-device.d.ts.map +1 -0
- package/dist/services/verify.d.ts +8 -0
- package/dist/services/verify.d.ts.map +1 -0
- package/dist/services/vision/aosp-unavailable.d.ts +115 -0
- package/dist/services/vision/aosp-unavailable.d.ts.map +1 -0
- package/dist/services/vision/capacitor-llama.d.ts +99 -0
- package/dist/services/vision/capacitor-llama.d.ts.map +1 -0
- package/dist/services/vision/cloud-fallback.d.ts +47 -0
- package/dist/services/vision/cloud-fallback.d.ts.map +1 -0
- package/dist/services/vision/hash.d.ts +71 -0
- package/dist/services/vision/hash.d.ts.map +1 -0
- package/dist/services/vision/index.d.ts +95 -0
- package/dist/services/vision/index.d.ts.map +1 -0
- package/dist/services/vision/llama-server.d.ts +73 -0
- package/dist/services/vision/llama-server.d.ts.map +1 -0
- package/dist/services/vision/types.d.ts +162 -0
- package/dist/services/vision/types.d.ts.map +1 -0
- package/dist/services/vision/vast-fallback.d.ts +18 -0
- package/dist/services/vision/vast-fallback.d.ts.map +1 -0
- package/dist/services/vision-embedding-cache.d.ts +98 -0
- package/dist/services/vision-embedding-cache.d.ts.map +1 -0
- package/dist/services/voice/__test-helpers__/fake-ffi.d.ts +27 -0
- package/dist/services/voice/__test-helpers__/fake-ffi.d.ts.map +1 -0
- package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts +66 -0
- package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts.map +1 -0
- package/dist/services/voice/acoustic-speaker-attribution.d.ts +61 -0
- package/dist/services/voice/acoustic-speaker-attribution.d.ts.map +1 -0
- package/dist/services/voice/audio-frame-consumer.d.ts +294 -0
- package/dist/services/voice/audio-frame-consumer.d.ts.map +1 -0
- package/dist/services/voice/barge-in.d.ts +112 -0
- package/dist/services/voice/barge-in.d.ts.map +1 -0
- package/dist/services/voice/cancellation-coordinator.d.ts +127 -0
- package/dist/services/voice/cancellation-coordinator.d.ts.map +1 -0
- package/dist/services/voice/checkpoint-manager.d.ts +199 -0
- package/dist/services/voice/checkpoint-manager.d.ts.map +1 -0
- package/dist/services/voice/checkpoint-policy.d.ts +178 -0
- package/dist/services/voice/checkpoint-policy.d.ts.map +1 -0
- package/dist/services/voice/corpus-augment.d.ts +111 -0
- package/dist/services/voice/corpus-augment.d.ts.map +1 -0
- package/dist/services/voice/corpus-generator.d.ts +134 -0
- package/dist/services/voice/corpus-generator.d.ts.map +1 -0
- package/dist/services/voice/diarization-error-rate.d.ts +40 -0
- package/dist/services/voice/diarization-error-rate.d.ts.map +1 -0
- package/dist/services/voice/e2e-harness.d.ts +297 -0
- package/dist/services/voice/e2e-harness.d.ts.map +1 -0
- package/dist/services/voice/eager-context-builder.d.ts +170 -0
- package/dist/services/voice/eager-context-builder.d.ts.map +1 -0
- package/dist/services/voice/echo-delay.d.ts +67 -0
- package/dist/services/voice/echo-delay.d.ts.map +1 -0
- package/dist/services/voice/echo-metrics.d.ts +7 -0
- package/dist/services/voice/echo-metrics.d.ts.map +1 -0
- package/dist/services/voice/echo-reference-buffer.d.ts +65 -0
- package/dist/services/voice/echo-reference-buffer.d.ts.map +1 -0
- package/dist/services/voice/eliza1-eot-scorer.d.ts +124 -0
- package/dist/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
- package/dist/services/voice/embedding-server.d.ts +37 -0
- package/dist/services/voice/embedding-server.d.ts.map +1 -0
- package/dist/services/voice/embedding.d.ts +132 -0
- package/dist/services/voice/embedding.d.ts.map +1 -0
- package/dist/services/voice/emotion-attribution.d.ts +68 -0
- package/dist/services/voice/emotion-attribution.d.ts.map +1 -0
- package/dist/services/voice/engine-bridge.d.ts +762 -0
- package/dist/services/voice/engine-bridge.d.ts.map +1 -0
- package/dist/services/voice/eot-classifier-ggml.d.ts +179 -0
- package/dist/services/voice/eot-classifier-ggml.d.ts.map +1 -0
- package/dist/services/voice/eot-classifier.d.ts +211 -0
- package/dist/services/voice/eot-classifier.d.ts.map +1 -0
- package/dist/services/voice/errors.d.ts +20 -0
- package/dist/services/voice/errors.d.ts.map +1 -0
- package/dist/services/voice/expressive-tags.d.ts +158 -0
- package/dist/services/voice/expressive-tags.d.ts.map +1 -0
- package/dist/services/voice/ffi-bindings.d.ts +696 -0
- package/dist/services/voice/ffi-bindings.d.ts.map +1 -0
- package/dist/services/voice/first-line-cache.d.ts +181 -0
- package/dist/services/voice/first-line-cache.d.ts.map +1 -0
- package/dist/services/voice/fused-eot-scorer.d.ts +51 -0
- package/dist/services/voice/fused-eot-scorer.d.ts.map +1 -0
- package/dist/services/voice/index.d.ts +96 -0
- package/dist/services/voice/index.d.ts.map +1 -0
- package/dist/services/voice/kokoro/index.d.ts +24 -0
- package/dist/services/voice/kokoro/index.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-backend.d.ts +87 -0
- package/dist/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts +58 -0
- package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts +75 -0
- package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-runtime.d.ts +100 -0
- package/dist/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
- package/dist/services/voice/kokoro/phoneme-stream.d.ts +51 -0
- package/dist/services/voice/kokoro/phoneme-stream.d.ts.map +1 -0
- package/dist/services/voice/kokoro/phonemizer.d.ts +50 -0
- package/dist/services/voice/kokoro/phonemizer.d.ts.map +1 -0
- package/dist/services/voice/kokoro/pick-runtime.d.ts +61 -0
- package/dist/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
- package/dist/services/voice/kokoro/runtime-selection.d.ts +31 -0
- package/dist/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
- package/dist/services/voice/kokoro/types.d.ts +82 -0
- package/dist/services/voice/kokoro/types.d.ts.map +1 -0
- package/dist/services/voice/kokoro/voice-presets.d.ts +23 -0
- package/dist/services/voice/kokoro/voice-presets.d.ts.map +1 -0
- package/dist/services/voice/kokoro/voices.d.ts +30 -0
- package/dist/services/voice/kokoro/voices.d.ts.map +1 -0
- package/dist/services/voice/lifecycle.d.ts +135 -0
- package/dist/services/voice/lifecycle.d.ts.map +1 -0
- package/dist/services/voice/live-diarization-session.d.ts +196 -0
- package/dist/services/voice/live-diarization-session.d.ts.map +1 -0
- package/dist/services/voice/metric-math.d.ts +10 -0
- package/dist/services/voice/metric-math.d.ts.map +1 -0
- package/dist/services/voice/mic-source.d.ts +136 -0
- package/dist/services/voice/mic-source.d.ts.map +1 -0
- package/dist/services/voice/nlms-echo-canceller.d.ts +137 -0
- package/dist/services/voice/nlms-echo-canceller.d.ts.map +1 -0
- package/dist/services/voice/optimistic-policy.d.ts +109 -0
- package/dist/services/voice/optimistic-policy.d.ts.map +1 -0
- package/dist/services/voice/optimistic-rollback.d.ts +151 -0
- package/dist/services/voice/optimistic-rollback.d.ts.map +1 -0
- package/dist/services/voice/partial-stabilizer.d.ts +73 -0
- package/dist/services/voice/partial-stabilizer.d.ts.map +1 -0
- package/dist/services/voice/phoneme-tokenizer.d.ts +49 -0
- package/dist/services/voice/phoneme-tokenizer.d.ts.map +1 -0
- package/dist/services/voice/phrase-cache.d.ts +76 -0
- package/dist/services/voice/phrase-cache.d.ts.map +1 -0
- package/dist/services/voice/phrase-chunker.d.ts +62 -0
- package/dist/services/voice/phrase-chunker.d.ts.map +1 -0
- package/dist/services/voice/pipeline-impls.d.ts +151 -0
- package/dist/services/voice/pipeline-impls.d.ts.map +1 -0
- package/dist/services/voice/pipeline.d.ts +216 -0
- package/dist/services/voice/pipeline.d.ts.map +1 -0
- package/dist/services/voice/prefill-client.d.ts +123 -0
- package/dist/services/voice/prefill-client.d.ts.map +1 -0
- package/dist/services/voice/prefix-preserving-queue.d.ts +113 -0
- package/dist/services/voice/prefix-preserving-queue.d.ts.map +1 -0
- package/dist/services/voice/profile-store.d.ts +248 -0
- package/dist/services/voice/profile-store.d.ts.map +1 -0
- package/dist/services/voice/ring-buffer.d.ts +40 -0
- package/dist/services/voice/ring-buffer.d.ts.map +1 -0
- package/dist/services/voice/rollback-queue.d.ts +24 -0
- package/dist/services/voice/rollback-queue.d.ts.map +1 -0
- package/dist/services/voice/samantha-preset-placeholder.d.ts +67 -0
- package/dist/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
- package/dist/services/voice/samantha-preset-regenerator.d.ts +87 -0
- package/dist/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
- package/dist/services/voice/scheduler.d.ts +146 -0
- package/dist/services/voice/scheduler.d.ts.map +1 -0
- package/dist/services/voice/self-voice-imprint.d.ts +33 -0
- package/dist/services/voice/self-voice-imprint.d.ts.map +1 -0
- package/dist/services/voice/shared-resources.d.ts +204 -0
- package/dist/services/voice/shared-resources.d.ts.map +1 -0
- package/dist/services/voice/speaker/attribution-pipeline.d.ts +74 -0
- package/dist/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
- package/dist/services/voice/speaker/diarizer-fused.d.ts +59 -0
- package/dist/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
- package/dist/services/voice/speaker/diarizer.d.ts +75 -0
- package/dist/services/voice/speaker/diarizer.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder-fused.d.ts +60 -0
- package/dist/services/voice/speaker/encoder-fused.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder-ggml.d.ts +33 -0
- package/dist/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder.d.ts +37 -0
- package/dist/services/voice/speaker/encoder.d.ts.map +1 -0
- package/dist/services/voice/speaker-imprint.d.ts +83 -0
- package/dist/services/voice/speaker-imprint.d.ts.map +1 -0
- package/dist/services/voice/speaker-preset-cache.d.ts +77 -0
- package/dist/services/voice/speaker-preset-cache.d.ts.map +1 -0
- package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts +160 -0
- package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts.map +1 -0
- package/dist/services/voice/system-audio-sink.d.ts +73 -0
- package/dist/services/voice/system-audio-sink.d.ts.map +1 -0
- package/dist/services/voice/transcriber.d.ts +244 -0
- package/dist/services/voice/transcriber.d.ts.map +1 -0
- package/dist/services/voice/transcript-knowledge.d.ts +37 -0
- package/dist/services/voice/transcript-knowledge.d.ts.map +1 -0
- package/dist/services/voice/transcript-service.d.ts +60 -0
- package/dist/services/voice/transcript-service.d.ts.map +1 -0
- package/dist/services/voice/transcript-store.d.ts +64 -0
- package/dist/services/voice/transcript-store.d.ts.map +1 -0
- package/dist/services/voice/turn-controller.d.ts +183 -0
- package/dist/services/voice/turn-controller.d.ts.map +1 -0
- package/dist/services/voice/types.d.ts +643 -0
- package/dist/services/voice/types.d.ts.map +1 -0
- package/dist/services/voice/vad.d.ts +283 -0
- package/dist/services/voice/vad.d.ts.map +1 -0
- package/dist/services/voice/voice-budget.d.ts +241 -0
- package/dist/services/voice/voice-budget.d.ts.map +1 -0
- package/dist/services/voice/voice-emotion-classifier.d.ts +95 -0
- package/dist/services/voice/voice-emotion-classifier.d.ts.map +1 -0
- package/dist/services/voice/voice-preload-predictor.d.ts +76 -0
- package/dist/services/voice/voice-preload-predictor.d.ts.map +1 -0
- package/dist/services/voice/voice-preset-format.d.ts +158 -0
- package/dist/services/voice/voice-preset-format.d.ts.map +1 -0
- package/dist/services/voice/voice-profile-artifact.d.ts +116 -0
- package/dist/services/voice/voice-profile-artifact.d.ts.map +1 -0
- package/dist/services/voice/voice-profile-routes.d.ts +83 -0
- package/dist/services/voice/voice-profile-routes.d.ts.map +1 -0
- package/dist/services/voice/voice-scenario.d.ts +131 -0
- package/dist/services/voice/voice-scenario.d.ts.map +1 -0
- package/dist/services/voice/voice-state-machine.d.ts +364 -0
- package/dist/services/voice/voice-state-machine.d.ts.map +1 -0
- package/dist/services/voice/voice-workbench-report.d.ts +117 -0
- package/dist/services/voice/voice-workbench-report.d.ts.map +1 -0
- package/dist/services/voice/wake-word-ggml.d.ts +100 -0
- package/dist/services/voice/wake-word-ggml.d.ts.map +1 -0
- package/dist/services/voice/wake-word.d.ts +255 -0
- package/dist/services/voice/wake-word.d.ts.map +1 -0
- package/dist/services/voice/wav-codec.d.ts +11 -0
- package/dist/services/voice/wav-codec.d.ts.map +1 -0
- package/dist/services/voice/workbench-entrypoint.d.ts +42 -0
- package/dist/services/voice/workbench-entrypoint.d.ts.map +1 -0
- package/dist/services/voice/workbench-headless-runner.d.ts +102 -0
- package/dist/services/voice/workbench-headless-runner.d.ts.map +1 -0
- package/dist/services/voice/workbench-logic-services.d.ts +36 -0
- package/dist/services/voice/workbench-logic-services.d.ts.map +1 -0
- package/dist/services/voice/workbench-real-services.d.ts +17 -0
- package/dist/services/voice/workbench-real-services.d.ts.map +1 -0
- package/dist/services/voice/workbench-scenarios.d.ts +24 -0
- package/dist/services/voice/workbench-scenarios.d.ts.map +1 -0
- package/dist/services/voice/wrap-with-first-line-cache.d.ts +70 -0
- package/dist/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
- package/dist/services/voice-model-updater.d.ts +240 -0
- package/dist/services/voice-model-updater.d.ts.map +1 -0
- package/dist/services/voice-prewarm.d.ts +3 -0
- package/dist/services/voice-prewarm.d.ts.map +1 -0
- package/dist/voice-workbench.d.ts +18 -0
- package/dist/voice-workbench.d.ts.map +1 -0
- package/dist/voice-workbench.js +5259 -0
- package/dist/voice-workbench.js.map +34 -0
- package/package.json +101 -15
- package/registry-entry.json +137 -0
- package/src/actions/generate-media.ts +647 -0
- package/src/actions/identify-speaker.ts +171 -0
- package/src/actions/transcription-control.test.ts +100 -0
- package/src/actions/transcription-control.ts +127 -0
- package/src/adapters/capacitor-llama/__tests__/compat-behavior.test.ts +218 -0
- package/src/adapters/capacitor-llama/__tests__/index.test.ts +68 -0
- package/src/adapters/capacitor-llama/__tests__/structured-output.test.ts +215 -0
- package/src/adapters/capacitor-llama/__tests__/text-streaming.test.ts +174 -0
- package/src/adapters/capacitor-llama/__tests__/voice-turn.test.ts +293 -0
- package/src/adapters/capacitor-llama/environment.ts +71 -0
- package/src/adapters/capacitor-llama/index.browser.ts +83 -0
- package/src/adapters/capacitor-llama/index.ts +831 -0
- package/src/adapters/capacitor-llama/loader.ts +109 -0
- package/src/adapters/capacitor-llama/native-voice-capture.ts +140 -0
- package/src/adapters/capacitor-llama/structured-output.ts +165 -0
- package/src/adapters/capacitor-llama/text-streaming.ts +227 -0
- package/src/adapters/capacitor-llama/types.ts +374 -0
- package/src/adapters/capacitor-llama/voice-turn.ts +178 -0
- package/src/backends/apple-foundation.ts +127 -0
- package/src/index.ts +62 -0
- package/src/local-inference-routes.test.ts +390 -0
- package/src/local-inference-routes.ts +1625 -0
- package/src/provider.ts +1111 -0
- package/src/routes/compat-helpers.ts +275 -0
- package/src/routes/family-member-route.ts +353 -0
- package/src/routes/index.ts +61 -0
- package/src/routes/live-diarization-route.test.ts +347 -0
- package/src/routes/live-diarization-route.ts +198 -0
- package/src/routes/local-inference-asr-route.test.ts +246 -0
- package/src/routes/local-inference-asr-route.ts +166 -0
- package/src/routes/local-inference-asr-transcribe.test.ts +118 -0
- package/src/routes/local-inference-asr-transcribe.ts +97 -0
- package/src/routes/local-inference-compat-routes.test.ts +485 -0
- package/src/routes/local-inference-compat-routes.ts +775 -0
- package/src/routes/local-inference-tts-route.test.ts +179 -0
- package/src/routes/local-inference-tts-route.ts +230 -0
- package/src/routes/native-pcm-turn-route.test.ts +136 -0
- package/src/routes/native-pcm-turn-route.ts +121 -0
- package/src/routes/transcript-audio-store.ts +27 -0
- package/src/routes/transcripts-routes.test.ts +195 -0
- package/src/routes/transcripts-routes.ts +191 -0
- package/src/routes/voice-first-run-routes.ts +524 -0
- package/src/routes/voice-models-routes.ts +554 -0
- package/src/routes/voice-profile-plugin-routes.ts +138 -0
- package/src/routes/voice-profiles-management-routes.ts +476 -0
- package/src/routes/voice-speaker-profile-routes.ts +199 -0
- package/src/runtime/aosp-llama-loader-selection.test.ts +80 -0
- package/src/runtime/bionic-wire-encoding.test.ts +147 -0
- package/src/runtime/capacitor-llama.d.ts +25 -0
- package/src/runtime/embedding-manager-support.ts +497 -0
- package/src/runtime/embedding-presets.ts +81 -0
- package/src/runtime/embedding-warmup-policy.test.ts +53 -0
- package/src/runtime/embedding-warmup-policy.ts +48 -0
- package/src/runtime/ensure-local-inference-handler.test.ts +726 -0
- package/src/runtime/ensure-local-inference-handler.ts +1640 -0
- package/src/runtime/index.ts +36 -0
- package/src/runtime/mobile-local-inference-gate.test.ts +152 -0
- package/src/runtime/mobile-local-inference-gate.ts +99 -0
- package/src/runtime/voice-entity-binding.transcript.test.ts +98 -0
- package/src/runtime/voice-entity-binding.ts +368 -0
- package/src/runtime/voice-speaker-entity-contract.test.ts +149 -0
- package/src/services/README.md +71 -0
- package/src/services/__tests__/backend-selector.precedence.test.ts +333 -0
- package/src/services/__tests__/backend-selector.test.ts +101 -0
- package/src/services/__tests__/checkpoint-manager.test.ts +376 -0
- package/src/services/__tests__/gpu-autotune.test.ts +400 -0
- package/src/services/__tests__/llm-streaming-binding.test.ts +85 -0
- package/src/services/__tests__/planner-grammar.test.ts +372 -0
- package/src/services/__tests__/runtime-target.test.ts +176 -0
- package/src/services/active-model-context-fit.test.ts +125 -0
- package/src/services/active-model-switch-rollback.test.ts +183 -0
- package/src/services/active-model.ts +1416 -0
- package/src/services/asr-provenance.ts +68 -0
- package/src/services/assignment-validation.test.ts +118 -0
- package/src/services/assignments.test.ts +106 -0
- package/src/services/assignments.ts +278 -0
- package/src/services/backend-selector.ts +95 -0
- package/src/services/backend.test.ts +84 -0
- package/src/services/backend.ts +791 -0
- package/src/services/bionic-host-loader.test.ts +226 -0
- package/src/services/bionic-host-loader.ts +252 -0
- package/src/services/bundled-models.ts +129 -0
- package/src/services/cache-bridge.test.ts +516 -0
- package/src/services/cache-bridge.ts +423 -0
- package/src/services/catalog.test.ts +259 -0
- package/src/services/catalog.ts +33 -0
- package/src/services/checkpoint-client.ts +258 -0
- package/src/services/checkpoint-manager.ts +474 -0
- package/src/services/cloud-fallback.ts +230 -0
- package/src/services/context-fit.test.ts +121 -0
- package/src/services/context-fit.ts +113 -0
- package/src/services/conversation-registry.test.ts +235 -0
- package/src/services/conversation-registry.ts +264 -0
- package/src/services/desktop-fused-ffi-backend-runtime.ts +431 -0
- package/src/services/device-bridge.ts +1237 -0
- package/src/services/device-resource-metrics.test.ts +98 -0
- package/src/services/device-resource-metrics.ts +346 -0
- package/src/services/device-tier.test.ts +458 -0
- package/src/services/device-tier.ts +502 -0
- package/src/services/downloader.test.ts +888 -0
- package/src/services/downloader.ts +1039 -0
- package/src/services/engine-direct-bundle.test.ts +90 -0
- package/src/services/engine-streaming.test.ts +80 -0
- package/src/services/engine.ts +2096 -0
- package/src/services/ensure-local-artifacts.integration.test.ts +273 -0
- package/src/services/ensure-local-artifacts.test.ts +368 -0
- package/src/services/ensure-local-artifacts.ts +351 -0
- package/src/services/external-scanner.ts +312 -0
- package/src/services/ffi-llm-mock.ts +354 -0
- package/src/services/ffi-llm-streaming-abi.ts +445 -0
- package/src/services/ffi-streaming-backend.ts +418 -0
- package/src/services/ffi-streaming-runner.test.ts +220 -0
- package/src/services/ffi-streaming-runner.ts +407 -0
- package/src/services/ffi-unload-ordering.test.ts +166 -0
- package/src/services/fused-eliza1-no-regression.test.ts +144 -0
- package/src/services/gpu-autotune.ts +534 -0
- package/src/services/gpu-detect.ts +139 -0
- package/src/services/handler-registry.ts +240 -0
- package/src/services/hardware.test.ts +236 -0
- package/src/services/hardware.ts +438 -0
- package/src/services/image-description-runtime.test.ts +61 -0
- package/src/services/image-description-runtime.ts +118 -0
- package/src/services/imagegen/aosp-unavailable.ts +229 -0
- package/src/services/imagegen/backend-selector.test.ts +190 -0
- package/src/services/imagegen/backend-selector.ts +277 -0
- package/src/services/imagegen/coreml-unavailable.ts +237 -0
- package/src/services/imagegen/errors.ts +40 -0
- package/src/services/imagegen/index.ts +144 -0
- package/src/services/imagegen/mflux.ts +313 -0
- package/src/services/imagegen/sd-cpp.ts +715 -0
- package/src/services/imagegen/tensorrt-unavailable.ts +295 -0
- package/src/services/imagegen/types.ts +193 -0
- package/src/services/index.ts +229 -0
- package/src/services/inference-capabilities.test.ts +75 -0
- package/src/services/inference-capabilities.ts +204 -0
- package/src/services/inference-telemetry.ts +143 -0
- package/src/services/ios-llama-streaming.ts +248 -0
- package/src/services/kv-spill.test.ts +222 -0
- package/src/services/kv-spill.ts +357 -0
- package/src/services/latency-trace.test.ts +266 -0
- package/src/services/latency-trace.ts +844 -0
- package/src/services/lib-target.test.ts +145 -0
- package/src/services/lib-target.ts +102 -0
- package/src/services/live-signals.test.ts +132 -0
- package/src/services/live-signals.ts +177 -0
- package/src/services/llama-server-metrics.test.ts +168 -0
- package/src/services/llama-server-metrics.ts +304 -0
- package/src/services/llm-streaming-binding.ts +136 -0
- package/src/services/load-args.ts +81 -0
- package/src/services/manifest/eliza-1.manifest.v1.json +790 -0
- package/src/services/manifest/index.ts +72 -0
- package/src/services/manifest/manifest.test.ts +791 -0
- package/src/services/manifest/schema.ts +761 -0
- package/src/services/manifest/types.ts +61 -0
- package/src/services/manifest/validator.ts +633 -0
- package/src/services/memory-arbiter.test.ts +558 -0
- package/src/services/memory-arbiter.ts +991 -0
- package/src/services/memory-benchmark.test.ts +91 -0
- package/src/services/memory-benchmark.ts +354 -0
- package/src/services/memory-monitor.test.ts +232 -0
- package/src/services/memory-monitor.ts +309 -0
- package/src/services/memory-pressure.ts +414 -0
- package/src/services/mtp-doctor.ts +86 -0
- package/src/services/network-policy.ts +346 -0
- package/src/services/paths.ts +25 -0
- package/src/services/planner-skeleton.ts +175 -0
- package/src/services/providers.ts +507 -0
- package/src/services/ram-budget-cache.test.ts +164 -0
- package/src/services/ram-budget.ts +309 -0
- package/src/services/readiness.test.ts +87 -0
- package/src/services/readiness.ts +238 -0
- package/src/services/recommendation.test.ts +216 -0
- package/src/services/recommendation.ts +671 -0
- package/src/services/registry.ts +157 -0
- package/src/services/required-kernels-gate.test.ts +64 -0
- package/src/services/router-handler.test.ts +45 -0
- package/src/services/router-handler.ts +426 -0
- package/src/services/routing-policy.test.ts +352 -0
- package/src/services/routing-policy.ts +367 -0
- package/src/services/routing-preferences.ts +17 -0
- package/src/services/runtime-target.ts +154 -0
- package/src/services/service.test.ts +223 -0
- package/src/services/service.ts +750 -0
- package/src/services/session-pool.ts +153 -0
- package/src/services/structured-output/deterministic-repair.test.ts +169 -0
- package/src/services/structured-output/deterministic-repair.ts +443 -0
- package/src/services/structured-output/index.ts +4 -0
- package/src/services/structured-output.test.ts +483 -0
- package/src/services/structured-output.ts +712 -0
- package/src/services/system-memory.test.ts +47 -0
- package/src/services/system-memory.ts +67 -0
- package/src/services/transcription-priority.test.ts +211 -0
- package/src/services/types.ts +59 -0
- package/src/services/verify-on-device.test.ts +87 -0
- package/src/services/verify-on-device.ts +127 -0
- package/src/services/verify.ts +13 -0
- package/src/services/vision/aosp-unavailable.ts +163 -0
- package/src/services/vision/capacitor-llama.ts +255 -0
- package/src/services/vision/cloud-fallback.test.ts +243 -0
- package/src/services/vision/cloud-fallback.ts +268 -0
- package/src/services/vision/fallback-chain.test.ts +86 -0
- package/src/services/vision/hash.ts +157 -0
- package/src/services/vision/index.ts +251 -0
- package/src/services/vision/llama-server.ts +177 -0
- package/src/services/vision/types.ts +163 -0
- package/src/services/vision/vast-fallback.ts +127 -0
- package/src/services/vision-embedding-cache.ts +189 -0
- package/src/services/voice/VOICE_WORKBENCH.md +133 -0
- package/src/services/voice/__fixtures__/voice-workbench-logic-baseline.json +180 -0
- package/src/services/voice/__test-helpers__/fake-ffi.ts +94 -0
- package/src/services/voice/__test-helpers__/synthetic-speech.ts +194 -0
- package/src/services/voice/__tests__/checkpoint-manager.test.ts +241 -0
- package/src/services/voice/__tests__/checkpoint-policy.test.ts +270 -0
- package/src/services/voice/__tests__/eager-context-builder.test.ts +257 -0
- package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +288 -0
- package/src/services/voice/__tests__/eot-classifier.test.ts +431 -0
- package/src/services/voice/__tests__/optimistic-rollback.test.ts +312 -0
- package/src/services/voice/__tests__/prefill-client.test.ts +266 -0
- package/src/services/voice/__tests__/prefix-preserving-queue.test.ts +208 -0
- package/src/services/voice/__tests__/streaming-asr.test.ts +450 -0
- package/src/services/voice/__tests__/streaming-transcriber.test.ts +339 -0
- package/src/services/voice/__tests__/turn-detector-resolver.test.ts +195 -0
- package/src/services/voice/__tests__/voice-state-machine-prefill.test.ts +275 -0
- package/src/services/voice/__tests__/voice-state-machine.test.ts +354 -0
- package/src/services/voice/acoustic-speaker-attribution.test.ts +165 -0
- package/src/services/voice/acoustic-speaker-attribution.ts +336 -0
- package/src/services/voice/asr-timed.real.test.ts +139 -0
- package/src/services/voice/audio-frame-consumer.test.ts +669 -0
- package/src/services/voice/audio-frame-consumer.ts +651 -0
- package/src/services/voice/barge-in.test.ts +244 -0
- package/src/services/voice/barge-in.ts +335 -0
- package/src/services/voice/cancellation-coordinator.test.ts +196 -0
- package/src/services/voice/cancellation-coordinator.ts +269 -0
- package/src/services/voice/checkpoint-manager.ts +401 -0
- package/src/services/voice/checkpoint-policy.ts +336 -0
- package/src/services/voice/composite-eot-classifier.test.ts +59 -0
- package/src/services/voice/corpus-augment.test.ts +276 -0
- package/src/services/voice/corpus-augment.ts +451 -0
- package/src/services/voice/corpus-generator.test.ts +201 -0
- package/src/services/voice/corpus-generator.ts +413 -0
- package/src/services/voice/diarization-error-rate.greedy.test.ts +140 -0
- package/src/services/voice/diarization-error-rate.test.ts +100 -0
- package/src/services/voice/diarization-error-rate.ts +249 -0
- package/src/services/voice/e2e-harness.der.test.ts +94 -0
- package/src/services/voice/e2e-harness.respond-eot-entity.test.ts +277 -0
- package/src/services/voice/e2e-harness.security-echo.test.ts +103 -0
- package/src/services/voice/e2e-harness.test.ts +182 -0
- package/src/services/voice/e2e-harness.ts +902 -0
- package/src/services/voice/eager-context-builder.ts +262 -0
- package/src/services/voice/echo-delay.test.ts +118 -0
- package/src/services/voice/echo-delay.ts +135 -0
- package/src/services/voice/echo-metrics.test.ts +17 -0
- package/src/services/voice/echo-metrics.ts +20 -0
- package/src/services/voice/echo-reference-buffer.test.ts +86 -0
- package/src/services/voice/echo-reference-buffer.ts +165 -0
- package/src/services/voice/eliza1-eot-scorer.ts +242 -0
- package/src/services/voice/embedding-server.ts +200 -0
- package/src/services/voice/embedding.test.ts +131 -0
- package/src/services/voice/embedding.ts +242 -0
- package/src/services/voice/emotion-attribution.test.ts +129 -0
- package/src/services/voice/emotion-attribution.ts +361 -0
- package/src/services/voice/engine-bridge-cancellation.test.ts +422 -0
- package/src/services/voice/engine-bridge-transcript-join.test.ts +278 -0
- package/src/services/voice/engine-bridge.test.ts +384 -0
- package/src/services/voice/engine-bridge.ts +2343 -0
- package/src/services/voice/eot-classifier-ggml.ts +569 -0
- package/src/services/voice/eot-classifier.test.ts +98 -0
- package/src/services/voice/eot-classifier.ts +422 -0
- package/src/services/voice/errors.ts +34 -0
- package/src/services/voice/expressive-tags.asr.test.ts +77 -0
- package/src/services/voice/expressive-tags.test.ts +102 -0
- package/src/services/voice/expressive-tags.ts +405 -0
- package/src/services/voice/ffi-bindings.test.ts +735 -0
- package/src/services/voice/ffi-bindings.ts +3387 -0
- package/src/services/voice/first-line-cache.ts +725 -0
- package/src/services/voice/fused-eot-scorer.ts +139 -0
- package/src/services/voice/index.ts +502 -0
- package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +262 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +236 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.test.ts +60 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-discovery.test.ts +277 -0
- package/src/services/voice/kokoro/__tests__/kokoro-ffi-runtime.test.ts +235 -0
- package/src/services/voice/kokoro/__tests__/kokoro-runtime.test.ts +95 -0
- package/src/services/voice/kokoro/__tests__/phonemizer.test.ts +53 -0
- package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +67 -0
- package/src/services/voice/kokoro/__tests__/voices.test.ts +57 -0
- package/src/services/voice/kokoro/index.ts +79 -0
- package/src/services/voice/kokoro/kokoro-backend.ts +223 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.ts +177 -0
- package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +233 -0
- package/src/services/voice/kokoro/kokoro-runtime.ts +170 -0
- package/src/services/voice/kokoro/phoneme-stream.ts +123 -0
- package/src/services/voice/kokoro/phonemizer.ts +344 -0
- package/src/services/voice/kokoro/pick-runtime.test.ts +91 -0
- package/src/services/voice/kokoro/pick-runtime.ts +130 -0
- package/src/services/voice/kokoro/runtime-selection.ts +64 -0
- package/src/services/voice/kokoro/types.ts +95 -0
- package/src/services/voice/kokoro/voice-presets.ts +129 -0
- package/src/services/voice/kokoro/voices.ts +64 -0
- package/src/services/voice/lifecycle.test.ts +315 -0
- package/src/services/voice/lifecycle.ts +301 -0
- package/src/services/voice/live-diarization-session.echo.test.ts +232 -0
- package/src/services/voice/live-diarization-session.ts +622 -0
- package/src/services/voice/metric-math.test.ts +61 -0
- package/src/services/voice/metric-math.ts +25 -0
- package/src/services/voice/mic-source.test.ts +210 -0
- package/src/services/voice/mic-source.ts +503 -0
- package/src/services/voice/nlms-echo-canceller.test.ts +244 -0
- package/src/services/voice/nlms-echo-canceller.ts +317 -0
- package/src/services/voice/optimistic-policy.power-source.test.ts +36 -0
- package/src/services/voice/optimistic-policy.test.ts +101 -0
- package/src/services/voice/optimistic-policy.ts +192 -0
- package/src/services/voice/optimistic-rollback.ts +343 -0
- package/src/services/voice/partial-stabilizer.test.ts +68 -0
- package/src/services/voice/partial-stabilizer.ts +140 -0
- package/src/services/voice/phoneme-tokenizer.ts +158 -0
- package/src/services/voice/phrase-cache.test.ts +242 -0
- package/src/services/voice/phrase-cache.ts +186 -0
- package/src/services/voice/phrase-chunker.test.ts +239 -0
- package/src/services/voice/phrase-chunker.ts +281 -0
- package/src/services/voice/pipeline-impls.l6.test.ts +110 -0
- package/src/services/voice/pipeline-impls.test.ts +292 -0
- package/src/services/voice/pipeline-impls.ts +315 -0
- package/src/services/voice/pipeline.ts +504 -0
- package/src/services/voice/prefill-client.ts +316 -0
- package/src/services/voice/prefix-preserving-queue.ts +162 -0
- package/src/services/voice/profile-store.ts +887 -0
- package/src/services/voice/real-audio-decode.test.ts +148 -0
- package/src/services/voice/research/VOICE_8785_ASSESSMENT.md +141 -0
- package/src/services/voice/research/VOICE_PIPELINE_RESEARCH_2026.md +117 -0
- package/src/services/voice/research/VOICE_VALIDATION_RUNBOOK.md +135 -0
- package/src/services/voice/ring-buffer.test.ts +129 -0
- package/src/services/voice/ring-buffer.ts +123 -0
- package/src/services/voice/rollback-queue.ts +74 -0
- package/src/services/voice/samantha-preset-placeholder.test.ts +97 -0
- package/src/services/voice/samantha-preset-placeholder.ts +148 -0
- package/src/services/voice/samantha-preset-regenerator.ts +393 -0
- package/src/services/voice/samantha-preset-regenerator.wav.test.ts +90 -0
- package/src/services/voice/scheduler.t2.test.ts +141 -0
- package/src/services/voice/scheduler.ts +927 -0
- package/src/services/voice/self-voice-imprint.test.ts +59 -0
- package/src/services/voice/self-voice-imprint.ts +102 -0
- package/src/services/voice/shared-resources.ts +343 -0
- package/src/services/voice/speaker/attribution-pipeline.test.ts +221 -0
- package/src/services/voice/speaker/attribution-pipeline.ts +449 -0
- package/src/services/voice/speaker/diarizer-fused.real.test.ts +100 -0
- package/src/services/voice/speaker/diarizer-fused.ts +154 -0
- package/src/services/voice/speaker/diarizer.ts +218 -0
- package/src/services/voice/speaker/encoder-fused.real.test.ts +113 -0
- package/src/services/voice/speaker/encoder-fused.ts +138 -0
- package/src/services/voice/speaker/encoder-ggml.test.ts +59 -0
- package/src/services/voice/speaker/encoder-ggml.ts +79 -0
- package/src/services/voice/speaker/encoder.ts +105 -0
- package/src/services/voice/speaker-imprint.test.ts +185 -0
- package/src/services/voice/speaker-imprint.ts +312 -0
- package/src/services/voice/speaker-preset-cache.test.ts +154 -0
- package/src/services/voice/speaker-preset-cache.ts +195 -0
- package/src/services/voice/streaming-asr/streaming-pipeline-adapter.ts +292 -0
- package/src/services/voice/system-audio-sink.test.ts +29 -0
- package/src/services/voice/system-audio-sink.ts +366 -0
- package/src/services/voice/transcriber.asr-backend.test.ts +76 -0
- package/src/services/voice/transcriber.test.ts +392 -0
- package/src/services/voice/transcriber.ts +704 -0
- package/src/services/voice/transcript-knowledge.test.ts +68 -0
- package/src/services/voice/transcript-knowledge.ts +75 -0
- package/src/services/voice/transcript-service.test.ts +195 -0
- package/src/services/voice/transcript-service.ts +205 -0
- package/src/services/voice/transcript-store.test.ts +189 -0
- package/src/services/voice/transcript-store.ts +164 -0
- package/src/services/voice/turn-controller.test.ts +575 -0
- package/src/services/voice/turn-controller.ts +596 -0
- package/src/services/voice/types.ts +699 -0
- package/src/services/voice/vad.test.ts +498 -0
- package/src/services/voice/vad.ts +832 -0
- package/src/services/voice/vad.v1-v4.test.ts +222 -0
- package/src/services/voice/voice-budget.test.ts +415 -0
- package/src/services/voice/voice-budget.ts +635 -0
- package/src/services/voice/voice-duet.test.ts +375 -0
- package/src/services/voice/voice-emotion-classifier.test.ts +210 -0
- package/src/services/voice/voice-emotion-classifier.ts +273 -0
- package/src/services/voice/voice-hardening.fuzz.test.ts +116 -0
- package/src/services/voice/voice-preload-predictor.test.ts +130 -0
- package/src/services/voice/voice-preload-predictor.ts +113 -0
- package/src/services/voice/voice-preset-format.fuzz.test.ts +89 -0
- package/src/services/voice/voice-preset-format.test.ts +75 -0
- package/src/services/voice/voice-preset-format.ts +713 -0
- package/src/services/voice/voice-preset-generator.test.ts +89 -0
- package/src/services/voice/voice-profile-artifact.test.ts +138 -0
- package/src/services/voice/voice-profile-artifact.ts +518 -0
- package/src/services/voice/voice-profile-routes.test.ts +429 -0
- package/src/services/voice/voice-profile-routes.ts +425 -0
- package/src/services/voice/voice-scenario.test.ts +159 -0
- package/src/services/voice/voice-scenario.ts +280 -0
- package/src/services/voice/voice-scenario.turn-helpers.test.ts +77 -0
- package/src/services/voice/voice-state-machine.ts +727 -0
- package/src/services/voice/voice-workbench-report.test.ts +168 -0
- package/src/services/voice/voice-workbench-report.ts +367 -0
- package/src/services/voice/voice-workbench.test.ts +158 -0
- package/src/services/voice/voice.test.ts +1070 -0
- package/src/services/voice/wake-word-ggml.ts +319 -0
- package/src/services/voice/wake-word.test.ts +298 -0
- package/src/services/voice/wake-word.ts +554 -0
- package/src/services/voice/wav-codec.fuzz.test.ts +59 -0
- package/src/services/voice/wav-codec.test.ts +32 -0
- package/src/services/voice/wav-codec.ts +101 -0
- package/src/services/voice/workbench-entrypoint.test.ts +55 -0
- package/src/services/voice/workbench-entrypoint.ts +88 -0
- package/src/services/voice/workbench-headless-runner.test.ts +162 -0
- package/src/services/voice/workbench-headless-runner.ts +396 -0
- package/src/services/voice/workbench-logic-services.test.ts +225 -0
- package/src/services/voice/workbench-logic-services.ts +184 -0
- package/src/services/voice/workbench-real-services.ts +629 -0
- package/src/services/voice/workbench-scenarios.ts +407 -0
- package/src/services/voice/wrap-with-first-line-cache.ts +267 -0
- package/src/services/voice-model-updater.ts +724 -0
- package/src/services/voice-prewarm.ts +51 -0
- package/src/voice-workbench.ts +71 -0
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Voice next-stage preload predictor (#8809 C5).
|
|
3
|
+
*
|
|
4
|
+
* A voice turn runs its stages sequentially on a memory-constrained device:
|
|
5
|
+
* ASR → text-response → TTS (AGENTS.md §4). The text-response model is the one
|
|
6
|
+
* the {@link MemoryArbiter} owns on the mobile / Capacitor path (where text
|
|
7
|
+
* generation routes through `arbiter` rather than the desktop direct-engine
|
|
8
|
+
* dispatcher). That model is NOT resident while ASR is running — so the first
|
|
9
|
+
* text request of the turn pays the full cold load on the critical path,
|
|
10
|
+
* stalling time-to-first-token right when the user has stopped speaking.
|
|
11
|
+
*
|
|
12
|
+
* This predictor closes that gap with a single, deterministic prediction: the
|
|
13
|
+
* instant ASR finishes, the next arbiter-managed stage is the `"text"` model,
|
|
14
|
+
* so warm it now. It calls {@link ArbiterPreloader.preload} with the resolved
|
|
15
|
+
* text model key. `preload` is intentionally conservative — it only loads under
|
|
16
|
+
* nominal pressure when the configured budget proves the footprint fits, and
|
|
17
|
+
* returns `false` otherwise (low / critical pressure, or no headroom). The
|
|
18
|
+
* predictor never forces a load; it never touches the engine directly; it owns
|
|
19
|
+
* no model handle. It is the prediction, nothing more.
|
|
20
|
+
*
|
|
21
|
+
* Injectable by construction: it depends only on the `preload` surface of the
|
|
22
|
+
* arbiter and the resolved text model key, so it is unit-testable against the
|
|
23
|
+
* real arbiter with a synthetic capability and carries no transitive coupling
|
|
24
|
+
* to the FFI engine, the voice pipeline, or the device bridge.
|
|
25
|
+
*/
|
|
26
|
+
import type { ArbiterCapability } from "../memory-arbiter";
|
|
27
|
+
/**
|
|
28
|
+
* The slice of {@link MemoryArbiter} the predictor needs. Narrowed to `preload`
|
|
29
|
+
* so the predictor can be injected with the real arbiter (which satisfies this
|
|
30
|
+
* structurally) or a test double, with no other surface area in scope.
|
|
31
|
+
*/
|
|
32
|
+
export interface ArbiterPreloader {
|
|
33
|
+
preload(capability: ArbiterCapability, modelKey: string): Promise<boolean>;
|
|
34
|
+
}
|
|
35
|
+
export interface VoicePreloadPredictorOptions {
|
|
36
|
+
/** The arbiter (or anything exposing its `preload`) to warm the model on. */
|
|
37
|
+
arbiter: ArbiterPreloader;
|
|
38
|
+
/**
|
|
39
|
+
* Resolves the arbiter-managed text-response model key for the current turn.
|
|
40
|
+
* A function (not a bare string) so the predictor reflects a model swap
|
|
41
|
+
* between turns without being rebuilt. Returning `null` means "no text model
|
|
42
|
+
* is assigned yet" — the predictor then declines to predict rather than
|
|
43
|
+
* guessing a key.
|
|
44
|
+
*/
|
|
45
|
+
resolveTextModelKey: () => string | null;
|
|
46
|
+
/** Optional structured logger. Messages are prefixed `[voice-preload-predictor]`. */
|
|
47
|
+
logger?: {
|
|
48
|
+
debug?: (message: string) => void;
|
|
49
|
+
warn?: (message: string) => void;
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Predicts the next arbiter-managed model for a voice turn and warms it.
|
|
54
|
+
*
|
|
55
|
+
* Wire {@link VoicePreloadPredictor.onAsrStageComplete} to the voice pipeline's
|
|
56
|
+
* `onAsrComplete` event (the instant ASR emits its final token, which is also
|
|
57
|
+
* the drafter/verifier kick-off point): that is the genuine seam where the next
|
|
58
|
+
* stage is known and the arbiter owns its model.
|
|
59
|
+
*/
|
|
60
|
+
export declare class VoicePreloadPredictor {
|
|
61
|
+
private readonly arbiter;
|
|
62
|
+
private readonly resolveTextModelKey;
|
|
63
|
+
private readonly logger;
|
|
64
|
+
constructor(options: VoicePreloadPredictorOptions);
|
|
65
|
+
/**
|
|
66
|
+
* Called when the ASR stage of the current turn completes. Predicts the
|
|
67
|
+
* next-stage text model and asks the arbiter to warm it.
|
|
68
|
+
*
|
|
69
|
+
* Resolves to the model key that was warmed (resident or freshly loaded), or
|
|
70
|
+
* `null` when no prediction was made or the arbiter declined the preload
|
|
71
|
+
* (pressure / no budget headroom). Never throws on a declined preload — a
|
|
72
|
+
* predictor that breaks the voice loop is worse than one that does nothing.
|
|
73
|
+
*/
|
|
74
|
+
onAsrStageComplete(): Promise<string | null>;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=voice-preload-predictor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-preload-predictor.d.ts","sourceRoot":"","sources":["../../../src/services/voice/voice-preload-predictor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAChC,OAAO,CAAC,UAAU,EAAE,iBAAiB,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3E;AAED,MAAM,WAAW,4BAA4B;IAC5C,6EAA6E;IAC7E,OAAO,EAAE,gBAAgB,CAAC;IAC1B;;;;;;OAMG;IACH,mBAAmB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACzC,qFAAqF;IACrF,MAAM,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;QAClC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;KACjC,CAAC;CACF;AAQD;;;;;;;GAOG;AACH,qBAAa,qBAAqB;IACjC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmB;IAC3C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAyC;gBAEpD,OAAO,EAAE,4BAA4B;IAMjD;;;;;;;;OAQG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAuBlD"}
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Binary format for `cache/voice-preset-*.bin`.
|
|
3
|
+
*
|
|
4
|
+
* Two versions are supported:
|
|
5
|
+
*
|
|
6
|
+
* v1 (`magic='ELZ1', version=1`) — legacy two-section layout used by the
|
|
7
|
+
* initial Kokoro-style placeholder. Carries a Float32 speaker embedding +
|
|
8
|
+
* a phrase-cache seed list. Still read for back-compat (older bundles only
|
|
9
|
+
* contain v1).
|
|
10
|
+
*
|
|
11
|
+
* v2 (`magic='ELZ1', version=2`) — superset adopted for the OmniVoice
|
|
12
|
+
* freeze. Adds three OmniVoice-specific sections that the v1 layout had
|
|
13
|
+
* no room for: pre-encoded `ref_audio_tokens` (int32, shape
|
|
14
|
+
* `[K, ref_T]`), a UTF-8 `ref_text` transcript of the reference clip, and
|
|
15
|
+
* a closed-vocabulary `instruct` string (the resolved VoiceDesign
|
|
16
|
+
* attributes). v2 readers handle v1 files transparently (the new sections
|
|
17
|
+
* default to empty). A v1 reader applied to a v2 file fails fast on
|
|
18
|
+
* `truncated-header` because the v2 header is larger.
|
|
19
|
+
*
|
|
20
|
+
* Layout (little-endian throughout):
|
|
21
|
+
*
|
|
22
|
+
* v1 header (24 bytes):
|
|
23
|
+
* +0 4 bytes magic 'ELZ1' (0x315A4C45)
|
|
24
|
+
* +4 4 bytes format version (uint32) — 1
|
|
25
|
+
* +8 4 bytes speaker embedding offset (uint32)
|
|
26
|
+
* +12 4 bytes speaker embedding byte length (uint32)
|
|
27
|
+
* +16 4 bytes phrase cache seed offset (uint32)
|
|
28
|
+
* +20 4 bytes phrase cache seed byte length (uint32)
|
|
29
|
+
*
|
|
30
|
+
* v2 header (64 bytes — additive, all section descriptors are
|
|
31
|
+
* `(offset:uint32, length:uint32)` pairs):
|
|
32
|
+
* +0 4 bytes magic 'ELZ1' (0x315A4C45)
|
|
33
|
+
* +4 4 bytes format version (uint32) — 2
|
|
34
|
+
* +8 4 bytes speaker embedding offset
|
|
35
|
+
* +12 4 bytes speaker embedding byte length
|
|
36
|
+
* +16 4 bytes phrase cache seed offset
|
|
37
|
+
* +20 4 bytes phrase cache seed byte length
|
|
38
|
+
* +24 4 bytes ref_audio_tokens offset
|
|
39
|
+
* +28 4 bytes ref_audio_tokens byte length
|
|
40
|
+
* +32 4 bytes ref_text offset
|
|
41
|
+
* +36 4 bytes ref_text byte length
|
|
42
|
+
* +40 4 bytes instruct offset
|
|
43
|
+
* +44 4 bytes instruct byte length
|
|
44
|
+
* +48 4 bytes metadata offset
|
|
45
|
+
* +52 4 bytes metadata byte length
|
|
46
|
+
* +56 4 bytes reserved (must be 0)
|
|
47
|
+
* +60 4 bytes reserved (must be 0)
|
|
48
|
+
*
|
|
49
|
+
* `ref_audio_tokens` payload (v2):
|
|
50
|
+
* +0 4 bytes K — codebook count (uint32, OmniVoice = 8)
|
|
51
|
+
* +4 4 bytes ref_T — frames per codebook (uint32)
|
|
52
|
+
* +8 ... int32 LE codebook samples, row-major shape `[K, ref_T]`
|
|
53
|
+
*
|
|
54
|
+
* `ref_text` payload (v2): raw UTF-8 bytes (no NUL terminator).
|
|
55
|
+
* `instruct` payload (v2): raw UTF-8 bytes (closed VoiceDesign vocabulary).
|
|
56
|
+
* `metadata` payload (v2): raw UTF-8 JSON bytes (codec sha256, corpus
|
|
57
|
+
* hash, etc.); the runtime never relies on
|
|
58
|
+
* metadata for correctness.
|
|
59
|
+
*
|
|
60
|
+
* Phrase cache seed payload (v1 + v2, identical):
|
|
61
|
+
* uint32 LE N (phrase count)
|
|
62
|
+
* for each phrase:
|
|
63
|
+
* uint16 LE text_byte_len
|
|
64
|
+
* uint8[] canonicalized text (UTF-8)
|
|
65
|
+
* uint32 LE sample_rate
|
|
66
|
+
* uint32 LE pcm_byte_len
|
|
67
|
+
* uint8[] PCM (Float32 LE samples)
|
|
68
|
+
*
|
|
69
|
+
* Per-section invariants:
|
|
70
|
+
* - Section bounds may not overlap the header.
|
|
71
|
+
* - Section bounds must fit within the file length.
|
|
72
|
+
* - A `length=0` section is allowed (means "absent"); the corresponding
|
|
73
|
+
* output field is an empty `Float32Array` / `Int32Array` / empty string.
|
|
74
|
+
* - `embedding.length % 4 == 0` (Float32).
|
|
75
|
+
* - `ref_audio_tokens.length` ≥ 8 (the two header words K, ref_T) and the
|
|
76
|
+
* payload is `8 + K*ref_T*4` bytes.
|
|
77
|
+
*/
|
|
78
|
+
export declare const VOICE_PRESET_MAGIC = 828001349;
|
|
79
|
+
/** Header byte counts. */
|
|
80
|
+
export declare const VOICE_PRESET_HEADER_BYTES_V1 = 24;
|
|
81
|
+
export declare const VOICE_PRESET_HEADER_BYTES_V2 = 64;
|
|
82
|
+
/** Supported format versions. v2 is the canonical write path. */
|
|
83
|
+
export declare const VOICE_PRESET_VERSION_V1 = 1;
|
|
84
|
+
export declare const VOICE_PRESET_VERSION_V2 = 2;
|
|
85
|
+
export declare const VOICE_PRESET_VERSION_CURRENT = 2;
|
|
86
|
+
export interface VoicePresetSeedPhrase {
|
|
87
|
+
/** Canonicalized text (lowercase, single-spaced, trimmed). */
|
|
88
|
+
text: string;
|
|
89
|
+
sampleRate: number;
|
|
90
|
+
pcm: Float32Array;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* OmniVoice reference-audio-tokens payload. `K` is the codebook count (=8 for
|
|
94
|
+
* OmniVoice / HiggsAudioV2) and `refT` is the number of frames per codebook.
|
|
95
|
+
* `tokens` is row-major: codebook `k`, frame `t` is at `tokens[k*refT + t]`.
|
|
96
|
+
* An empty payload (refT=0, K=0, tokens length 0) is valid and means "no
|
|
97
|
+
* reference audio bound to this preset" (instruct-only voice).
|
|
98
|
+
*/
|
|
99
|
+
export interface RefAudioTokens {
|
|
100
|
+
K: number;
|
|
101
|
+
refT: number;
|
|
102
|
+
tokens: Int32Array;
|
|
103
|
+
}
|
|
104
|
+
export interface VoicePresetFile {
|
|
105
|
+
version: number;
|
|
106
|
+
embedding: Float32Array;
|
|
107
|
+
phrases: ReadonlyArray<VoicePresetSeedPhrase>;
|
|
108
|
+
/** v2 only — empty for v1 files. */
|
|
109
|
+
refAudioTokens: RefAudioTokens;
|
|
110
|
+
/** v2 only — empty for v1 files. */
|
|
111
|
+
refText: string;
|
|
112
|
+
/** v2 only — empty for v1 files. */
|
|
113
|
+
instruct: string;
|
|
114
|
+
/** v2 only — parsed JSON object, empty `{}` for v1 files. */
|
|
115
|
+
metadata: Record<string, unknown>;
|
|
116
|
+
}
|
|
117
|
+
export declare class VoicePresetFormatError extends Error {
|
|
118
|
+
readonly code: "bad-magic" | "bad-version" | "truncated-header" | "truncated-section" | "bad-section-bounds" | "bad-phrase-record" | "bad-embedding-length" | "bad-ref-tokens" | "bad-metadata" | "bad-utf8";
|
|
119
|
+
constructor(message: string, code: "bad-magic" | "bad-version" | "truncated-header" | "truncated-section" | "bad-section-bounds" | "bad-phrase-record" | "bad-embedding-length" | "bad-ref-tokens" | "bad-metadata" | "bad-utf8");
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Parse a voice-preset binary blob. Throws `VoicePresetFormatError` on any
|
|
123
|
+
* malformed input — this is the single defensive boundary for the format.
|
|
124
|
+
* Supports both v1 and v2 files. For v1 files the v2-only fields are
|
|
125
|
+
* returned as their empty equivalents.
|
|
126
|
+
*/
|
|
127
|
+
export declare function readVoicePresetFile(bytes: Uint8Array): VoicePresetFile;
|
|
128
|
+
/**
|
|
129
|
+
* Serialize a voice preset to the v1 binary format. The output is a fresh
|
|
130
|
+
* `Uint8Array` ready to be written to disk.
|
|
131
|
+
*
|
|
132
|
+
* Use this only when the caller deliberately wants the legacy v1 shape (e.g.
|
|
133
|
+
* the existing Kokoro-style placeholder builder). New code should call
|
|
134
|
+
* `writeVoicePresetFileV2`.
|
|
135
|
+
*/
|
|
136
|
+
export declare function writeVoicePresetFile(file: {
|
|
137
|
+
embedding: Float32Array;
|
|
138
|
+
phrases: ReadonlyArray<VoicePresetSeedPhrase>;
|
|
139
|
+
}): Uint8Array;
|
|
140
|
+
/**
|
|
141
|
+
* Write a voice preset in the v2 (additive) layout. Used by the OmniVoice
|
|
142
|
+
* freeze pipeline (`freeze-voice.mjs`) and other producers that need to
|
|
143
|
+
* persist `refAudioTokens` / `refText` / `instruct` alongside the v1
|
|
144
|
+
* embedding + phrase-seed sections.
|
|
145
|
+
*
|
|
146
|
+
* Any field that the caller doesn't need to persist can be omitted (or
|
|
147
|
+
* passed empty). The on-disk section is then written as length=0 and is
|
|
148
|
+
* read back as the empty equivalent.
|
|
149
|
+
*/
|
|
150
|
+
export declare function writeVoicePresetFileV2(file: {
|
|
151
|
+
embedding?: Float32Array;
|
|
152
|
+
phrases?: ReadonlyArray<VoicePresetSeedPhrase>;
|
|
153
|
+
refAudioTokens?: RefAudioTokens;
|
|
154
|
+
refText?: string;
|
|
155
|
+
instruct?: string;
|
|
156
|
+
metadata?: Record<string, unknown>;
|
|
157
|
+
}): Uint8Array;
|
|
158
|
+
//# sourceMappingURL=voice-preset-format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-preset-format.d.ts","sourceRoot":"","sources":["../../../src/services/voice/voice-preset-format.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4EG;AAEH,eAAO,MAAM,kBAAkB,YAAa,CAAC;AAE7C,0BAA0B;AAC1B,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAC/C,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAE/C,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,eAAO,MAAM,4BAA4B,IAA0B,CAAC;AAEpE,MAAM,WAAW,qBAAqB;IACrC,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,YAAY,CAAC;CAClB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC9B,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC9C,oCAAoC;IACpC,cAAc,EAAE,cAAc,CAAC;IAC/B,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAG/C,QAAQ,CAAC,IAAI,EACV,WAAW,GACX,aAAa,GACb,kBAAkB,GAClB,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,sBAAsB,GACtB,gBAAgB,GAChB,cAAc,GACd,UAAU;gBAXb,OAAO,EAAE,MAAM,EACN,IAAI,EACV,WAAW,GACX,aAAa,GACb,kBAAkB,GAClB,mBAAmB,GACnB,oBAAoB,GACpB,mBAAmB,GACnB,sBAAsB,GACtB,gBAAgB,GAChB,cAAc,GACd,UAAU;CAKd;AAqUD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,eAAe,CAYtE;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IAC1C,SAAS,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;CAC9C,GAAG,UAAU,CA4Cb;AAmCD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC5C,SAAS,CAAC,EAAE,YAAY,CAAC;IACzB,OAAO,CAAC,EAAE,aAAa,CAAC,qBAAqB,CAAC,CAAC;IAC/C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC,GAAG,UAAU,CAuHb"}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import type { VoiceInputSource } from "./types";
|
|
2
|
+
export declare const VOICE_PROFILE_ARTIFACT_SCHEMA_VERSION: "eliza.voice_profile.v1";
|
|
3
|
+
export declare const VOICE_PROFILE_FEATURE_EMBEDDING_MODEL: "eliza-voice-profile-features-v1";
|
|
4
|
+
export type VoiceProfileArtifactStatus = "ready" | "needs_review" | "invalid";
|
|
5
|
+
export interface VoiceProfileConsent {
|
|
6
|
+
attribution: boolean;
|
|
7
|
+
synthesis: boolean;
|
|
8
|
+
grantedBy?: string;
|
|
9
|
+
grantedAt?: string;
|
|
10
|
+
expiresAt?: string;
|
|
11
|
+
evidenceId?: string;
|
|
12
|
+
}
|
|
13
|
+
export interface VoiceProfileReferenceMetadata {
|
|
14
|
+
speakerId?: string;
|
|
15
|
+
label?: string;
|
|
16
|
+
displayName?: string;
|
|
17
|
+
referenceText?: string;
|
|
18
|
+
language?: string;
|
|
19
|
+
locale?: string;
|
|
20
|
+
source?: VoiceInputSource;
|
|
21
|
+
consent?: VoiceProfileConsent;
|
|
22
|
+
metadata?: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
export interface VoiceProfileSampleInput {
|
|
25
|
+
id?: string;
|
|
26
|
+
wavBytes: ArrayBuffer | ArrayBufferView;
|
|
27
|
+
referenceText?: string;
|
|
28
|
+
recordedAt?: string;
|
|
29
|
+
source?: VoiceInputSource;
|
|
30
|
+
metadata?: Record<string, unknown>;
|
|
31
|
+
}
|
|
32
|
+
export interface VoiceProfileAudioFeatures {
|
|
33
|
+
sha256: string;
|
|
34
|
+
byteLength: number;
|
|
35
|
+
format: "wav/pcm_s16le";
|
|
36
|
+
channels: number;
|
|
37
|
+
sampleRateHz: number;
|
|
38
|
+
bitsPerSample: 16;
|
|
39
|
+
dataBytes: number;
|
|
40
|
+
samplesPerChannel: number;
|
|
41
|
+
durationMs: number;
|
|
42
|
+
peakAbs: number;
|
|
43
|
+
rms: number;
|
|
44
|
+
zeroCrossingRate: number;
|
|
45
|
+
silenceRatio: number;
|
|
46
|
+
}
|
|
47
|
+
export interface VoiceProfileArtifactSample {
|
|
48
|
+
id: string;
|
|
49
|
+
wavSha256: string;
|
|
50
|
+
referenceText: string | null;
|
|
51
|
+
recordedAt: string | null;
|
|
52
|
+
source: VoiceInputSource | null;
|
|
53
|
+
metadata: Record<string, unknown> | null;
|
|
54
|
+
audio: VoiceProfileAudioFeatures;
|
|
55
|
+
featureEmbedding: number[];
|
|
56
|
+
}
|
|
57
|
+
export interface VoiceProfileArtifact {
|
|
58
|
+
schemaVersion: typeof VOICE_PROFILE_ARTIFACT_SCHEMA_VERSION;
|
|
59
|
+
artifactId: string;
|
|
60
|
+
embeddingModel: typeof VOICE_PROFILE_FEATURE_EMBEDDING_MODEL;
|
|
61
|
+
centroidEmbedding: number[];
|
|
62
|
+
sampleCount: number;
|
|
63
|
+
totalDurationMs: number;
|
|
64
|
+
confidence: number;
|
|
65
|
+
reference: {
|
|
66
|
+
speakerId: string | null;
|
|
67
|
+
label: string | null;
|
|
68
|
+
displayName: string | null;
|
|
69
|
+
referenceText: string | null;
|
|
70
|
+
language: string | null;
|
|
71
|
+
locale: string | null;
|
|
72
|
+
source: VoiceInputSource | null;
|
|
73
|
+
consent: VoiceProfileConsent;
|
|
74
|
+
metadata: Record<string, unknown> | null;
|
|
75
|
+
};
|
|
76
|
+
samples: VoiceProfileArtifactSample[];
|
|
77
|
+
usage: {
|
|
78
|
+
attributionAuthorized: boolean;
|
|
79
|
+
synthesisAuthorized: boolean;
|
|
80
|
+
authorizationSource: "reference_metadata";
|
|
81
|
+
};
|
|
82
|
+
provenance: {
|
|
83
|
+
createdAt: string | null;
|
|
84
|
+
deterministic: true;
|
|
85
|
+
generator: "app-core.voice-profile-artifact";
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
export interface VoiceProfileArtifactVerification {
|
|
89
|
+
status: VoiceProfileArtifactStatus;
|
|
90
|
+
artifactId: string;
|
|
91
|
+
expectedArtifactId: string;
|
|
92
|
+
artifactIdMatches: boolean;
|
|
93
|
+
sampleCount: number;
|
|
94
|
+
totalDurationMs: number;
|
|
95
|
+
attributionStatus: "ready" | "missing_consent" | "invalid";
|
|
96
|
+
synthesisStatus: "authorized_by_metadata" | "not_authorized" | "insufficient_audio" | "invalid";
|
|
97
|
+
issues: string[];
|
|
98
|
+
samples: Array<{
|
|
99
|
+
id: string;
|
|
100
|
+
status: "pass" | "fail";
|
|
101
|
+
issues: string[];
|
|
102
|
+
wavSha256Matches?: boolean;
|
|
103
|
+
}>;
|
|
104
|
+
}
|
|
105
|
+
export declare function canonicalVoiceProfileJson(value: unknown): string;
|
|
106
|
+
export declare function analyzeVoiceProfileWav(wavBytes: ArrayBuffer | ArrayBufferView): VoiceProfileAudioFeatures;
|
|
107
|
+
export declare function createVoiceProfileArtifact(args: {
|
|
108
|
+
samples: readonly VoiceProfileSampleInput[];
|
|
109
|
+
reference?: VoiceProfileReferenceMetadata;
|
|
110
|
+
createdAt?: string | null;
|
|
111
|
+
}): VoiceProfileArtifact;
|
|
112
|
+
export declare function verifyVoiceProfileArtifact(args: {
|
|
113
|
+
artifact: VoiceProfileArtifact;
|
|
114
|
+
sampleWavs?: Readonly<Record<string, ArrayBuffer | ArrayBufferView>>;
|
|
115
|
+
}): VoiceProfileArtifactVerification;
|
|
116
|
+
//# sourceMappingURL=voice-profile-artifact.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-profile-artifact.d.ts","sourceRoot":"","sources":["../../../src/services/voice/voice-profile-artifact.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Server-side voice-profile management routes.
|
|
3
|
+
*
|
|
4
|
+
* Surfaces the available OmniVoice profiles from:
|
|
5
|
+
* 1. The active Eliza-1 bundle's `cache/voice-preset-*.bin` files.
|
|
6
|
+
* 2. The `models/voice/profiles/` catalog directory (build-time profiles).
|
|
7
|
+
*
|
|
8
|
+
* Routes:
|
|
9
|
+
* GET /v1/voice/profiles — list available profiles
|
|
10
|
+
* POST /v1/voice/profiles/:id/activate — set the active default profile
|
|
11
|
+
* DELETE /v1/voice/profiles/:id — soft-delete (mark inactive in catalog)
|
|
12
|
+
*
|
|
13
|
+
* The active default profile is persisted in the voice profile catalog JSON
|
|
14
|
+
* (`models/voice/profiles/catalog.json`). On model boot, the engine bridge
|
|
15
|
+
* reads this to pick which preset to load as the default.
|
|
16
|
+
*
|
|
17
|
+
* No runtime recording interface is exposed. Profile creation happens at
|
|
18
|
+
* build time via `bun run voice:create-profile`.
|
|
19
|
+
*/
|
|
20
|
+
import type http from "node:http";
|
|
21
|
+
/** Catalog JSON schema version. */
|
|
22
|
+
declare const CATALOG_SCHEMA_VERSION: 1;
|
|
23
|
+
/** One entry in `catalog.json`. */
|
|
24
|
+
export interface VoiceProfileCatalogEntry {
|
|
25
|
+
/** Profile identifier — matches the `voice-preset-<id>.bin` filename suffix. */
|
|
26
|
+
id: string;
|
|
27
|
+
/** Human-readable display name. */
|
|
28
|
+
displayName: string;
|
|
29
|
+
/** Build-time instruct string (VoiceDesign vocabulary). */
|
|
30
|
+
instruct: string;
|
|
31
|
+
/** Whether this profile is currently active (visible + usable). */
|
|
32
|
+
active: boolean;
|
|
33
|
+
/** ISO timestamp when this entry was created. */
|
|
34
|
+
createdAt: string;
|
|
35
|
+
/** Optional source bundle. */
|
|
36
|
+
sourceBundleId?: string;
|
|
37
|
+
/** Optional sha256 of the source corpus. */
|
|
38
|
+
corpusSha256?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface VoiceProfileCatalog {
|
|
41
|
+
version: typeof CATALOG_SCHEMA_VERSION;
|
|
42
|
+
/** ID of the profile to load as the default on model boot. */
|
|
43
|
+
defaultProfileId: string;
|
|
44
|
+
profiles: VoiceProfileCatalogEntry[];
|
|
45
|
+
}
|
|
46
|
+
export interface VoiceProfileRouteOptions {
|
|
47
|
+
/**
|
|
48
|
+
* Directory that holds `profiles/catalog.json` and the built-in
|
|
49
|
+
* `manifest.json`. Defaults to `<repo>/models/voice/`.
|
|
50
|
+
*/
|
|
51
|
+
voiceModelsDir?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Root of the active Eliza-1 bundle. When set, the routes also scan
|
|
54
|
+
* `<bundleRoot>/cache/voice-preset-*.bin` for bundle-shipped profiles.
|
|
55
|
+
*/
|
|
56
|
+
bundleRoot?: string;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Route handler for all `/v1/voice/profiles*` endpoints.
|
|
60
|
+
*
|
|
61
|
+
* Returns `true` if the request was handled, `false` to pass through.
|
|
62
|
+
*/
|
|
63
|
+
export declare function handleVoiceProfileRoutes(req: http.IncomingMessage, res: http.ServerResponse, opts: VoiceProfileRouteOptions): Promise<boolean>;
|
|
64
|
+
/**
|
|
65
|
+
* Resolve the active default profile id from the voice catalog.
|
|
66
|
+
*
|
|
67
|
+
* Called at model boot (before `EngineVoiceBridge.start()`) to determine
|
|
68
|
+
* which `voice-preset-<id>.bin` to load as the default voice. Returns
|
|
69
|
+
* `"default"` when the catalog has no explicit default set.
|
|
70
|
+
*/
|
|
71
|
+
export declare function resolveDefaultProfileId(voiceModelsDir: string): Promise<string>;
|
|
72
|
+
/**
|
|
73
|
+
* Persist a newly created profile into the voice catalog.
|
|
74
|
+
*
|
|
75
|
+
* Called by `bun run voice:create-profile` after the freeze pipeline
|
|
76
|
+
* writes the preset binary. Appends an entry to `catalog.json` if the
|
|
77
|
+
* profile id is not already there; updates instruct + displayName if it is.
|
|
78
|
+
*/
|
|
79
|
+
export declare function registerProfileInCatalog(voiceModelsDir: string, entry: Omit<VoiceProfileCatalogEntry, "active"> & {
|
|
80
|
+
active?: boolean;
|
|
81
|
+
}): Promise<void>;
|
|
82
|
+
export {};
|
|
83
|
+
//# sourceMappingURL=voice-profile-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-profile-routes.d.ts","sourceRoot":"","sources":["../../../src/services/voice/voice-profile-routes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAIH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAQlC,mCAAmC;AACnC,QAAA,MAAM,sBAAsB,EAAG,CAAU,CAAC;AAE1C,mCAAmC;AACnC,MAAM,WAAW,wBAAwB;IACxC,gFAAgF;IAChF,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,mEAAmE;IACnE,MAAM,EAAE,OAAO,CAAC;IAChB,iDAAiD;IACjD,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4CAA4C;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,OAAO,sBAAsB,CAAC;IACvC,8DAA8D;IAC9D,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,wBAAwB,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,wBAAwB;IACxC;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AA8KD;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC7C,GAAG,EAAE,IAAI,CAAC,eAAe,EACzB,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,IAAI,EAAE,wBAAwB,GAC5B,OAAO,CAAC,OAAO,CAAC,CAiIlB;AAMD;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAC5C,cAAc,EAAE,MAAM,GACpB,OAAO,CAAC,MAAM,CAAC,CAGjB;AAED;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAC7C,cAAc,EAAE,MAAM,EACtB,KAAK,EAAE,IAAI,CAAC,wBAAwB,EAAE,QAAQ,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACpE,OAAO,CAAC,IAAI,CAAC,CAaf"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Voice Workbench scenario schema (#8785).
|
|
3
|
+
*
|
|
4
|
+
* One declarative format for a voice conversation that BOTH the headless runner
|
|
5
|
+
* (real services: ASR / diarization / EOT / respond / TTS over a corpus) and
|
|
6
|
+
* the headful scenario player (the real frontend client pipeline) execute, and
|
|
7
|
+
* that the benchmark layer scores. A scenario is an ordered list of turns plus
|
|
8
|
+
* named participants and scenario-level assertions; each turn declares the
|
|
9
|
+
* expected behavior (respond / don't, transcript, speaker label, entity) so the
|
|
10
|
+
* runner can score against ground truth.
|
|
11
|
+
*
|
|
12
|
+
* Pure types + a pure validator — no model loading, no I/O — so it is safe to
|
|
13
|
+
* import from the runner, the player, and tests alike.
|
|
14
|
+
*/
|
|
15
|
+
import type { AugmentationSpec } from "./corpus-augment";
|
|
16
|
+
/**
|
|
17
|
+
* Acoustic environment for a scenario or a single turn: room noise, reverb,
|
|
18
|
+
* far-field attenuation, low-quality line, background talkers. Drives the
|
|
19
|
+
* corpus generator's degradation chain ({@link AugmentationSpec}). A turn's
|
|
20
|
+
* environment is merged over the scenario's, so a scenario can declare a noisy
|
|
21
|
+
* room once and an individual turn can override it (e.g. one talker steps away).
|
|
22
|
+
*/
|
|
23
|
+
export type VoiceEnvironment = AugmentationSpec;
|
|
24
|
+
/** A named voice/entity participating in the scenario. */
|
|
25
|
+
export interface VoiceScenarioParticipant {
|
|
26
|
+
/** Stable label used in turns + diarization ground truth (e.g. "alice"). */
|
|
27
|
+
label: string;
|
|
28
|
+
/** TTS voice id used to synthesize this participant's turns in the corpus. */
|
|
29
|
+
ttsVoiceId?: string;
|
|
30
|
+
/** The elizaOS entity id this voice should resolve to (voice→entity match). */
|
|
31
|
+
entityId?: string;
|
|
32
|
+
/** True when this participant is the device owner / primary enrolled speaker. */
|
|
33
|
+
isOwner?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/** One spoken turn in the scenario. */
|
|
36
|
+
export interface VoiceScenarioTurn {
|
|
37
|
+
/** Participant label (must exist in `participants`). */
|
|
38
|
+
speaker: string;
|
|
39
|
+
/** Spoken text — synthesized to audio by the corpus generator. */
|
|
40
|
+
text?: string;
|
|
41
|
+
/** OR a reference to a pre-recorded/-generated audio file under the corpus. */
|
|
42
|
+
audioRef?: string;
|
|
43
|
+
/** Override the participant's default TTS voice for this turn. */
|
|
44
|
+
ttsVoiceId?: string;
|
|
45
|
+
/** Silent gaps (ms) spliced AFTER this turn's audio (pauses / barge-in gaps). */
|
|
46
|
+
pausesMs?: number[];
|
|
47
|
+
/** Ground truth: SHOULD the agent respond to this turn? */
|
|
48
|
+
expectRespond: boolean;
|
|
49
|
+
/** Ground truth: is this segment a real end-of-turn boundary? */
|
|
50
|
+
expectEndOfTurn?: boolean;
|
|
51
|
+
/** Expected ASR transcript (for WER scoring); defaults to `text`. */
|
|
52
|
+
expectedTranscript?: string;
|
|
53
|
+
/** Expected diarization label (defaults to `speaker`). */
|
|
54
|
+
expectedSpeakerLabel?: string;
|
|
55
|
+
/** Expected entity inferred/recognized from this turn (name extraction). */
|
|
56
|
+
expectedEntity?: string;
|
|
57
|
+
/**
|
|
58
|
+
* Acoustic degradation for THIS turn, merged over the scenario environment.
|
|
59
|
+
* Use it to model one talker stepping away (far-field) or onto a bad line
|
|
60
|
+
* while the rest of the room stays clean.
|
|
61
|
+
*/
|
|
62
|
+
environment?: VoiceEnvironment;
|
|
63
|
+
/**
|
|
64
|
+
* Ground truth for echo/self-voice rejection: this "turn" is the agent's own
|
|
65
|
+
* TTS bleeding back into the mic (not a real user turn). The respond gate
|
|
66
|
+
* MUST suppress it. Always implies `expectRespond: false`.
|
|
67
|
+
*/
|
|
68
|
+
isAgentEcho?: boolean;
|
|
69
|
+
/**
|
|
70
|
+
* The agent's spoken reply to THIS turn (when it responds). The real-decision
|
|
71
|
+
* logic adapter uses it as the "recent agent reply" the echo gate compares a
|
|
72
|
+
* following `isAgentEcho` turn against — so echo rejection is tested against a
|
|
73
|
+
* genuine reply string, not a circular self-reference.
|
|
74
|
+
*/
|
|
75
|
+
agentReplyText?: string;
|
|
76
|
+
}
|
|
77
|
+
/** Scenario-level pass/fail thresholds the benchmark layer enforces. */
|
|
78
|
+
export interface VoiceScenarioAssertions {
|
|
79
|
+
/** Max word-error-rate across the scenario's transcripts. */
|
|
80
|
+
maxWer?: number;
|
|
81
|
+
/** Max diarization error rate. */
|
|
82
|
+
maxDer?: number;
|
|
83
|
+
/** Min respond-decision accuracy. */
|
|
84
|
+
minRespondAccuracy?: number;
|
|
85
|
+
/** Max EOT false-trigger rate. */
|
|
86
|
+
maxEotFalseTriggerRate?: number;
|
|
87
|
+
/** Min voice→entity match rate. */
|
|
88
|
+
minVoiceEntityMatchRate?: number;
|
|
89
|
+
/** Latency budgets (ms) — first-audio / time-to-first-token, etc. */
|
|
90
|
+
maxFirstAudioMs?: number;
|
|
91
|
+
maxTtftMs?: number;
|
|
92
|
+
/** Min echo/self-voice rejection rate (agent-echo turns correctly suppressed). */
|
|
93
|
+
minEchoRejectionRate?: number;
|
|
94
|
+
/** Min owner-vs-intruder accuracy for security scenarios. */
|
|
95
|
+
minOwnerAccuracy?: number;
|
|
96
|
+
}
|
|
97
|
+
export type VoiceScenarioClass = "multi-voice" | "pauses" | "respond-no-respond" | "multi-speaker" | "diarization" | "entity-extraction" | "voice-recognition" | "eot" | "transcription-mode" | "multi-agent-room" | "long-form-monologue" | "robustness" | "echo-rejection" | "owner-security" | "overlapping-speech";
|
|
98
|
+
export interface VoiceScenario {
|
|
99
|
+
/** Stable id (also the corpus subdirectory name). */
|
|
100
|
+
id: string;
|
|
101
|
+
/** Human description of what the scenario exercises. */
|
|
102
|
+
description?: string;
|
|
103
|
+
/** Which scenario class(es) this belongs to (drives the headful spec matrix). */
|
|
104
|
+
classes: VoiceScenarioClass[];
|
|
105
|
+
participants: VoiceScenarioParticipant[];
|
|
106
|
+
turns: VoiceScenarioTurn[];
|
|
107
|
+
assertions?: VoiceScenarioAssertions;
|
|
108
|
+
/** Agent labels present in a multi-agent room (subset of participants). */
|
|
109
|
+
agents?: string[];
|
|
110
|
+
/** Scenario-wide acoustic environment; per-turn `environment` overrides it. */
|
|
111
|
+
environment?: VoiceEnvironment;
|
|
112
|
+
/**
|
|
113
|
+
* Entity ids the agent answers WITHOUT a wake word (owner + enrolled
|
|
114
|
+
* speakers). The respond gate suppresses a confident speaker NOT in this set
|
|
115
|
+
* as a bystander. Defaults (in the runner) to every participant that has an
|
|
116
|
+
* `entityId`; set it explicitly to mark some bound voices as strangers.
|
|
117
|
+
*/
|
|
118
|
+
knownSpeakerEntityIds?: string[];
|
|
119
|
+
}
|
|
120
|
+
export interface VoiceScenarioValidation {
|
|
121
|
+
valid: boolean;
|
|
122
|
+
errors: string[];
|
|
123
|
+
}
|
|
124
|
+
export declare function validateVoiceScenario(scenario: VoiceScenario): VoiceScenarioValidation;
|
|
125
|
+
/** Merge a turn's environment over the scenario's (turn wins, field by field). */
|
|
126
|
+
export declare function resolveTurnEnvironment(scenario: VoiceScenario, turn: VoiceScenarioTurn): VoiceEnvironment | undefined;
|
|
127
|
+
/** The expected ASR reference for a turn (explicit override or its text). */
|
|
128
|
+
export declare function turnReferenceTranscript(turn: VoiceScenarioTurn): string;
|
|
129
|
+
/** The expected diarization label for a turn (explicit override or speaker). */
|
|
130
|
+
export declare function turnSpeakerLabel(turn: VoiceScenarioTurn): string;
|
|
131
|
+
//# sourceMappingURL=voice-scenario.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-scenario.d.ts","sourceRoot":"","sources":["../../../src/services/voice/voice-scenario.ts"],"names":[],"mappings":"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"}
|