@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,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content-addressed voice-profile store with hot LRU + cold disk tiers.
|
|
3
|
+
*
|
|
4
|
+
* Each profile is one WeSpeaker ResNet34-LM centroid plus running
|
|
5
|
+
* variance (Welford), consent flags, and an entity binding. Profiles
|
|
6
|
+
* are content-addressed by `sha256(centroid_bytes)` so duplicate
|
|
7
|
+
* captures collapse and entity merges are safe.
|
|
8
|
+
*
|
|
9
|
+
* Layout under `$ELIZA_STATE_DIR/voice-profiles/`:
|
|
10
|
+
*
|
|
11
|
+
* index.json — entityId/cluster index + LRU order
|
|
12
|
+
* profiles/vp_<sha>.json — one record per profile
|
|
13
|
+
* audio/vp_<sha>/sample-*.wav — optional, consent-gated
|
|
14
|
+
*
|
|
15
|
+
* The contract:
|
|
16
|
+
* - **Hot LRU 30** in-memory records (default `hotCacheSize`).
|
|
17
|
+
* - **Cold disk cap 200** (default `coldDiskMax`).
|
|
18
|
+
* - `beginMatch()` starts at speech-start and resolves once minSpeechMs
|
|
19
|
+
* of audio has been encoded — runs in parallel with ASR.
|
|
20
|
+
* - `refine()` uses online running-mean + Welford variance.
|
|
21
|
+
* - Profiles with a non-null `entityId` are never auto-evicted.
|
|
22
|
+
*/
|
|
23
|
+
import { type VoiceImprintMatch } from "./speaker-imprint";
|
|
24
|
+
import type { VoiceInputSource } from "./types";
|
|
25
|
+
/** Canonical schema version for `vp_*.json` records. */
|
|
26
|
+
export declare const VOICE_PROFILE_RECORD_SCHEMA_VERSION: "eliza.voice_profile_record.v1";
|
|
27
|
+
export interface VoiceProfileConsentState {
|
|
28
|
+
attributionAuthorized: boolean;
|
|
29
|
+
synthesisAuthorized: boolean;
|
|
30
|
+
grantedAt?: string;
|
|
31
|
+
grantedBy?: string;
|
|
32
|
+
}
|
|
33
|
+
export interface VoiceProfileAudioRef {
|
|
34
|
+
sampleId: string;
|
|
35
|
+
wavSha256: string;
|
|
36
|
+
durationMs: number;
|
|
37
|
+
recordedAt: string;
|
|
38
|
+
referenceText?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface VoiceProfileRecord {
|
|
41
|
+
schemaVersion: typeof VOICE_PROFILE_RECORD_SCHEMA_VERSION;
|
|
42
|
+
profileId: string;
|
|
43
|
+
embeddingModel: string;
|
|
44
|
+
embeddingDim: number;
|
|
45
|
+
/** L2-normalized centroid; cosine == dot. */
|
|
46
|
+
centroid: number[];
|
|
47
|
+
/** Welford per-dim variance accumulator (M2 / max(1, n-1)). */
|
|
48
|
+
variance: number[];
|
|
49
|
+
/** Welford `M2` running sum (per-dim squared diff from running mean). */
|
|
50
|
+
welfordM2: number[];
|
|
51
|
+
sampleCount: number;
|
|
52
|
+
totalDurationMs: number;
|
|
53
|
+
firstObservedAt: string;
|
|
54
|
+
lastObservedAt: string;
|
|
55
|
+
lastRefinedAt: string;
|
|
56
|
+
entityId: string | null;
|
|
57
|
+
imprintClusterId: string;
|
|
58
|
+
confidence: number;
|
|
59
|
+
consent: VoiceProfileConsentState;
|
|
60
|
+
audioRefs?: VoiceProfileAudioRef[];
|
|
61
|
+
metadata?: Record<string, unknown>;
|
|
62
|
+
}
|
|
63
|
+
export interface VoiceProfileStoreOptions {
|
|
64
|
+
rootDir: string;
|
|
65
|
+
hotCacheSize?: number;
|
|
66
|
+
coldDiskMax?: number;
|
|
67
|
+
matchThreshold?: number;
|
|
68
|
+
/** Below this we open a new cluster instead of attributing. */
|
|
69
|
+
unmatchedClusterThreshold?: number;
|
|
70
|
+
}
|
|
71
|
+
export interface VoiceImprintMatchHandle {
|
|
72
|
+
/** Resolves once minSpeechMs of audio is encoded, or `null` if no match. */
|
|
73
|
+
result: Promise<VoiceImprintMatch | null>;
|
|
74
|
+
/** Synchronous polling for the latest match — null until first resolve. */
|
|
75
|
+
current(): VoiceImprintMatch | null;
|
|
76
|
+
cancel(): void;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Welford online variance update. Returns the new (mean, M2, count)
|
|
80
|
+
* triple so a caller can persist the M2 and derive variance lazily.
|
|
81
|
+
* `prevMean` is the running mean *before* the observation; the caller
|
|
82
|
+
* passes the L2-normalized embedding as the observation.
|
|
83
|
+
*/
|
|
84
|
+
export declare function welfordUpdate(args: {
|
|
85
|
+
count: number;
|
|
86
|
+
mean: readonly number[];
|
|
87
|
+
m2: readonly number[];
|
|
88
|
+
observation: ReadonlyArray<number>;
|
|
89
|
+
}): {
|
|
90
|
+
mean: number[];
|
|
91
|
+
m2: number[];
|
|
92
|
+
count: number;
|
|
93
|
+
};
|
|
94
|
+
export declare function welfordVariance(m2: readonly number[], count: number): number[];
|
|
95
|
+
/**
|
|
96
|
+
* Reject an observation if its per-dim distance from the centroid is
|
|
97
|
+
* more than `sigmaThreshold` standard deviations on more than half the
|
|
98
|
+
* dimensions. Used to drop cough / cross-talk samples that would
|
|
99
|
+
* corrupt the centroid.
|
|
100
|
+
*/
|
|
101
|
+
export declare function isOutlier(args: {
|
|
102
|
+
centroid: readonly number[];
|
|
103
|
+
variance: readonly number[];
|
|
104
|
+
observation: readonly number[];
|
|
105
|
+
sigmaThreshold?: number;
|
|
106
|
+
}): boolean;
|
|
107
|
+
export declare class VoiceProfileStore {
|
|
108
|
+
private readonly hotCacheSize;
|
|
109
|
+
private readonly coldDiskMax;
|
|
110
|
+
private readonly matchThreshold;
|
|
111
|
+
private readonly unmatchedThreshold;
|
|
112
|
+
private readonly rootDir;
|
|
113
|
+
private readonly profilesDir;
|
|
114
|
+
private readonly indexPath;
|
|
115
|
+
/** Hot cache: profileId → record. Insertion order = LRU order. */
|
|
116
|
+
private hot;
|
|
117
|
+
private indexCache;
|
|
118
|
+
constructor(options: VoiceProfileStoreOptions);
|
|
119
|
+
get matchThresholdValue(): number;
|
|
120
|
+
get unmatchedClusterThresholdValue(): number;
|
|
121
|
+
/** Public for tests / management UI. */
|
|
122
|
+
get hotCacheSizeValue(): number;
|
|
123
|
+
get coldDiskMaxValue(): number;
|
|
124
|
+
init(): Promise<void>;
|
|
125
|
+
private readIndex;
|
|
126
|
+
private writeIndex;
|
|
127
|
+
private profilePath;
|
|
128
|
+
private readProfileFromDisk;
|
|
129
|
+
private writeProfileToDisk;
|
|
130
|
+
/** Touch the LRU order: re-insert at the end. */
|
|
131
|
+
private touchHot;
|
|
132
|
+
private upsertIndexEntry;
|
|
133
|
+
private enforceColdLimit;
|
|
134
|
+
private ensureLoaded;
|
|
135
|
+
/** Walk profiles + return the best match above `matchThreshold` (or null). */
|
|
136
|
+
findBestMatch(args: {
|
|
137
|
+
embedding: Float32Array;
|
|
138
|
+
embeddingModel: string;
|
|
139
|
+
}): Promise<VoiceImprintMatch | null>;
|
|
140
|
+
private recordToImprintProfile;
|
|
141
|
+
/**
|
|
142
|
+
* Speculative match handle. The caller supplies a function that
|
|
143
|
+
* resolves to a single embedding once `minSpeechMs` of audio is
|
|
144
|
+
* available. The handle starts the lookup the moment it's
|
|
145
|
+
* constructed — there is no awaitable for "the encoder finished
|
|
146
|
+
* before we wanted it to".
|
|
147
|
+
*/
|
|
148
|
+
beginMatch(args: {
|
|
149
|
+
embed: () => Promise<{
|
|
150
|
+
embedding: Float32Array;
|
|
151
|
+
embeddingModel: string;
|
|
152
|
+
} | null>;
|
|
153
|
+
signal?: AbortSignal;
|
|
154
|
+
}): VoiceImprintMatchHandle;
|
|
155
|
+
/** Create a new profile from a single capture. */
|
|
156
|
+
createProfile(args: {
|
|
157
|
+
centroid: Float32Array;
|
|
158
|
+
embeddingModel: string;
|
|
159
|
+
entityId?: string | null;
|
|
160
|
+
imprintClusterId?: string;
|
|
161
|
+
confidence: number;
|
|
162
|
+
durationMs: number;
|
|
163
|
+
consent?: Partial<VoiceProfileConsentState>;
|
|
164
|
+
audioRef?: VoiceProfileAudioRef;
|
|
165
|
+
metadata?: Record<string, unknown>;
|
|
166
|
+
}): Promise<VoiceProfileRecord>;
|
|
167
|
+
/**
|
|
168
|
+
* Fold one new embedding into the existing profile via the online
|
|
169
|
+
* running mean (sampleCount-weighted) and update Welford variance.
|
|
170
|
+
* Rejects outliers if `dropOutliers` is true (default).
|
|
171
|
+
*/
|
|
172
|
+
refine(args: {
|
|
173
|
+
profileId: string;
|
|
174
|
+
embedding: Float32Array;
|
|
175
|
+
durationMs: number;
|
|
176
|
+
confidence: number;
|
|
177
|
+
audioRef?: VoiceProfileAudioRef;
|
|
178
|
+
dropOutliers?: boolean;
|
|
179
|
+
}): Promise<VoiceProfileRecord | null>;
|
|
180
|
+
bindEntity(args: {
|
|
181
|
+
profileId: string;
|
|
182
|
+
entityId: string;
|
|
183
|
+
label?: string;
|
|
184
|
+
}): Promise<VoiceProfileRecord | null>;
|
|
185
|
+
/**
|
|
186
|
+
* Merge a metadata patch onto a profile. Keys mapped to `null` are
|
|
187
|
+
* deleted; other keys overwrite. Used by the management routes for
|
|
188
|
+
* rename / relationship / retention edits.
|
|
189
|
+
*/
|
|
190
|
+
updateMetadata(profileId: string, patch: Record<string, unknown>): Promise<VoiceProfileRecord | null>;
|
|
191
|
+
unbindEntity(profileId: string): Promise<VoiceProfileRecord | null>;
|
|
192
|
+
get(profileId: string): Promise<VoiceProfileRecord | null>;
|
|
193
|
+
list(): Promise<VoiceProfileRecord[]>;
|
|
194
|
+
/** For tests / management — drops a profile. Refuses if entityId is set. */
|
|
195
|
+
deleteProfile(args: {
|
|
196
|
+
profileId: string;
|
|
197
|
+
allowBoundEntity?: boolean;
|
|
198
|
+
}): Promise<boolean>;
|
|
199
|
+
/**
|
|
200
|
+
* Merge `sourceId` into `targetId`: a sample-count-weighted centroid
|
|
201
|
+
* combine (with the Chan parallel-variance update for Welford M2), union
|
|
202
|
+
* of audio refs, summed counts/durations, and confidence average. The
|
|
203
|
+
* target's metadata + entity binding win; an unbound target inherits the
|
|
204
|
+
* source's `entityId`. The source profile is deleted. Returns the merged
|
|
205
|
+
* target, or `null` if either profile is missing.
|
|
206
|
+
*
|
|
207
|
+
* Refuses when both carry a *different* `entityId` unless
|
|
208
|
+
* `allowEntityOverwrite` is set — merging two bound identities is a
|
|
209
|
+
* destructive operation the caller must opt into.
|
|
210
|
+
*/
|
|
211
|
+
mergeProfiles(args: {
|
|
212
|
+
sourceId: string;
|
|
213
|
+
targetId: string;
|
|
214
|
+
allowEntityOverwrite?: boolean;
|
|
215
|
+
}): Promise<VoiceProfileRecord | null>;
|
|
216
|
+
/**
|
|
217
|
+
* Split the audio samples named by `sampleIds` out of `profileId` into a
|
|
218
|
+
* new profile. Returns the updated original plus the new split profile,
|
|
219
|
+
* or `null` if the profile is missing.
|
|
220
|
+
*
|
|
221
|
+
* Limitation: per-utterance embeddings are not retained (only the running
|
|
222
|
+
* centroid + Welford accumulators), so the split cannot re-cluster — the
|
|
223
|
+
* new profile copies the parent centroid and the split is by *audio sample
|
|
224
|
+
* assignment* only. Both profiles should be re-refined from fresh captures
|
|
225
|
+
* to diverge. The new profile is unbound (`entityId: null`) and gets a
|
|
226
|
+
* fresh imprint cluster.
|
|
227
|
+
*/
|
|
228
|
+
splitProfile(args: {
|
|
229
|
+
profileId: string;
|
|
230
|
+
sampleIds: string[];
|
|
231
|
+
}): Promise<{
|
|
232
|
+
original: VoiceProfileRecord;
|
|
233
|
+
split: VoiceProfileRecord;
|
|
234
|
+
} | null>;
|
|
235
|
+
}
|
|
236
|
+
/** Snapshot of one observation for downstream attribution code. */
|
|
237
|
+
export interface VoiceProfileObservation {
|
|
238
|
+
profileId: string;
|
|
239
|
+
imprintClusterId: string;
|
|
240
|
+
entityId: string | null;
|
|
241
|
+
embedding: Float32Array;
|
|
242
|
+
embeddingModel: string;
|
|
243
|
+
confidence: number;
|
|
244
|
+
source?: VoiceInputSource;
|
|
245
|
+
startMs?: number;
|
|
246
|
+
endMs?: number;
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=profile-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-store.d.ts","sourceRoot":"","sources":["../../../src/services/voice/profile-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAMH,OAAO,EAGN,KAAK,iBAAiB,EAEtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEhD,wDAAwD;AACxD,eAAO,MAAM,mCAAmC,EAC/C,+BAAwC,CAAC;AAE1C,MAAM,WAAW,wBAAwB;IACxC,qBAAqB,EAAE,OAAO,CAAC;IAC/B,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IAClC,aAAa,EAAE,OAAO,mCAAmC,CAAC;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,yEAAyE;IACzE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,wBAAwB,CAAC;IAClC,SAAS,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,+DAA+D;IAC/D,yBAAyB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,uBAAuB;IACvC,4EAA4E;IAC5E,MAAM,EAAE,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAAC;IAC1C,2EAA2E;IAC3E,OAAO,IAAI,iBAAiB,GAAG,IAAI,CAAC;IACpC,MAAM,IAAI,IAAI,CAAC;CACf;AAiDD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACxB,EAAE,EAAE,SAAS,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CACnC,GAAG;IAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,EAAE,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAoBlD;AAED,wBAAgB,eAAe,CAC9B,EAAE,EAAE,SAAS,MAAM,EAAE,EACrB,KAAK,EAAE,MAAM,GACX,MAAM,EAAE,CAGV;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE;IAC/B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5B,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAYV;AAED,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAS;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;IACrC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,kEAAkE;IAClE,OAAO,CAAC,GAAG,CAAyC;IACpD,OAAO,CAAC,UAAU,CAA0B;gBAEhC,OAAO,EAAE,wBAAwB;IAe7C,IAAI,mBAAmB,IAAI,MAAM,CAEhC;IAED,IAAI,8BAA8B,IAAI,MAAM,CAE3C;IAED,wCAAwC;IACxC,IAAI,iBAAiB,IAAI,MAAM,CAE9B;IAED,IAAI,gBAAgB,IAAI,MAAM,CAE7B;IAEK,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAQb,SAAS;YAgBT,UAAU;IAOxB,OAAO,CAAC,WAAW;YAKL,mBAAmB;YAWnB,kBAAkB;IAMhC,iDAAiD;IACjD,OAAO,CAAC,QAAQ;YAaF,gBAAgB;YA0BhB,gBAAgB;YA0BhB,YAAY;IAa1B,8EAA8E;IACxE,aAAa,CAAC,IAAI,EAAE;QACzB,SAAS,EAAE,YAAY,CAAC;QACxB,cAAc,EAAE,MAAM,CAAC;KACvB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IA8BrC,OAAO,CAAC,sBAAsB;IAkB9B;;;;;;OAMG;IACH,UAAU,CAAC,IAAI,EAAE;QAChB,KAAK,EAAE,MAAM,OAAO,CAAC;YACpB,SAAS,EAAE,YAAY,CAAC;YACxB,cAAc,EAAE,MAAM,CAAC;SACvB,GAAG,IAAI,CAAC,CAAC;QACV,MAAM,CAAC,EAAE,WAAW,CAAC;KACrB,GAAG,uBAAuB;IA+B3B,kDAAkD;IAC5C,aAAa,CAAC,IAAI,EAAE;QACzB,QAAQ,EAAE,YAAY,CAAC;QACvB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;QAC1B,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAC5C,QAAQ,CAAC,EAAE,oBAAoB,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAwC/B;;;;OAIG;IACG,MAAM,CAAC,IAAI,EAAE;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,YAAY,CAAC;QACxB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;QAChC,YAAY,CAAC,EAAE,OAAO,CAAC;KACvB,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IA6DhC,UAAU,CAAC,IAAI,EAAE;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;KACf,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAkBtC;;;;OAIG;IACG,cAAc,CACnB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAmB/B,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAcnE,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAI1D,IAAI,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAU3C,4EAA4E;IACtE,aAAa,CAAC,IAAI,EAAE;QACzB,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC3B,GAAG,OAAO,CAAC,OAAO,CAAC;IAgBpB;;;;;;;;;;;OAWG;IACG,aAAa,CAAC,IAAI,EAAE;QACzB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;KAC/B,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;IAuFtC;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,IAAI,EAAE;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;KACpB,GAAG,OAAO,CAAC;QACX,QAAQ,EAAE,kBAAkB,CAAC;QAC7B,KAAK,EAAE,kBAAkB,CAAC;KAC1B,GAAG,IAAI,CAAC;CAmDT;AAED,mEAAmE;AACnE,MAAM,WAAW,uBAAuB;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,YAAY,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CACf"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { AudioSink } from "./types";
|
|
2
|
+
export interface PcmRingBufferOptions {
|
|
3
|
+
/**
|
|
4
|
+
* Fired when the buffer is full and a write overwrites unread samples.
|
|
5
|
+
* Reports the count of dropped samples in this write call. Schedulers
|
|
6
|
+
* should use this signal to apply backpressure upstream — silent
|
|
7
|
+
* overwrites produce audible glitches.
|
|
8
|
+
*/
|
|
9
|
+
onOverflow?: (droppedSamples: number) => void;
|
|
10
|
+
}
|
|
11
|
+
export declare class PcmRingBuffer {
|
|
12
|
+
private readonly capacity;
|
|
13
|
+
private readonly sampleRate;
|
|
14
|
+
private readonly sink;
|
|
15
|
+
private readonly buf;
|
|
16
|
+
private readPos;
|
|
17
|
+
private writePos;
|
|
18
|
+
private filled;
|
|
19
|
+
private readonly onOverflow?;
|
|
20
|
+
constructor(capacity: number, sampleRate: number, sink: AudioSink, options?: PcmRingBufferOptions);
|
|
21
|
+
write(pcm: Float32Array): void;
|
|
22
|
+
/** Fill ratio in [0, 1]. Schedulers can throttle TTS dispatches as this approaches 1. */
|
|
23
|
+
pressure(): number;
|
|
24
|
+
flushToSink(): number;
|
|
25
|
+
drain(): void;
|
|
26
|
+
size(): number;
|
|
27
|
+
capacityHint(): number;
|
|
28
|
+
}
|
|
29
|
+
export declare class InMemoryAudioSink implements AudioSink {
|
|
30
|
+
readonly chunks: Array<{
|
|
31
|
+
pcm: Float32Array;
|
|
32
|
+
sampleRate: number;
|
|
33
|
+
}>;
|
|
34
|
+
private buffered;
|
|
35
|
+
write(pcm: Float32Array, sampleRate: number): void;
|
|
36
|
+
drain(): void;
|
|
37
|
+
bufferedSamples(): number;
|
|
38
|
+
totalWritten(): number;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=ring-buffer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ring-buffer.d.ts","sourceRoot":"","sources":["../../../src/services/voice/ring-buffer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,MAAM,WAAW,oBAAoB;IACpC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9C;AAED,qBAAa,aAAa;IAQxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,IAAI;IATtB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAe;IACnC,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAmC;gBAG7C,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,SAAS,EAChC,OAAO,GAAE,oBAAyB;IASnC,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI;IAkC9B,yFAAyF;IACzF,QAAQ,IAAI,MAAM;IAIlB,WAAW,IAAI,MAAM;IAcrB,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,MAAM;IAId,YAAY,IAAI,MAAM;CAGtB;AAED,qBAAa,iBAAkB,YAAW,SAAS;IAClD,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,YAAY,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAM;IACvE,OAAO,CAAC,QAAQ,CAAK;IAErB,KAAK,CAAC,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAKlD,KAAK,IAAI,IAAI;IAIb,eAAe,IAAI,MAAM;IAIzB,YAAY,IAAI,MAAM;CAKtB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Phrase, RejectedTokenRange } from "./types";
|
|
2
|
+
type PhraseState = "queued" | "synthesizing" | "ringbuffered" | "played";
|
|
3
|
+
export interface RollbackEvent {
|
|
4
|
+
phraseId: number;
|
|
5
|
+
reason: "rejected-tokens";
|
|
6
|
+
rejectedRange: RejectedTokenRange;
|
|
7
|
+
}
|
|
8
|
+
export declare class RollbackQueue {
|
|
9
|
+
private readonly tracked;
|
|
10
|
+
track(phrase: Phrase): void;
|
|
11
|
+
markSynthesizing(phraseId: number): void;
|
|
12
|
+
markRingBuffered(phraseId: number): void;
|
|
13
|
+
markPlayed(phraseId: number): void;
|
|
14
|
+
drop(phraseId: number): void;
|
|
15
|
+
onRejected(range: RejectedTokenRange): RollbackEvent[];
|
|
16
|
+
snapshot(): ReadonlyArray<{
|
|
17
|
+
phrase: Phrase;
|
|
18
|
+
state: PhraseState;
|
|
19
|
+
}>;
|
|
20
|
+
private requireEntry;
|
|
21
|
+
private overlaps;
|
|
22
|
+
}
|
|
23
|
+
export {};
|
|
24
|
+
//# sourceMappingURL=rollback-queue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rollback-queue.d.ts","sourceRoot":"","sources":["../../../src/services/voice/rollback-queue.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE1D,KAAK,WAAW,GAAG,QAAQ,GAAG,cAAc,GAAG,cAAc,GAAG,QAAQ,CAAC;AAOzE,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,iBAAiB,CAAC;IAC1B,aAAa,EAAE,kBAAkB,CAAC;CAClC;AAED,qBAAa,aAAa;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAoC;IAE5D,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI3B,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKxC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKxC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKlC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI5B,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,EAAE;IAetD,QAAQ,IAAI,aAAa,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,CAAC;IAIjE,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,QAAQ;CAKhB"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Samantha-preset placeholder detection + on-the-fly regeneration.
|
|
3
|
+
*
|
|
4
|
+
* Background: the canonical default voice (Samantha, `af_same`) ships with
|
|
5
|
+
* the Eliza-1 bundle as `cache/voice-preset-default.bin` (ELZ1 format).
|
|
6
|
+
* The first I-wave shipped a 1052-byte zero-filled placeholder before the
|
|
7
|
+
* real preset bytes were produced — the runtime treats this placeholder as
|
|
8
|
+
* "not yet generated" and synthesises a fresh preset on first boot via the
|
|
9
|
+
* fused OmniVoice TTS (Path A).
|
|
10
|
+
*
|
|
11
|
+
* The detection rule is intentionally narrow: only an ELZ1 v1/v2 file whose
|
|
12
|
+
* (a) speaker embedding is exactly zero AND (b) ref_audio_tokens / ref_text
|
|
13
|
+
* are empty AND (c) phrase-cache seed is empty counts as a placeholder. Any
|
|
14
|
+
* file that has even one non-zero region is considered real and is left
|
|
15
|
+
* alone — the runtime never silently overwrites operator-supplied presets.
|
|
16
|
+
*
|
|
17
|
+
* The fallback chain executed by `EngineVoiceBridge.start()`:
|
|
18
|
+
*
|
|
19
|
+
* 1. If `cache/voice-preset-default.bin` is missing → throw (existing
|
|
20
|
+
* behaviour, the bundle is malformed).
|
|
21
|
+
* 2. If the file exists and is NOT a placeholder → load it as-is.
|
|
22
|
+
* 3. If it IS a placeholder AND the OmniVoice reference-encode FFI is
|
|
23
|
+
* available → regenerate the preset using the bundled Samantha
|
|
24
|
+
* reference clip + transcript, write the new bytes back to disk,
|
|
25
|
+
* then load.
|
|
26
|
+
* 4. If it IS a placeholder AND OmniVoice reference-encode is unavailable
|
|
27
|
+
* → log a loud warning and fall through to the bundled Kokoro default
|
|
28
|
+
* voice (`kokoro.defaultVoiceId`) by re-pointing the discovery layer.
|
|
29
|
+
*/
|
|
30
|
+
/** The exact byte-length the I-wave placeholder shipped at. Used as a fast
|
|
31
|
+
* pre-check before the more expensive structural parse — files of any
|
|
32
|
+
* other size cannot be the placeholder. */
|
|
33
|
+
export declare const SAMANTHA_PLACEHOLDER_BYTE_LENGTH = 1052;
|
|
34
|
+
/** Reasons `detectSamanthaPlaceholder` returns. Each is structurally
|
|
35
|
+
* distinct so the caller can branch without re-parsing. */
|
|
36
|
+
export type SamanthaPlaceholderState = {
|
|
37
|
+
kind: "missing";
|
|
38
|
+
} | {
|
|
39
|
+
kind: "real-preset";
|
|
40
|
+
reason: string;
|
|
41
|
+
} | {
|
|
42
|
+
kind: "placeholder";
|
|
43
|
+
} | {
|
|
44
|
+
kind: "unreadable";
|
|
45
|
+
reason: string;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Inspect `presetPath` and report whether it is the I-wave zero-fill
|
|
49
|
+
* placeholder, a real preset, missing, or unreadable. Pure I/O — no
|
|
50
|
+
* mutation of the file.
|
|
51
|
+
*/
|
|
52
|
+
export declare function detectSamanthaPlaceholder(presetPath: string): SamanthaPlaceholderState;
|
|
53
|
+
/**
|
|
54
|
+
* The text the on-the-fly regeneration uses as the Samantha reference
|
|
55
|
+
* transcript. Stable across versions so the produced preset is
|
|
56
|
+
* deterministic — pinning the prompt is part of the cacheability contract
|
|
57
|
+
* (same inputs -> same output bytes for byte-for-byte comparison).
|
|
58
|
+
*/
|
|
59
|
+
export declare const SAMANTHA_REFERENCE_TRANSCRIPT = "Hi, I'm Samantha. It's nice to finally talk to you about something real.";
|
|
60
|
+
/**
|
|
61
|
+
* The closed-vocabulary VoiceDesign instruct string baked into the
|
|
62
|
+
* regenerated Samantha preset. Mirrors the publish-time freeze CLI's
|
|
63
|
+
* settings so the runtime regen and a future operator-built preset land on
|
|
64
|
+
* the same surface. Pinned for deterministic regeneration.
|
|
65
|
+
*/
|
|
66
|
+
export declare const SAMANTHA_INSTRUCT = "female, american accent, young adult, moderate pitch";
|
|
67
|
+
//# sourceMappingURL=samantha-preset-placeholder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"samantha-preset-placeholder.d.ts","sourceRoot":"","sources":["../../../src/services/voice/samantha-preset-placeholder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAaH;;4CAE4C;AAC5C,eAAO,MAAM,gCAAgC,OAAO,CAAC;AAErD;4DAC4D;AAC5D,MAAM,MAAM,wBAAwB,GACjC;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1C;;;;GAIG;AACH,wBAAgB,yBAAyB,CACxC,UAAU,EAAE,MAAM,GAChB,wBAAwB,CAoE1B;AAED;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,6EACiC,CAAC;AAE5E;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,yDACyB,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Samantha-preset on-the-fly regeneration via the fused OmniVoice FFI.
|
|
3
|
+
*
|
|
4
|
+
* Path A from W3-11: when the bundle ships the I-wave zero-fill placeholder
|
|
5
|
+
* for `cache/voice-preset-default.bin`, the runtime synthesises a real
|
|
6
|
+
* preset by encoding the bundled Samantha reference clip through the FFI's
|
|
7
|
+
* `eliza_inference_encode_reference` entrypoint and writing the resulting
|
|
8
|
+
* `ref_audio_tokens` + canonical instruct/refText into a v2 preset blob.
|
|
9
|
+
*
|
|
10
|
+
* Determinism contract:
|
|
11
|
+
* - The reference clip bytes (24 kHz mono fp32 WAV) are pinned in the
|
|
12
|
+
* bundle.
|
|
13
|
+
* - The reference transcript (`SAMANTHA_REFERENCE_TRANSCRIPT`) is pinned.
|
|
14
|
+
* - The instruct string (`SAMANTHA_INSTRUCT`) is pinned.
|
|
15
|
+
* - The OmniVoice encode entrypoint does not consume randomness (the
|
|
16
|
+
* HuBERT semantic + RVQ codec passes are pure functions of the input
|
|
17
|
+
* PCM + the model weights).
|
|
18
|
+
* Therefore the produced preset bytes are reproducible byte-for-byte across
|
|
19
|
+
* boots given the same FFI library + bundle.
|
|
20
|
+
*/
|
|
21
|
+
/** Outcome of `ensureSamanthaPresetReady`. Distinct kinds let the caller
|
|
22
|
+
* log the right thing at the right level without re-doing detection. */
|
|
23
|
+
export type EnsureSamanthaPresetOutcome = {
|
|
24
|
+
kind: "real-preset";
|
|
25
|
+
} | {
|
|
26
|
+
kind: "missing-bundle-preset";
|
|
27
|
+
} | {
|
|
28
|
+
kind: "regenerated";
|
|
29
|
+
bytes: number;
|
|
30
|
+
K: number;
|
|
31
|
+
refT: number;
|
|
32
|
+
} | {
|
|
33
|
+
kind: "placeholder-no-regen";
|
|
34
|
+
reason: "missing-reference-wav" | "missing-ffi-library" | "ffi-no-encode-reference" | "encode-reference-failed";
|
|
35
|
+
detail: string;
|
|
36
|
+
};
|
|
37
|
+
export interface RegenerateOptions {
|
|
38
|
+
bundleRoot: string;
|
|
39
|
+
/** Absolute path the regenerated preset bytes should target. The caller
|
|
40
|
+
* performs the write — this function only produces the bytes + metadata. */
|
|
41
|
+
presetPath: string;
|
|
42
|
+
/** Override path to the Samantha reference WAV. Defaults to the bundle's
|
|
43
|
+
* `tts/omnivoice/samantha-ref.wav`. */
|
|
44
|
+
referenceWav?: string;
|
|
45
|
+
/** Override the canonical reference transcript. Defaults to the pinned
|
|
46
|
+
* `SAMANTHA_REFERENCE_TRANSCRIPT`. */
|
|
47
|
+
referenceText?: string;
|
|
48
|
+
}
|
|
49
|
+
export interface RegenerateResult {
|
|
50
|
+
bytes: Uint8Array;
|
|
51
|
+
K: number;
|
|
52
|
+
refT: number;
|
|
53
|
+
embeddingDim: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Decode a 24 kHz mono Float32 LE WAV file into a Float32Array of PCM
|
|
57
|
+
* samples. Refuses anything that is not the canonical OmniVoice reference
|
|
58
|
+
* format — encoders happily accept stereo / 16-bit / 48 kHz inputs and
|
|
59
|
+
* silently degrade, which is exactly the kind of fallback sludge AGENTS.md
|
|
60
|
+
* §3 forbids. We require the file be in the right format up front.
|
|
61
|
+
*/
|
|
62
|
+
export declare function decodeMonoFloat32Wav24kHz(bytes: Uint8Array): Float32Array;
|
|
63
|
+
/**
|
|
64
|
+
* Run the on-the-fly regeneration. Loads the bundle's OmniVoice FFI, calls
|
|
65
|
+
* `encodeReference` against the Samantha reference clip, and serialises the
|
|
66
|
+
* result into an ELZ1 v2 preset blob. The caller writes the bytes to disk.
|
|
67
|
+
*/
|
|
68
|
+
export declare function regenerateSamanthaPresetFromBundle(opts: RegenerateOptions): Promise<RegenerateResult>;
|
|
69
|
+
/**
|
|
70
|
+
* Pre-flight: detect a placeholder preset at the bundle's canonical path
|
|
71
|
+
* and regenerate it via OmniVoice when possible. Called by the engine's
|
|
72
|
+
* `ensureActiveBundleVoiceReady()` before the synchronous preset load.
|
|
73
|
+
*
|
|
74
|
+
* Outcomes:
|
|
75
|
+
*
|
|
76
|
+
* - `real-preset` — nothing to do; the file is a real preset.
|
|
77
|
+
* - `missing-bundle-preset` — file does not exist; the engine's existing
|
|
78
|
+
* error path runs (loud failure).
|
|
79
|
+
* - `regenerated` — preset bytes were generated and written.
|
|
80
|
+
* - `placeholder-no-regen` — placeholder detected but regen could not
|
|
81
|
+
* run (FFI missing, reference clip missing,
|
|
82
|
+
* etc.). Returned for the caller to log; the
|
|
83
|
+
* engine then falls through to the bundled
|
|
84
|
+
* Kokoro default voice.
|
|
85
|
+
*/
|
|
86
|
+
export declare function ensureSamanthaPresetReady(bundleRoot: string): Promise<EnsureSamanthaPresetOutcome>;
|
|
87
|
+
//# sourceMappingURL=samantha-preset-regenerator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"samantha-preset-regenerator.d.ts","sourceRoot":"","sources":["../../../src/services/voice/samantha-preset-regenerator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAgBH;yEACyE;AACzE,MAAM,MAAM,2BAA2B,GACpC;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,uBAAuB,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/D;IACA,IAAI,EAAE,sBAAsB,CAAC;IAC7B,MAAM,EACH,uBAAuB,GACvB,qBAAqB,GACrB,yBAAyB,GACzB,yBAAyB,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CACd,CAAC;AAEL,MAAM,WAAW,iBAAiB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB;iFAC6E;IAC7E,UAAU,EAAE,MAAM,CAAC;IACnB;4CACwC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;2CACuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,gBAAgB;IAChC,KAAK,EAAE,UAAU,CAAC;IAClB,CAAC,EAAE,MAAM,CAAC;IACV,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;CACrB;AAqCD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,UAAU,GAAG,YAAY,CAsEzE;AAED;;;;GAIG;AACH,wBAAsB,kCAAkC,CACvD,IAAI,EAAE,iBAAiB,GACrB,OAAO,CAAC,gBAAgB,CAAC,CAmH3B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,yBAAyB,CAC9C,UAAU,EAAE,MAAM,GAChB,OAAO,CAAC,2BAA2B,CAAC,CAgEtC"}
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { BargeInController } from "./barge-in";
|
|
2
|
+
import type { PhonemeTokenizer } from "./phoneme-tokenizer";
|
|
3
|
+
import { PhraseCache } from "./phrase-cache";
|
|
4
|
+
import { PhraseChunker } from "./phrase-chunker";
|
|
5
|
+
import { PrefixPreservingQueue } from "./prefix-preserving-queue";
|
|
6
|
+
import { PcmRingBuffer } from "./ring-buffer";
|
|
7
|
+
import { RollbackQueue } from "./rollback-queue";
|
|
8
|
+
import type { AudioChunk, AudioSink, OmniVoiceBackend, Phrase, RejectedTokenRange, SchedulerConfig, SpeakerPreset, TextToken, VoiceSchedulerTelemetryListener } from "./types";
|
|
9
|
+
/**
|
|
10
|
+
* T2 — per-phrase TTS chunk-size telemetry, emitted once per
|
|
11
|
+
* `synthesizePhraseStream` call when `SchedulerEvents.onChunkMetrics` is
|
|
12
|
+
* wired. `chunks` is the in-arrival-order distribution of streamed PCM
|
|
13
|
+
* chunks (size in PCM bytes assuming Float32 samples, duration in ms
|
|
14
|
+
* derived from samples / sampleRate). Used to debug T1-class chunk-size
|
|
15
|
+
* pathologies and to verify T3 time-budget effects.
|
|
16
|
+
*/
|
|
17
|
+
export interface TtsPhraseChunkMetrics {
|
|
18
|
+
phraseId: number;
|
|
19
|
+
/** Order-preserving list of per-chunk sizes. Empty when no chunks landed. */
|
|
20
|
+
chunks: ReadonlyArray<{
|
|
21
|
+
chunkBytes: number;
|
|
22
|
+
chunkDurationMs: number;
|
|
23
|
+
}>;
|
|
24
|
+
/** Sum of chunk durations in ms. */
|
|
25
|
+
totalDurationMs: number;
|
|
26
|
+
/** Sum of chunk bytes. */
|
|
27
|
+
totalBytes: number;
|
|
28
|
+
/** Whether the phrase synthesis was cancelled mid-stream. */
|
|
29
|
+
cancelled: boolean;
|
|
30
|
+
}
|
|
31
|
+
export type TtsChunkMetricsListener = (metrics: TtsPhraseChunkMetrics) => void;
|
|
32
|
+
export interface SchedulerEvents {
|
|
33
|
+
onPhrase?(phrase: Phrase): void;
|
|
34
|
+
onRollback?(phraseId: number, range: RejectedTokenRange): void;
|
|
35
|
+
onAudio?(chunk: AudioChunk): void;
|
|
36
|
+
/**
|
|
37
|
+
* Barge-in hard-stop: ring buffer drained, chunker reset, in-flight TTS
|
|
38
|
+
* cancelled. The engine layer's `voiceStreamingArgs` separately threads
|
|
39
|
+
* the `BargeInCancelToken.signal` (`bargeIn.onSignal` → `hard-stop`)
|
|
40
|
+
* into `dispatcher.generate` so the LLM/drafter abort too.
|
|
41
|
+
*/
|
|
42
|
+
onCancel?(): void;
|
|
43
|
+
/** Provisional barge-in: a VAD voice hit while the agent is speaking paused TTS playback. */
|
|
44
|
+
onTtsPause?(): void;
|
|
45
|
+
/** Blip resolved the provisional barge-in — TTS playback resumed. */
|
|
46
|
+
onTtsResume?(): void;
|
|
47
|
+
/** Structured scheduler telemetry for latency, cache, rollback, and barge-in metrics. */
|
|
48
|
+
onTelemetry?: VoiceSchedulerTelemetryListener;
|
|
49
|
+
/**
|
|
50
|
+
* T2 — per-phrase TTS chunk-size distribution. Optional; when set, the
|
|
51
|
+
* scheduler emits one summary per streamed phrase synthesis (success or
|
|
52
|
+
* cancelled). Lets test harnesses and metrics consumers verify T1/T3
|
|
53
|
+
* effects without scraping the audio bus.
|
|
54
|
+
*/
|
|
55
|
+
onChunkMetrics?: TtsChunkMetricsListener;
|
|
56
|
+
}
|
|
57
|
+
export interface SchedulerDeps {
|
|
58
|
+
backend: OmniVoiceBackend;
|
|
59
|
+
sink?: AudioSink;
|
|
60
|
+
phraseCache?: PhraseCache;
|
|
61
|
+
/** Optional. Required only when `config.chunkerConfig.chunkOn ===
|
|
62
|
+
* 'phoneme-stream'`. Defaults are available from
|
|
63
|
+
* `createDefaultPhonemeTokenizer()`. */
|
|
64
|
+
phonemeTokenizer?: PhonemeTokenizer;
|
|
65
|
+
}
|
|
66
|
+
export declare class VoiceScheduler {
|
|
67
|
+
readonly chunker: PhraseChunker;
|
|
68
|
+
readonly rollback: RollbackQueue;
|
|
69
|
+
readonly bargeIn: BargeInController;
|
|
70
|
+
readonly ringBuffer: PcmRingBuffer;
|
|
71
|
+
readonly sink: AudioSink;
|
|
72
|
+
readonly preset: SpeakerPreset;
|
|
73
|
+
/**
|
|
74
|
+
* Prefix-preserving barge-in queue. When the streaming TTS path is active,
|
|
75
|
+
* each audio chunk is enqueued here tagged with its token range. On
|
|
76
|
+
* hard-stop (barge-in), `rollbackAt(divergencePoint)` partitions the
|
|
77
|
+
* queue: chunks at or before the divergence point are replayed into the
|
|
78
|
+
* sink; chunks after are dropped. This lets audio that was already
|
|
79
|
+
* correct play through without re-synthesizing.
|
|
80
|
+
*/
|
|
81
|
+
readonly prefixQueue: PrefixPreservingQueue;
|
|
82
|
+
private readonly backend;
|
|
83
|
+
private readonly phraseCache;
|
|
84
|
+
private readonly events;
|
|
85
|
+
private readonly sampleRate;
|
|
86
|
+
private readonly inFlight;
|
|
87
|
+
private readonly maxInFlight;
|
|
88
|
+
private readonly streamingTtsActive;
|
|
89
|
+
private kernelTicks;
|
|
90
|
+
private nextStandalonePhraseId;
|
|
91
|
+
/** True while a provisional barge-in (`pause-tts`) has paused playback. */
|
|
92
|
+
private paused;
|
|
93
|
+
/**
|
|
94
|
+
* The last committed token index — updated whenever a phrase is dispatched
|
|
95
|
+
* to TTS. Used as the divergence point when a barge-in fires mid-response.
|
|
96
|
+
*/
|
|
97
|
+
private lastCommittedTokenIndex;
|
|
98
|
+
private agentSpeakingUntilMs;
|
|
99
|
+
private agentSpeakingTimer;
|
|
100
|
+
private phraseFlushTimer;
|
|
101
|
+
constructor(config: SchedulerConfig, deps: SchedulerDeps, events?: SchedulerEvents);
|
|
102
|
+
accept(token: TextToken, acceptedAt?: number): Promise<void>;
|
|
103
|
+
reject(range: RejectedTokenRange): Promise<void>;
|
|
104
|
+
flushPending(): Promise<void>;
|
|
105
|
+
waitIdle(): Promise<void>;
|
|
106
|
+
synthesizeText(text: string, signal?: AbortSignal): Promise<AudioChunk>;
|
|
107
|
+
prewarmPhrases(texts: ReadonlyArray<string>, opts?: {
|
|
108
|
+
concurrency?: number;
|
|
109
|
+
}): Promise<{
|
|
110
|
+
warmed: number;
|
|
111
|
+
cached: number;
|
|
112
|
+
}>;
|
|
113
|
+
tickKernel(): void;
|
|
114
|
+
kernelTickCount(): number;
|
|
115
|
+
/**
|
|
116
|
+
* Mark the agent as audibly speaking for the duration of audio handed to the
|
|
117
|
+
* sink. This is the barge-in gate: VAD blips only pause/resume TTS while this
|
|
118
|
+
* flag is true, and ASR-confirmed words hard-stop playback plus generation.
|
|
119
|
+
*/
|
|
120
|
+
markAgentSpeakingForAudio(samples: number, sampleRate: number): void;
|
|
121
|
+
/** True while a provisional barge-in has paused TTS playback. */
|
|
122
|
+
get ttsPaused(): boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Drop not-yet-spoken TTS without signalling a barge-in: drain the ring
|
|
125
|
+
* buffer, reset the chunker, cancel in-flight synthesis. Used by the turn
|
|
126
|
+
* controller when a speculative response is invalidated (speech resumed) —
|
|
127
|
+
* the speculative TTS was streamed off a stale partial transcript, so it
|
|
128
|
+
* must go, but this is not a user barge-in (`onCancel` is NOT fired).
|
|
129
|
+
*/
|
|
130
|
+
cancelPendingTts(): void;
|
|
131
|
+
private dispatchPhrase;
|
|
132
|
+
private runPhraseSynthesis;
|
|
133
|
+
private synthesizePhraseStream;
|
|
134
|
+
private isPhraseTracked;
|
|
135
|
+
private cancelNativeTts;
|
|
136
|
+
private commitAudio;
|
|
137
|
+
private onBargeInSignal;
|
|
138
|
+
private handleBargeIn;
|
|
139
|
+
private emitTtsCancel;
|
|
140
|
+
private emitTelemetry;
|
|
141
|
+
private armPhraseFlushTimer;
|
|
142
|
+
private clearPhraseFlushTimer;
|
|
143
|
+
private armAgentSpeakingTimer;
|
|
144
|
+
private clearAgentSpeaking;
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../../src/services/voice/scheduler.ts"],"names":[],"mappings":"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"}
|