@elizaos/plugin-local-inference 2.0.3-beta.2 → 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/README.md +84 -10
- package/dist/actions/generate-media.d.ts.map +1 -0
- package/dist/actions/identify-speaker.d.ts.map +1 -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.map +1 -0
- package/dist/index.js +39647 -0
- package/dist/index.js.map +217 -0
- package/{src → dist}/local-inference-routes.d.ts +9 -0
- package/dist/local-inference-routes.d.ts.map +1 -0
- package/dist/provider.d.ts.map +1 -0
- package/{src → dist}/routes/compat-helpers.d.ts +1 -1
- package/dist/routes/compat-helpers.d.ts.map +1 -0
- package/dist/routes/family-member-route.d.ts.map +1 -0
- package/{src → dist}/routes/index.d.ts +1 -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/{src → dist}/routes/live-diarization-route.d.ts +7 -0
- package/dist/routes/live-diarization-route.d.ts.map +1 -0
- package/dist/routes/local-inference-asr-route.d.ts.map +1 -0
- package/dist/routes/local-inference-asr-transcribe.d.ts.map +1 -0
- package/dist/routes/local-inference-compat-routes.d.ts.map +1 -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.map +1 -0
- package/{src → dist}/routes/transcripts-routes.d.ts +8 -0
- package/dist/routes/transcripts-routes.d.ts.map +1 -0
- package/dist/routes/voice-first-run-routes.d.ts.map +1 -0
- package/dist/routes/voice-models-routes.d.ts.map +1 -0
- package/dist/routes/voice-profile-plugin-routes.d.ts.map +1 -0
- package/dist/routes/voice-profiles-management-routes.d.ts.map +1 -0
- package/dist/routes/voice-speaker-profile-routes.d.ts.map +1 -0
- package/dist/runtime/embedding-manager-support.d.ts.map +1 -0
- package/dist/runtime/embedding-presets.d.ts.map +1 -0
- package/dist/runtime/embedding-warmup-policy.d.ts.map +1 -0
- package/{src → dist}/runtime/ensure-local-inference-handler.d.ts +8 -0
- package/dist/runtime/ensure-local-inference-handler.d.ts.map +1 -0
- package/{src → dist}/runtime/index.d.ts +1 -1
- 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/{src → dist}/runtime/voice-entity-binding.d.ts +10 -0
- package/dist/runtime/voice-entity-binding.d.ts.map +1 -0
- package/{src → dist}/services/active-model.d.ts +28 -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/{src → dist}/services/assignments.d.ts +16 -3
- 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/{src → dist}/services/backend.d.ts +110 -16
- package/dist/services/backend.d.ts.map +1 -0
- package/{src → dist}/services/bionic-host-loader.d.ts +21 -0
- package/dist/services/bionic-host-loader.d.ts.map +1 -0
- package/dist/services/bundled-models.d.ts.map +1 -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.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.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.map +1 -0
- package/{src → dist}/services/desktop-fused-ffi-backend-runtime.d.ts +22 -6
- package/dist/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
- package/dist/services/device-bridge.d.ts.map +1 -0
- package/dist/services/device-resource-metrics.d.ts.map +1 -0
- package/{src → dist}/services/device-tier.d.ts +19 -1
- package/dist/services/device-tier.d.ts.map +1 -0
- package/{src → dist}/services/downloader.d.ts +16 -4
- package/dist/services/downloader.d.ts.map +1 -0
- package/{src → dist}/services/engine.d.ts +43 -4
- 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.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/{src → dist}/services/ffi-streaming-backend.d.ts +28 -7
- package/dist/services/ffi-streaming-backend.d.ts.map +1 -0
- package/{src → dist}/services/ffi-streaming-runner.d.ts +24 -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.map +1 -0
- package/dist/services/handler-registry.d.ts.map +1 -0
- package/dist/services/hardware.d.ts.map +1 -0
- package/dist/services/image-description-runtime.d.ts.map +1 -0
- package/dist/services/imagegen/aosp-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/backend-selector.d.ts.map +1 -0
- package/dist/services/imagegen/coreml-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/errors.d.ts.map +1 -0
- package/dist/services/imagegen/index.d.ts.map +1 -0
- package/dist/services/imagegen/mflux.d.ts.map +1 -0
- package/{src → dist}/services/imagegen/sd-cpp.d.ts +1 -0
- package/dist/services/imagegen/sd-cpp.d.ts.map +1 -0
- package/dist/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/types.d.ts.map +1 -0
- package/{src → dist}/services/index.d.ts +3 -1
- 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.map +1 -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.map +1 -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.map +1 -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/{src → dist}/services/manifest/schema.d.ts +196 -6
- package/dist/services/manifest/schema.d.ts.map +1 -0
- package/{src → dist}/services/manifest/types.d.ts +3 -1
- package/dist/services/manifest/types.d.ts.map +1 -0
- package/dist/services/manifest/validator.d.ts.map +1 -0
- package/{src → dist}/services/memory-arbiter.d.ts +33 -3
- 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/{src → dist}/services/memory-monitor.d.ts +6 -0
- package/dist/services/memory-monitor.d.ts.map +1 -0
- package/dist/services/memory-pressure.d.ts.map +1 -0
- package/dist/services/mtp-doctor.d.ts.map +1 -0
- package/dist/services/network-policy.d.ts.map +1 -0
- package/dist/services/paths.d.ts.map +1 -0
- package/dist/services/planner-skeleton.d.ts.map +1 -0
- package/dist/services/providers.d.ts.map +1 -0
- package/dist/services/ram-budget.d.ts.map +1 -0
- package/dist/services/readiness.d.ts.map +1 -0
- package/dist/services/recommendation.d.ts.map +1 -0
- package/{src → dist}/services/registry.d.ts +11 -13
- package/dist/services/registry.d.ts.map +1 -0
- package/{src → dist}/services/router-handler.d.ts +2 -2
- package/dist/services/router-handler.d.ts.map +1 -0
- package/{src → dist}/services/routing-policy.d.ts +32 -9
- package/dist/services/routing-policy.d.ts.map +1 -0
- package/dist/services/routing-preferences.d.ts.map +1 -0
- package/dist/services/runtime-target.d.ts.map +1 -0
- package/{src → dist}/services/service.d.ts +1 -1
- package/dist/services/service.d.ts.map +1 -0
- package/dist/services/session-pool.d.ts.map +1 -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.map +1 -0
- package/dist/services/system-memory.d.ts.map +1 -0
- package/{src → dist}/services/types.d.ts +1 -1
- package/dist/services/types.d.ts.map +1 -0
- package/dist/services/verify-on-device.d.ts.map +1 -0
- package/dist/services/verify.d.ts.map +1 -0
- package/dist/services/vision/aosp-unavailable.d.ts.map +1 -0
- package/dist/services/vision/capacitor-llama.d.ts.map +1 -0
- package/dist/services/vision/cloud-fallback.d.ts.map +1 -0
- package/dist/services/vision/hash.d.ts.map +1 -0
- package/{src → dist}/services/vision/index.d.ts +1 -1
- package/dist/services/vision/index.d.ts.map +1 -0
- package/dist/services/vision/llama-server.d.ts.map +1 -0
- package/{src → dist}/services/vision/types.d.ts +13 -4
- package/dist/services/vision/types.d.ts.map +1 -0
- package/dist/services/vision/vast-fallback.d.ts.map +1 -0
- package/{src → dist}/services/vision-embedding-cache.d.ts +1 -1
- 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/{src → dist}/services/voice/audio-frame-consumer.d.ts +82 -0
- package/dist/services/voice/audio-frame-consumer.d.ts.map +1 -0
- package/dist/services/voice/barge-in.d.ts.map +1 -0
- package/dist/services/voice/cancellation-coordinator.d.ts.map +1 -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.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/{src → dist}/services/voice/eliza1-eot-scorer.d.ts +8 -8
- 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/{src → dist}/services/voice/embedding.d.ts +2 -3
- package/dist/services/voice/embedding.d.ts.map +1 -0
- package/dist/services/voice/emotion-attribution.d.ts.map +1 -0
- package/{src → dist}/services/voice/engine-bridge.d.ts +8 -5
- package/dist/services/voice/engine-bridge.d.ts.map +1 -0
- package/{src → dist}/services/voice/eot-classifier-ggml.d.ts +22 -22
- package/dist/services/voice/eot-classifier-ggml.d.ts.map +1 -0
- package/{src → dist}/services/voice/eot-classifier.d.ts +9 -12
- package/dist/services/voice/eot-classifier.d.ts.map +1 -0
- package/{src → dist}/services/voice/errors.d.ts +1 -1
- package/dist/services/voice/errors.d.ts.map +1 -0
- package/{src → dist}/services/voice/expressive-tags.d.ts +5 -5
- package/dist/services/voice/expressive-tags.d.ts.map +1 -0
- package/{src → dist}/services/voice/ffi-bindings.d.ts +26 -4
- package/dist/services/voice/ffi-bindings.d.ts.map +1 -0
- package/dist/services/voice/first-line-cache.d.ts.map +1 -0
- package/{src → dist}/services/voice/fused-eot-scorer.d.ts +6 -6
- package/dist/services/voice/fused-eot-scorer.d.ts.map +1 -0
- package/{src → dist}/services/voice/index.d.ts +8 -3
- 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/{src → dist}/services/voice/kokoro/kokoro-backend.d.ts +15 -0
- package/dist/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
- package/{src → dist}/services/voice/kokoro/kokoro-engine-discovery.d.ts +1 -1
- package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
- package/{src → dist}/services/voice/kokoro/kokoro-ffi-runtime.d.ts +3 -3
- package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -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.map +1 -0
- package/{src → dist}/services/voice/kokoro/pick-runtime.d.ts +1 -1
- 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.map +1 -0
- package/dist/services/voice/kokoro/voice-presets.d.ts.map +1 -0
- package/dist/services/voice/kokoro/voices.d.ts.map +1 -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/{src → dist}/services/voice/mic-source.d.ts +1 -1
- 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.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/{src → dist}/services/voice/partial-stabilizer.d.ts +1 -1
- package/dist/services/voice/partial-stabilizer.d.ts.map +1 -0
- package/dist/services/voice/phoneme-tokenizer.d.ts.map +1 -0
- package/dist/services/voice/phrase-cache.d.ts.map +1 -0
- package/dist/services/voice/phrase-chunker.d.ts.map +1 -0
- package/dist/services/voice/pipeline-impls.d.ts.map +1 -0
- package/dist/services/voice/pipeline.d.ts.map +1 -0
- package/dist/services/voice/prefill-client.d.ts.map +1 -0
- package/dist/services/voice/prefix-preserving-queue.d.ts.map +1 -0
- package/dist/services/voice/profile-store.d.ts.map +1 -0
- package/dist/services/voice/ring-buffer.d.ts.map +1 -0
- package/dist/services/voice/rollback-queue.d.ts.map +1 -0
- package/dist/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
- package/dist/services/voice/samantha-preset-regenerator.d.ts.map +1 -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/{src → dist}/services/voice/shared-resources.d.ts +14 -0
- package/dist/services/voice/shared-resources.d.ts.map +1 -0
- package/dist/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
- package/dist/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
- package/dist/services/voice/speaker/diarizer.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder-fused.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder.d.ts.map +1 -0
- package/dist/services/voice/speaker-imprint.d.ts.map +1 -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.map +1 -0
- package/{src → dist}/services/voice/transcriber.d.ts +4 -4
- package/dist/services/voice/transcriber.d.ts.map +1 -0
- package/dist/services/voice/transcript-knowledge.d.ts.map +1 -0
- package/{src → dist}/services/voice/transcript-service.d.ts +20 -1
- package/dist/services/voice/transcript-service.d.ts.map +1 -0
- package/{src → dist}/services/voice/transcript-store.d.ts +12 -1
- package/dist/services/voice/transcript-store.d.ts.map +1 -0
- package/dist/services/voice/turn-controller.d.ts.map +1 -0
- package/{src → dist}/services/voice/types.d.ts +6 -6
- package/dist/services/voice/types.d.ts.map +1 -0
- package/{src → dist}/services/voice/vad.d.ts +6 -5
- package/dist/services/voice/vad.d.ts.map +1 -0
- package/dist/services/voice/voice-budget.d.ts.map +1 -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/{src → dist}/services/voice/voice-preset-format.d.ts +2 -2
- package/dist/services/voice/voice-preset-format.d.ts.map +1 -0
- package/dist/services/voice/voice-profile-artifact.d.ts.map +1 -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.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/{src → dist}/services/voice/wake-word-ggml.d.ts +8 -9
- package/dist/services/voice/wake-word-ggml.d.ts.map +1 -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.map +1 -0
- package/dist/services/voice-model-updater.d.ts.map +1 -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 +28 -9
- package/registry-entry.json +137 -0
- package/src/adapters/capacitor-llama/__tests__/voice-turn.test.ts +293 -0
- package/src/adapters/capacitor-llama/environment.ts +1 -1
- package/src/adapters/capacitor-llama/index.ts +28 -4
- package/src/adapters/capacitor-llama/native-voice-capture.ts +140 -0
- package/src/adapters/capacitor-llama/text-streaming.ts +2 -2
- package/src/adapters/capacitor-llama/voice-turn.ts +178 -0
- package/src/backends/apple-foundation.ts +1 -1
- package/src/local-inference-routes.test.ts +57 -11
- package/src/local-inference-routes.ts +90 -8
- package/src/provider.ts +32 -3
- package/src/routes/compat-helpers.ts +2 -1
- package/src/routes/index.ts +1 -0
- package/src/routes/live-diarization-route.test.ts +134 -0
- package/src/routes/live-diarization-route.ts +79 -3
- package/src/routes/local-inference-asr-route.test.ts +43 -2
- package/src/routes/local-inference-asr-route.ts +7 -4
- package/src/routes/local-inference-asr-transcribe.test.ts +4 -4
- package/src/routes/local-inference-asr-transcribe.ts +1 -1
- package/src/routes/local-inference-compat-routes.test.ts +3 -3
- package/src/routes/local-inference-compat-routes.ts +23 -56
- package/src/routes/native-pcm-turn-route.test.ts +136 -0
- package/src/routes/native-pcm-turn-route.ts +121 -0
- package/src/routes/transcripts-routes.test.ts +51 -0
- package/src/routes/transcripts-routes.ts +35 -3
- package/src/runtime/bionic-wire-encoding.test.ts +147 -0
- package/src/runtime/ensure-local-inference-handler.test.ts +203 -5
- package/src/runtime/ensure-local-inference-handler.ts +203 -11
- package/src/runtime/index.ts +4 -1
- package/src/runtime/mobile-local-inference-gate.test.ts +85 -2
- package/src/runtime/mobile-local-inference-gate.ts +60 -5
- package/src/runtime/voice-entity-binding.transcript.test.ts +29 -0
- package/src/runtime/voice-entity-binding.ts +46 -6
- package/src/runtime/voice-speaker-entity-contract.test.ts +149 -0
- package/src/services/README.md +2 -2
- package/src/services/__tests__/backend-selector.precedence.test.ts +333 -0
- package/src/services/active-model-context-fit.test.ts +125 -0
- package/src/services/active-model.ts +211 -8
- package/src/services/asr-provenance.ts +68 -0
- package/src/services/assignment-validation.test.ts +118 -0
- package/src/services/assignments.test.ts +26 -0
- package/src/services/assignments.ts +52 -4
- package/src/services/backend.test.ts +84 -0
- package/src/services/backend.ts +198 -19
- package/src/services/bionic-host-loader.test.ts +94 -1
- package/src/services/bionic-host-loader.ts +72 -0
- package/src/services/cache-bridge.test.ts +7 -7
- package/src/services/catalog.test.ts +32 -11
- package/src/services/catalog.ts +6 -0
- package/src/services/cloud-fallback.ts +1 -1
- package/src/services/context-fit.test.ts +121 -0
- package/src/services/context-fit.ts +113 -0
- package/src/services/desktop-fused-ffi-backend-runtime.ts +99 -7
- package/src/services/device-tier.test.ts +89 -2
- package/src/services/device-tier.ts +103 -11
- package/src/services/downloader.test.ts +199 -58
- package/src/services/downloader.ts +141 -27
- package/src/services/engine-direct-bundle.test.ts +38 -6
- package/src/services/engine.ts +291 -104
- package/src/services/ensure-local-artifacts.ts +1 -1
- package/src/services/ffi-llm-streaming-abi.ts +6 -3
- package/src/services/ffi-streaming-backend.ts +44 -8
- package/src/services/ffi-streaming-runner.test.ts +163 -3
- package/src/services/ffi-streaming-runner.ts +54 -1
- package/src/services/ffi-unload-ordering.test.ts +5 -1
- package/src/services/fused-eliza1-no-regression.test.ts +144 -0
- package/src/services/hardware.test.ts +7 -2
- package/src/services/hardware.ts +28 -0
- package/src/services/imagegen/backend-selector.test.ts +190 -0
- package/src/services/imagegen/sd-cpp.ts +6 -9
- package/src/services/index.ts +18 -0
- package/src/services/ios-llama-streaming.ts +1 -1
- package/src/services/kv-spill.ts +6 -5
- 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/manifest/eliza-1.manifest.v1.json +84 -2
- package/src/services/manifest/index.ts +6 -0
- package/src/services/manifest/manifest.test.ts +156 -54
- package/src/services/manifest/schema.ts +160 -52
- package/src/services/manifest/types.ts +6 -0
- package/src/services/manifest/validator.ts +91 -25
- package/src/services/memory-arbiter.test.ts +139 -0
- package/src/services/memory-arbiter.ts +81 -15
- package/src/services/memory-benchmark.test.ts +91 -0
- package/src/services/memory-benchmark.ts +354 -0
- package/src/services/memory-monitor.test.ts +24 -0
- package/src/services/memory-monitor.ts +12 -0
- package/src/services/mtp-doctor.ts +10 -2
- package/src/services/network-policy.ts +5 -5
- package/src/services/ram-budget-cache.test.ts +2 -1
- package/src/services/ram-budget.ts +0 -0
- package/src/services/recommendation.test.ts +216 -0
- package/src/services/registry.ts +25 -19
- package/src/services/required-kernels-gate.test.ts +64 -0
- package/src/services/router-handler.ts +43 -24
- package/src/services/routing-policy.test.ts +211 -23
- package/src/services/routing-policy.ts +92 -22
- package/src/services/service.test.ts +3 -3
- package/src/services/service.ts +22 -7
- package/src/services/transcription-priority.test.ts +2 -2
- package/src/services/types.ts +4 -0
- package/src/services/verify-on-device.test.ts +2 -2
- package/src/services/vision/hash.ts +1 -1
- package/src/services/vision/index.ts +2 -2
- package/src/services/vision/llama-server.ts +1 -1
- package/src/services/vision/types.ts +13 -4
- package/src/services/vision-embedding-cache.ts +1 -1
- package/src/services/voice/VOICE_WORKBENCH.md +71 -26
- package/src/services/voice/__fixtures__/voice-workbench-logic-baseline.json +180 -0
- package/src/services/voice/__test-helpers__/synthetic-speech.ts +72 -2
- package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +29 -29
- package/src/services/voice/__tests__/streaming-asr.test.ts +1 -1
- 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 +6 -8
- package/src/services/voice/audio-frame-consumer.test.ts +327 -1
- package/src/services/voice/audio-frame-consumer.ts +165 -5
- package/src/services/voice/barge-in.ts +2 -3
- 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 +2 -2
- package/src/services/voice/e2e-harness.ts +175 -16
- 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 +22 -22
- package/src/services/voice/embedding.ts +2 -3
- package/src/services/voice/engine-bridge-transcript-join.test.ts +278 -0
- package/src/services/voice/engine-bridge.ts +151 -110
- package/src/services/voice/eot-classifier-ggml.ts +42 -39
- package/src/services/voice/eot-classifier.test.ts +98 -0
- package/src/services/voice/eot-classifier.ts +11 -122
- package/src/services/voice/errors.ts +2 -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 +8 -8
- package/src/services/voice/ffi-bindings.test.ts +10 -3
- package/src/services/voice/ffi-bindings.ts +177 -15
- package/src/services/voice/fused-eot-scorer.ts +17 -13
- package/src/services/voice/index.ts +33 -12
- package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +112 -1
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +88 -3
- package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +37 -201
- package/src/services/voice/kokoro/kokoro-backend.ts +16 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.ts +1 -1
- package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +3 -3
- package/src/services/voice/kokoro/pick-runtime.ts +1 -1
- package/src/services/voice/kokoro/runtime-selection.ts +28 -201
- package/src/services/voice/live-diarization-session.echo.test.ts +232 -0
- package/src/services/voice/live-diarization-session.ts +335 -2
- 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.ts +1 -1
- 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/partial-stabilizer.ts +1 -1
- package/src/services/voice/pipeline.ts +3 -4
- 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/samantha-preset-regenerator.wav.test.ts +90 -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 +23 -0
- package/src/services/voice/speaker/attribution-pipeline.test.ts +221 -0
- package/src/services/voice/speaker/attribution-pipeline.ts +85 -22
- package/src/services/voice/speaker/encoder-ggml.test.ts +59 -0
- package/src/services/voice/transcriber.asr-backend.test.ts +76 -0
- package/src/services/voice/transcriber.ts +4 -4
- package/src/services/voice/transcript-service.test.ts +58 -0
- package/src/services/voice/transcript-service.ts +64 -0
- package/src/services/voice/transcript-store.test.ts +36 -0
- package/src/services/voice/transcript-store.ts +32 -0
- package/src/services/voice/types.ts +7 -7
- package/src/services/voice/vad.test.ts +33 -15
- package/src/services/voice/vad.ts +25 -20
- package/src/services/voice/voice-budget.test.ts +0 -3
- package/src/services/voice/voice-budget.ts +6 -6
- package/src/services/voice/voice-duet.test.ts +1 -1
- 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 +17 -4
- package/src/services/voice/voice-scenario.test.ts +159 -0
- package/src/services/voice/voice-scenario.ts +133 -7
- package/src/services/voice/voice-scenario.turn-helpers.test.ts +77 -0
- package/src/services/voice/voice-workbench-report.ts +58 -17
- package/src/services/voice/wake-word-ggml.ts +12 -13
- 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-prewarm.ts +1 -1
- package/src/voice-workbench.ts +71 -0
- package/src/actions/generate-media.d.ts.map +0 -1
- package/src/actions/identify-speaker.d.ts.map +0 -1
- package/src/actions/transcription-control.d.ts.map +0 -1
- package/src/index.d.ts.map +0 -1
- package/src/local-inference-routes.d.ts.map +0 -1
- package/src/provider.d.ts.map +0 -1
- package/src/routes/compat-helpers.d.ts.map +0 -1
- package/src/routes/family-member-route.d.ts.map +0 -1
- package/src/routes/index.d.ts.map +0 -1
- package/src/routes/live-diarization-route.d.ts.map +0 -1
- package/src/routes/local-inference-asr-route.d.ts.map +0 -1
- package/src/routes/local-inference-asr-transcribe.d.ts.map +0 -1
- package/src/routes/local-inference-compat-routes.d.ts.map +0 -1
- package/src/routes/local-inference-tts-route.d.ts.map +0 -1
- package/src/routes/transcript-audio-store.d.ts.map +0 -1
- package/src/routes/transcripts-routes.d.ts.map +0 -1
- package/src/routes/voice-first-run-routes.d.ts.map +0 -1
- package/src/routes/voice-models-routes.d.ts.map +0 -1
- package/src/routes/voice-profile-plugin-routes.d.ts.map +0 -1
- package/src/routes/voice-profiles-management-routes.d.ts.map +0 -1
- package/src/routes/voice-speaker-profile-routes.d.ts.map +0 -1
- package/src/runtime/embedding-manager-support.d.ts.map +0 -1
- package/src/runtime/embedding-presets.d.ts.map +0 -1
- package/src/runtime/embedding-warmup-policy.d.ts.map +0 -1
- package/src/runtime/ensure-local-inference-handler.d.ts.map +0 -1
- package/src/runtime/index.d.ts.map +0 -1
- package/src/runtime/mobile-local-inference-gate.d.ts +0 -31
- package/src/runtime/mobile-local-inference-gate.d.ts.map +0 -1
- package/src/runtime/voice-entity-binding.d.ts.map +0 -1
- package/src/services/active-model.d.ts.map +0 -1
- package/src/services/assignments.d.ts.map +0 -1
- package/src/services/backend.d.ts.map +0 -1
- package/src/services/bionic-host-loader.d.ts.map +0 -1
- package/src/services/bundled-models.d.ts.map +0 -1
- package/src/services/cache-bridge.d.ts.map +0 -1
- package/src/services/catalog.d.ts +0 -10
- package/src/services/catalog.d.ts.map +0 -1
- package/src/services/checkpoint-client.d.ts.map +0 -1
- package/src/services/cloud-fallback.d.ts.map +0 -1
- package/src/services/conversation-registry.d.ts.map +0 -1
- package/src/services/desktop-fused-ffi-backend-runtime.d.ts.map +0 -1
- package/src/services/device-bridge.d.ts.map +0 -1
- package/src/services/device-resource-metrics.d.ts.map +0 -1
- package/src/services/device-tier.d.ts.map +0 -1
- package/src/services/downloader.d.ts.map +0 -1
- package/src/services/engine.d.ts.map +0 -1
- package/src/services/external-scanner.d.ts.map +0 -1
- package/src/services/ffi-streaming-backend.d.ts.map +0 -1
- package/src/services/ffi-streaming-runner.d.ts.map +0 -1
- package/src/services/gpu-detect.d.ts.map +0 -1
- package/src/services/handler-registry.d.ts.map +0 -1
- package/src/services/hardware.d.ts.map +0 -1
- package/src/services/hf-search.d.ts +0 -26
- package/src/services/hf-search.d.ts.map +0 -1
- package/src/services/hf-search.test.ts +0 -69
- package/src/services/hf-search.ts +0 -420
- package/src/services/image-description-runtime.d.ts.map +0 -1
- package/src/services/imagegen/aosp-unavailable.d.ts.map +0 -1
- package/src/services/imagegen/backend-selector.d.ts.map +0 -1
- package/src/services/imagegen/coreml-unavailable.d.ts.map +0 -1
- package/src/services/imagegen/errors.d.ts.map +0 -1
- package/src/services/imagegen/index.d.ts.map +0 -1
- package/src/services/imagegen/mflux.d.ts.map +0 -1
- package/src/services/imagegen/sd-cpp.d.ts.map +0 -1
- package/src/services/imagegen/tensorrt-unavailable.d.ts.map +0 -1
- package/src/services/imagegen/types.d.ts.map +0 -1
- package/src/services/index.d.ts.map +0 -1
- package/src/services/inference-capabilities.d.ts.map +0 -1
- package/src/services/inference-telemetry.d.ts.map +0 -1
- package/src/services/kv-spill.d.ts.map +0 -1
- package/src/services/latency-trace.d.ts.map +0 -1
- package/src/services/llm-streaming-binding.d.ts.map +0 -1
- package/src/services/load-args.d.ts.map +0 -1
- package/src/services/manifest/index.d.ts +0 -4
- package/src/services/manifest/index.d.ts.map +0 -1
- package/src/services/manifest/schema.d.ts.map +0 -1
- package/src/services/manifest/types.d.ts.map +0 -1
- package/src/services/manifest/validator.d.ts.map +0 -1
- package/src/services/memory-arbiter.d.ts.map +0 -1
- package/src/services/memory-monitor.d.ts.map +0 -1
- package/src/services/memory-pressure.d.ts.map +0 -1
- package/src/services/mtp-doctor.d.ts.map +0 -1
- package/src/services/network-policy.d.ts.map +0 -1
- package/src/services/paths.d.ts.map +0 -1
- package/src/services/planner-skeleton.d.ts.map +0 -1
- package/src/services/providers.d.ts.map +0 -1
- package/src/services/ram-budget.d.ts.map +0 -1
- package/src/services/readiness.d.ts.map +0 -1
- package/src/services/recommendation.d.ts.map +0 -1
- package/src/services/registry.d.ts.map +0 -1
- package/src/services/router-handler.d.ts.map +0 -1
- package/src/services/routing-policy.d.ts.map +0 -1
- package/src/services/routing-preferences.d.ts.map +0 -1
- package/src/services/runtime-target.d.ts.map +0 -1
- package/src/services/service.d.ts.map +0 -1
- package/src/services/session-pool.d.ts.map +0 -1
- package/src/services/structured-output/deterministic-repair.d.ts.map +0 -1
- package/src/services/structured-output.d.ts.map +0 -1
- package/src/services/system-memory.d.ts.map +0 -1
- package/src/services/types.d.ts.map +0 -1
- package/src/services/verify-on-device.d.ts.map +0 -1
- package/src/services/verify.d.ts.map +0 -1
- package/src/services/vision/aosp-unavailable.d.ts.map +0 -1
- package/src/services/vision/capacitor-llama.d.ts.map +0 -1
- package/src/services/vision/cloud-fallback.d.ts.map +0 -1
- package/src/services/vision/hash.d.ts.map +0 -1
- package/src/services/vision/index.d.ts.map +0 -1
- package/src/services/vision/llama-server.d.ts.map +0 -1
- package/src/services/vision/types.d.ts.map +0 -1
- package/src/services/vision/vast-fallback.d.ts.map +0 -1
- package/src/services/vision-embedding-cache.d.ts.map +0 -1
- package/src/services/voice/audio-frame-consumer.d.ts.map +0 -1
- package/src/services/voice/barge-in.d.ts.map +0 -1
- package/src/services/voice/cancellation-coordinator.d.ts.map +0 -1
- package/src/services/voice/checkpoint-manager.d.ts.map +0 -1
- package/src/services/voice/eager-context-builder.d.ts.map +0 -1
- package/src/services/voice/eliza1-eot-scorer.d.ts.map +0 -1
- package/src/services/voice/embedding.d.ts.map +0 -1
- package/src/services/voice/emotion-attribution.d.ts.map +0 -1
- package/src/services/voice/engine-bridge.d.ts.map +0 -1
- package/src/services/voice/eot-classifier-ggml.d.ts.map +0 -1
- package/src/services/voice/eot-classifier.d.ts.map +0 -1
- package/src/services/voice/errors.d.ts.map +0 -1
- package/src/services/voice/expressive-tags.d.ts.map +0 -1
- package/src/services/voice/ffi-bindings.d.ts.map +0 -1
- package/src/services/voice/first-line-cache.d.ts.map +0 -1
- package/src/services/voice/fused-eot-scorer.d.ts.map +0 -1
- package/src/services/voice/index.d.ts.map +0 -1
- package/src/services/voice/kokoro/kokoro-backend.d.ts.map +0 -1
- package/src/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +0 -1
- package/src/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +0 -1
- package/src/services/voice/kokoro/kokoro-runtime.d.ts.map +0 -1
- package/src/services/voice/kokoro/phonemizer.d.ts.map +0 -1
- package/src/services/voice/kokoro/pick-runtime.d.ts.map +0 -1
- package/src/services/voice/kokoro/runtime-selection.d.ts +0 -92
- package/src/services/voice/kokoro/runtime-selection.d.ts.map +0 -1
- package/src/services/voice/kokoro/types.d.ts.map +0 -1
- package/src/services/voice/kokoro/voice-presets.d.ts.map +0 -1
- package/src/services/voice/kokoro/voices.d.ts.map +0 -1
- package/src/services/voice/lifecycle.d.ts.map +0 -1
- package/src/services/voice/live-diarization-session.d.ts +0 -96
- package/src/services/voice/live-diarization-session.d.ts.map +0 -1
- package/src/services/voice/mic-source.d.ts.map +0 -1
- package/src/services/voice/optimistic-policy.d.ts.map +0 -1
- package/src/services/voice/partial-stabilizer.d.ts.map +0 -1
- package/src/services/voice/phoneme-tokenizer.d.ts.map +0 -1
- package/src/services/voice/phrase-cache.d.ts.map +0 -1
- package/src/services/voice/phrase-chunker.d.ts.map +0 -1
- package/src/services/voice/pipeline-impls.d.ts.map +0 -1
- package/src/services/voice/pipeline.d.ts.map +0 -1
- package/src/services/voice/prefill-client.d.ts.map +0 -1
- package/src/services/voice/prefix-preserving-queue.d.ts.map +0 -1
- package/src/services/voice/profile-store.d.ts.map +0 -1
- package/src/services/voice/ring-buffer.d.ts.map +0 -1
- package/src/services/voice/rollback-queue.d.ts.map +0 -1
- package/src/services/voice/samantha-preset-placeholder.d.ts.map +0 -1
- package/src/services/voice/samantha-preset-regenerator.d.ts.map +0 -1
- package/src/services/voice/scheduler.d.ts.map +0 -1
- package/src/services/voice/shared-resources.d.ts.map +0 -1
- package/src/services/voice/speaker/attribution-pipeline.d.ts.map +0 -1
- package/src/services/voice/speaker/diarizer-fused.d.ts.map +0 -1
- package/src/services/voice/speaker/diarizer.d.ts.map +0 -1
- package/src/services/voice/speaker/encoder-fused.d.ts.map +0 -1
- package/src/services/voice/speaker/encoder-ggml.d.ts.map +0 -1
- package/src/services/voice/speaker/encoder.d.ts.map +0 -1
- package/src/services/voice/speaker-imprint.d.ts.map +0 -1
- package/src/services/voice/speaker-preset-cache.d.ts.map +0 -1
- package/src/services/voice/system-audio-sink.d.ts.map +0 -1
- package/src/services/voice/transcriber.d.ts.map +0 -1
- package/src/services/voice/transcript-knowledge.d.ts.map +0 -1
- package/src/services/voice/transcript-service.d.ts.map +0 -1
- package/src/services/voice/transcript-store.d.ts.map +0 -1
- package/src/services/voice/turn-controller.d.ts.map +0 -1
- package/src/services/voice/types.d.ts.map +0 -1
- package/src/services/voice/vad.d.ts.map +0 -1
- package/src/services/voice/voice-budget.d.ts.map +0 -1
- package/src/services/voice/voice-emotion-classifier.d.ts.map +0 -1
- package/src/services/voice/voice-preset-format.d.ts.map +0 -1
- package/src/services/voice/voice-profile-artifact.d.ts.map +0 -1
- package/src/services/voice/voice-profile-routes.d.ts.map +0 -1
- package/src/services/voice/voice-settings.d.ts +0 -82
- package/src/services/voice/voice-settings.d.ts.map +0 -1
- package/src/services/voice/voice-settings.ts +0 -172
- package/src/services/voice/voice-state-machine.d.ts.map +0 -1
- package/src/services/voice/wake-word-ggml.d.ts.map +0 -1
- package/src/services/voice/wake-word.d.ts.map +0 -1
- package/src/services/voice/wrap-with-first-line-cache.d.ts.map +0 -1
- package/src/services/voice-model-updater.d.ts.map +0 -1
- package/src/services/voice-prewarm.d.ts.map +0 -1
- /package/{src → dist}/actions/generate-media.d.ts +0 -0
- /package/{src → dist}/actions/identify-speaker.d.ts +0 -0
- /package/{src → dist}/actions/transcription-control.d.ts +0 -0
- /package/{src → dist}/index.d.ts +0 -0
- /package/{src → dist}/provider.d.ts +0 -0
- /package/{src → dist}/routes/family-member-route.d.ts +0 -0
- /package/{src → dist}/routes/local-inference-asr-route.d.ts +0 -0
- /package/{src → dist}/routes/local-inference-asr-transcribe.d.ts +0 -0
- /package/{src → dist}/routes/local-inference-compat-routes.d.ts +0 -0
- /package/{src → dist}/routes/local-inference-tts-route.d.ts +0 -0
- /package/{src → dist}/routes/transcript-audio-store.d.ts +0 -0
- /package/{src → dist}/routes/voice-first-run-routes.d.ts +0 -0
- /package/{src → dist}/routes/voice-models-routes.d.ts +0 -0
- /package/{src → dist}/routes/voice-profile-plugin-routes.d.ts +0 -0
- /package/{src → dist}/routes/voice-profiles-management-routes.d.ts +0 -0
- /package/{src → dist}/routes/voice-speaker-profile-routes.d.ts +0 -0
- /package/{src → dist}/runtime/embedding-manager-support.d.ts +0 -0
- /package/{src → dist}/runtime/embedding-presets.d.ts +0 -0
- /package/{src → dist}/runtime/embedding-warmup-policy.d.ts +0 -0
- /package/{src → dist}/services/bundled-models.d.ts +0 -0
- /package/{src → dist}/services/cache-bridge.d.ts +0 -0
- /package/{src → dist}/services/checkpoint-client.d.ts +0 -0
- /package/{src → dist}/services/cloud-fallback.d.ts +0 -0
- /package/{src → dist}/services/conversation-registry.d.ts +0 -0
- /package/{src → dist}/services/device-bridge.d.ts +0 -0
- /package/{src → dist}/services/device-resource-metrics.d.ts +0 -0
- /package/{src → dist}/services/external-scanner.d.ts +0 -0
- /package/{src → dist}/services/gpu-detect.d.ts +0 -0
- /package/{src → dist}/services/handler-registry.d.ts +0 -0
- /package/{src → dist}/services/hardware.d.ts +0 -0
- /package/{src → dist}/services/image-description-runtime.d.ts +0 -0
- /package/{src → dist}/services/imagegen/aosp-unavailable.d.ts +0 -0
- /package/{src → dist}/services/imagegen/backend-selector.d.ts +0 -0
- /package/{src → dist}/services/imagegen/coreml-unavailable.d.ts +0 -0
- /package/{src → dist}/services/imagegen/errors.d.ts +0 -0
- /package/{src → dist}/services/imagegen/index.d.ts +0 -0
- /package/{src → dist}/services/imagegen/mflux.d.ts +0 -0
- /package/{src → dist}/services/imagegen/tensorrt-unavailable.d.ts +0 -0
- /package/{src → dist}/services/imagegen/types.d.ts +0 -0
- /package/{src → dist}/services/inference-capabilities.d.ts +0 -0
- /package/{src → dist}/services/inference-telemetry.d.ts +0 -0
- /package/{src → dist}/services/kv-spill.d.ts +0 -0
- /package/{src → dist}/services/latency-trace.d.ts +0 -0
- /package/{src → dist}/services/llm-streaming-binding.d.ts +0 -0
- /package/{src → dist}/services/load-args.d.ts +0 -0
- /package/{src → dist}/services/manifest/validator.d.ts +0 -0
- /package/{src → dist}/services/memory-pressure.d.ts +0 -0
- /package/{src → dist}/services/mtp-doctor.d.ts +0 -0
- /package/{src → dist}/services/network-policy.d.ts +0 -0
- /package/{src → dist}/services/paths.d.ts +0 -0
- /package/{src → dist}/services/planner-skeleton.d.ts +0 -0
- /package/{src → dist}/services/providers.d.ts +0 -0
- /package/{src → dist}/services/ram-budget.d.ts +0 -0
- /package/{src → dist}/services/readiness.d.ts +0 -0
- /package/{src → dist}/services/recommendation.d.ts +0 -0
- /package/{src → dist}/services/routing-preferences.d.ts +0 -0
- /package/{src → dist}/services/runtime-target.d.ts +0 -0
- /package/{src → dist}/services/session-pool.d.ts +0 -0
- /package/{src → dist}/services/structured-output/deterministic-repair.d.ts +0 -0
- /package/{src → dist}/services/structured-output.d.ts +0 -0
- /package/{src → dist}/services/system-memory.d.ts +0 -0
- /package/{src → dist}/services/verify-on-device.d.ts +0 -0
- /package/{src → dist}/services/verify.d.ts +0 -0
- /package/{src → dist}/services/vision/aosp-unavailable.d.ts +0 -0
- /package/{src → dist}/services/vision/capacitor-llama.d.ts +0 -0
- /package/{src → dist}/services/vision/cloud-fallback.d.ts +0 -0
- /package/{src → dist}/services/vision/hash.d.ts +0 -0
- /package/{src → dist}/services/vision/llama-server.d.ts +0 -0
- /package/{src → dist}/services/vision/vast-fallback.d.ts +0 -0
- /package/{src → dist}/services/voice/barge-in.d.ts +0 -0
- /package/{src → dist}/services/voice/cancellation-coordinator.d.ts +0 -0
- /package/{src → dist}/services/voice/checkpoint-manager.d.ts +0 -0
- /package/{src → dist}/services/voice/eager-context-builder.d.ts +0 -0
- /package/{src → dist}/services/voice/emotion-attribution.d.ts +0 -0
- /package/{src → dist}/services/voice/first-line-cache.d.ts +0 -0
- /package/{src → dist}/services/voice/kokoro/kokoro-runtime.d.ts +0 -0
- /package/{src → dist}/services/voice/kokoro/phonemizer.d.ts +0 -0
- /package/{src → dist}/services/voice/kokoro/types.d.ts +0 -0
- /package/{src → dist}/services/voice/kokoro/voice-presets.d.ts +0 -0
- /package/{src → dist}/services/voice/kokoro/voices.d.ts +0 -0
- /package/{src → dist}/services/voice/lifecycle.d.ts +0 -0
- /package/{src → dist}/services/voice/optimistic-policy.d.ts +0 -0
- /package/{src → dist}/services/voice/phoneme-tokenizer.d.ts +0 -0
- /package/{src → dist}/services/voice/phrase-cache.d.ts +0 -0
- /package/{src → dist}/services/voice/phrase-chunker.d.ts +0 -0
- /package/{src → dist}/services/voice/pipeline-impls.d.ts +0 -0
- /package/{src → dist}/services/voice/pipeline.d.ts +0 -0
- /package/{src → dist}/services/voice/prefill-client.d.ts +0 -0
- /package/{src → dist}/services/voice/prefix-preserving-queue.d.ts +0 -0
- /package/{src → dist}/services/voice/profile-store.d.ts +0 -0
- /package/{src → dist}/services/voice/ring-buffer.d.ts +0 -0
- /package/{src → dist}/services/voice/rollback-queue.d.ts +0 -0
- /package/{src → dist}/services/voice/samantha-preset-placeholder.d.ts +0 -0
- /package/{src → dist}/services/voice/samantha-preset-regenerator.d.ts +0 -0
- /package/{src → dist}/services/voice/scheduler.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker/attribution-pipeline.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker/diarizer-fused.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker/diarizer.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker/encoder-fused.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker/encoder-ggml.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker/encoder.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker-imprint.d.ts +0 -0
- /package/{src → dist}/services/voice/speaker-preset-cache.d.ts +0 -0
- /package/{src → dist}/services/voice/system-audio-sink.d.ts +0 -0
- /package/{src → dist}/services/voice/transcript-knowledge.d.ts +0 -0
- /package/{src → dist}/services/voice/turn-controller.d.ts +0 -0
- /package/{src → dist}/services/voice/voice-budget.d.ts +0 -0
- /package/{src → dist}/services/voice/voice-emotion-classifier.d.ts +0 -0
- /package/{src → dist}/services/voice/voice-profile-artifact.d.ts +0 -0
- /package/{src → dist}/services/voice/voice-profile-routes.d.ts +0 -0
- /package/{src → dist}/services/voice/voice-state-machine.d.ts +0 -0
- /package/{src → dist}/services/voice/wake-word.d.ts +0 -0
- /package/{src → dist}/services/voice/wrap-with-first-line-cache.d.ts +0 -0
- /package/{src → dist}/services/voice-model-updater.d.ts +0 -0
- /package/{src → dist}/services/voice-prewarm.d.ts +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kokoro-ffi-runtime.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/kokoro-ffi-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAMH,OAAO,EACN,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EAEtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAcjD,MAAM,WAAW,uBAAuB;IACvC,0EAA0E;IAC1E,MAAM,EAAE,iBAAiB,CAAC;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB;;;OAGG;IACH,GAAG,CAAC,EAAE,2BAA2B,CAAC;CAClC;AAED,qBAAa,gBAAiB,YAAW,aAAa;IACrD,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAU;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAE5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA8B;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,sEAAsE;IACtE,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAS;gBAEb,IAAI,EAAE,uBAAuB;IA4CnC,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IA4C5E,OAAO,IAAI,IAAI;IAOf;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IAoCzB,OAAO,CAAC,gBAAgB;CASxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kokoro-runtime.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/kokoro-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAEtE;;sCAEsC;AACtC,eAAO,MAAM,oBAAoB,+BAA+B,CAAC;AAEjE,sEAAsE;AACtE,MAAM,WAAW,kBAAkB;IAClC,GAAG,EAAE,YAAY,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IACnC,QAAQ,EAAE,qBAAqB,CAAC;IAChC,KAAK,EAAE,eAAe,CAAC;IACvB;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wDAAwD;IACxD,YAAY,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IACrC,wEAAwE;IACxE,OAAO,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,GAAG,SAAS,CAAC;CAC5D;AAED;6CAC6C;AAC7C,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACvE,OAAO,IAAI,IAAI,CAAC;CAChB;AAMD,MAAM,WAAW,0BAA0B;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IAC7C,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACxD,QAAQ,CAAC,EAAE,EAAG,QAAQ,CAAU;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,IAAI,EAAE,0BAA0B;IAItC,UAAU,CACf,KAAK,EAAE,mBAAmB,GACxB,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IASlC,OAAO,IAAI,IAAI;CAGf;AAOD,MAAM,WAAW,wBAAwB;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wDAAwD;IACxD,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,iBAAkB,YAAW,aAAa;IACtD,QAAQ,CAAC,EAAE,EAAG,MAAM,CAAU;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqC;IAC1D,KAAK,SAAK;gBAEE,IAAI,EAAE,wBAAwB;IASpC,UAAU,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;IAsC5E,OAAO,IAAI,IAAI;CAGf"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Phoneme streaming for Kokoro-82M.
|
|
3
|
+
*
|
|
4
|
+
* Kokoro consumes a sequence of phoneme ids (espeak-ng IPA tokenised against a
|
|
5
|
+
* small fixed vocab). The scheduler emits phrases at punctuation or
|
|
6
|
+
* `phoneme-stream` boundaries (see `voice/phrase-chunker.ts` `chunkOn`
|
|
7
|
+
* option). This module is the seam between those phrase boundaries and the
|
|
8
|
+
* model's input tensor:
|
|
9
|
+
*
|
|
10
|
+
* text → phonemizer.phonemize() → KokoroPhonemeSequence (ids) → runtime
|
|
11
|
+
*
|
|
12
|
+
* For maximum responsiveness the runtime can call `streamPhonemes()` against
|
|
13
|
+
* an async text iterator (chunked draft tokens) and forward each window of
|
|
14
|
+
* accumulated ids as soon as a phoneme boundary fires. The default `flushAt`
|
|
15
|
+
* is one phoneme — i.e. emit progress per id — but production deployments
|
|
16
|
+
* lift this to ~8 phonemes to amortise the ONNX forward pass on small
|
|
17
|
+
* windows. This file intentionally has no dependency on the rest of the
|
|
18
|
+
* voice scaffold so it can be reused by the fine-tune evaluator script.
|
|
19
|
+
*/
|
|
20
|
+
import type { KokoroPhonemizer } from "./types";
|
|
21
|
+
export interface PhonemeStreamWindow {
|
|
22
|
+
/** Cumulative ids since stream start. The runtime can re-tokenise or
|
|
23
|
+
* carry state by id; the simplest implementation forwards the full
|
|
24
|
+
* window each call. */
|
|
25
|
+
ids: Int32Array;
|
|
26
|
+
/** Cumulative phoneme string for debugging / display. */
|
|
27
|
+
phonemes: string;
|
|
28
|
+
/** True for the final window in the stream. */
|
|
29
|
+
isFinal: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface StreamPhonemesOptions {
|
|
32
|
+
phonemizer: KokoroPhonemizer;
|
|
33
|
+
lang: string;
|
|
34
|
+
/** Emit a window every N new phoneme ids. Default 8 (≈ first audio after a
|
|
35
|
+
* short syllable cluster — matches the phrase chunker's default cap). */
|
|
36
|
+
flushAt?: number;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Phonemize an async text source and emit cumulative windows. The caller
|
|
40
|
+
* consumes the iterator with `for await (const window of streamPhonemes(…))`.
|
|
41
|
+
* A pull-style API keeps this independent of the scheduler's event loop —
|
|
42
|
+
* the bench harness and the eval loop both reuse it without taking on a
|
|
43
|
+
* scheduler dependency.
|
|
44
|
+
*/
|
|
45
|
+
export declare function streamPhonemes(textChunks: AsyncIterable<string>, opts: StreamPhonemesOptions): AsyncIterable<PhonemeStreamWindow>;
|
|
46
|
+
/** Synchronous variant for whole-phrase callers (the scheduler dispatches
|
|
47
|
+
* one phrase at a time in the default `punctuation` mode). Returns the
|
|
48
|
+
* full id array — equivalent to draining `streamPhonemes` on a single-item
|
|
49
|
+
* iterator and taking the last window. */
|
|
50
|
+
export declare function phonemizePhrase(text: string, opts: StreamPhonemesOptions): Promise<PhonemeStreamWindow>;
|
|
51
|
+
//# sourceMappingURL=phoneme-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phoneme-stream.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/phoneme-stream.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAyB,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEvE,MAAM,WAAW,mBAAmB;IACnC;;4BAEwB;IACxB,GAAG,EAAE,UAAU,CAAC;IAChB,yDAAyD;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,qBAAqB;IACrC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb;8EAC0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAuB,cAAc,CACpC,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,EACjC,IAAI,EAAE,qBAAqB,GACzB,aAAa,CAAC,mBAAmB,CAAC,CAwCpC;AAqBD;;;2CAG2C;AAC3C,wBAAsB,eAAe,CACpC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,qBAAqB,GACzB,OAAO,CAAC,mBAAmB,CAAC,CAG9B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phonemizer.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/phonemizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACN,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EAErB,MAAM,SAAS,CAAC;AAuLjB;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,gBAAgB;IAC7D,QAAQ,CAAC,EAAE,kBAAkB;IAEvB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA2B5E;AAaD;;;;;GAKG;AACH,qBAAa,sBAAuB,YAAW,gBAAgB;IAG7D,OAAO,CAAC,QAAQ,CAAC,GAAG;IAEpB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAJ3B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO;WAQM,OAAO,IAAI,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAqBxD,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA0B3E;AAED,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CASnE;AAED,4EAA4E;AAC5E,wBAAsB,iBAAiB,CACtC,QAAQ,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAK3B;AAED,qDAAqD;AACrD,eAAO,MAAM,aAAa,QAAM,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* ffi (default) → KokoroFfiRuntime → in-process synthesis through the
|
|
7
7
|
* fused `libelizainference` handle (the
|
|
8
8
|
* `eliza_inference_kokoro_*` exports, introduced at ABI
|
|
9
|
-
* v10; the fused library is currently ABI
|
|
9
|
+
* v10; the fused library is currently ABI v12). This is
|
|
10
10
|
* the SOLE synthesis path on every platform.
|
|
11
11
|
* mock → KokoroMockRuntime. Tests only.
|
|
12
12
|
*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pick-runtime.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/pick-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAEN,KAAK,uBAAuB,EAC5B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEN,KAAK,wBAAwB,EAC7B,KAAK,aAAa,EAClB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,mBAAmB;IACnC,0EAA0E;IAC1E,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B;;sEAEkE;IAClE,cAAc,CAAC,EAAE,eAAe,CAAC;IACjC,oFAAoF;IACpF,GAAG,CAAC,EAAE,uBAAuB,CAAC;IAC9B,8CAA8C;IAC9C,IAAI,CAAC,EAAE,wBAAwB,CAAC;IAChC,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACrC,OAAO,EAAE,eAAe,CAAC;IACzB,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,aAAa,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACvC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,eAAe,GAAG,SAAS,CAc7B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACvC,MAAM,EAAE,mBAAmB,GACzB,qBAAqB,CAuCvB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Voice backend selection — Kokoro is the only on-device TTS backend.
|
|
3
|
+
*
|
|
4
|
+
* OmniVoice TTS was retired (it was an autoregressive LM-based synth: heavier,
|
|
5
|
+
* slower TTFB, and only it could voice-clone). Kokoro (StyleTTS2 / iSTFTNet,
|
|
6
|
+
* non-autoregressive) is faster, smaller, and ships in every bundle — desktop
|
|
7
|
+
* and mobile alike — so the selector collapses to a single auditable answer.
|
|
8
|
+
* The function + env reader are kept (rather than inlined) so the engine layer
|
|
9
|
+
* and tests retain one seam to ask "is a TTS backend available?".
|
|
10
|
+
*/
|
|
11
|
+
export type VoiceBackendChoice = "kokoro";
|
|
12
|
+
/** Retained for the env override; `auto` and `kokoro` both resolve to Kokoro. */
|
|
13
|
+
export type VoiceBackendMode = "kokoro" | "auto";
|
|
14
|
+
export interface VoiceBackendInputs {
|
|
15
|
+
/** Caller-set mode. Defaults to `auto`; both modes resolve to Kokoro. */
|
|
16
|
+
mode?: VoiceBackendMode;
|
|
17
|
+
/** Whether Kokoro model artifacts are present on disk. The selector throws
|
|
18
|
+
* rather than returning a backend when this is `false` — no silent downgrade. */
|
|
19
|
+
kokoroAvailable: boolean;
|
|
20
|
+
/** True on mobile (iOS / Android) builds — informational only now. */
|
|
21
|
+
mobile?: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface VoiceBackendDecision {
|
|
24
|
+
backend: VoiceBackendChoice;
|
|
25
|
+
/** One-line reason — surfaced to telemetry. */
|
|
26
|
+
reason: string;
|
|
27
|
+
}
|
|
28
|
+
/** Resolve the env override (`ELIZA_TTS_BACKEND=kokoro|auto`). */
|
|
29
|
+
export declare function readVoiceBackendModeFromEnv(env?: NodeJS.ProcessEnv): VoiceBackendMode | undefined;
|
|
30
|
+
export declare function selectVoiceBackend(inputs: VoiceBackendInputs): VoiceBackendDecision;
|
|
31
|
+
//# sourceMappingURL=runtime-selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-selection.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/runtime-selection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,MAAM,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE1C,iFAAiF;AACjF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEjD,MAAM,WAAW,kBAAkB;IAClC,yEAAyE;IACzE,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB;sFACkF;IAClF,eAAe,EAAE,OAAO,CAAC;IACzB,sEAAsE;IACtE,MAAM,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACpC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,+CAA+C;IAC/C,MAAM,EAAE,MAAM,CAAC;CACf;AAED,kEAAkE;AAClE,wBAAgB,2BAA2B,CAC1C,GAAG,GAAE,MAAM,CAAC,UAAwB,GAClC,gBAAgB,GAAG,SAAS,CAY9B;AAED,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,kBAAkB,GACxB,oBAAoB,CAYtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC;AAEnC,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC/B,gDAAgD;IAChD,EAAE,EAAE,aAAa,CAAC;IAClB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,2GAA2G;IAC3G,IAAI,EAAE,MAAM,CAAC;IACb,gFAAgF;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,GAAG,EAAE,MAAM,CAAC;IACZ,uCAAuC;IACvC,IAAI,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;CAC7B;AAED,wDAAwD;AACxD,MAAM,WAAW,iBAAiB;IACjC,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,8DAA8D;AAC9D,MAAM,WAAW,oBAAoB;IACpC,2EAA2E;IAC3E,MAAM,EAAE,iBAAiB,CAAC;IAC1B;;;OAGG;IACH,cAAc,EAAE,aAAa,CAAC;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAChC,mEAAmE;IACnE,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtE,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,qBAAqB;IACrC,oDAAoD;IACpD,GAAG,EAAE,UAAU,CAAC;IAChB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,oEAAoE;AACpE,qBAAa,uBAAwB,SAAQ,KAAK;IACjD,QAAQ,CAAC,IAAI,EAAG,sBAAsB,CAAU;gBACpC,OAAO,EAAE,MAAM;CAI3B;AAED,iFAAiF;AACjF,qBAAa,qBAAsB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,IAAI,EAAG,yBAAyB,CAAU;gBACvC,OAAO,EAAE,MAAM;CAI3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voice-presets.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/voice-presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,eAAO,MAAM,kBAAkB,EAAE,aAAa,CAAC,eAAe,CAkG7D,CAAC;AAIF;qEACqE;AACrE,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAEvE;AAED,gEAAgE;AAChE,eAAO,MAAM,uBAAuB,YAAY,CAAC;AAEjD,kFAAkF;AAClF,eAAO,MAAM,wBAAwB,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"voices.d.ts","sourceRoot":"","sources":["../../../../src/services/voice/kokoro/voices.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAO9D,OAAO,EACN,eAAe,EACf,uBAAuB,EACvB,kBAAkB,GAClB,MAAM,iBAAiB,CAAC;AAEzB,qEAAqE;AACrE,wBAAgB,kBAAkB,IAAI,aAAa,CAAC,aAAa,CAAC,CAEjE;AAED,iEAAiE;AACjE,wBAAgB,sBAAsB,CACrC,IAAI,EAAE,MAAM,GACV,aAAa,CAAC,eAAe,CAAC,CAEhC;AAED,4EAA4E;AAC5E,wBAAgB,qBAAqB,CACpC,GAAG,EAAE,MAAM,GACT,aAAa,CAAC,eAAe,CAAC,CAEhC;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,CAUvE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../../src/services/voice/lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EACX,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,eAAe,EACf,MAAM,oBAAoB,CAAC;AAE5B;;;;GAIG;AACH,MAAM,MAAM,mBAAmB,GAC5B;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAC9B;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAA;CAAE,GACjC;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CAAE,GACjE;IAAE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAA;CAAE,GACxE;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE,gBAAgB,CAAC;IAC/B,wEAAwE;IACxE,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;IACzC,iFAAiF;IACjF,QAAQ,CAAC,mBAAmB,EAAE,kBAAkB,CAAC;CACjD;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC7B,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAC;IAClC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;CAC7B;AAED;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EACV,cAAc,GACd,WAAW,GACX,gBAAgB,GAChB,oBAAoB,GACpB,YAAY,GACZ,eAAe,CAAC;gBAEP,IAAI,EAAE,mBAAmB,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,MAAM;CAK9D;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACrC,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC3C,eAAe,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/C,uBAAuB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,oBAAoB;IACpC,YAAY,CAAC,CAAC,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC1E;AAED,qBAAa,cAAc;IAC1B,OAAO,CAAC,KAAK,CAA8C;IAC3D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;gBAElC,IAAI,EAAE;QACjB,QAAQ,EAAE,sBAAsB,CAAC;QACjC,OAAO,EAAE,qBAAqB,CAAC;QAC/B,MAAM,CAAC,EAAE,oBAAoB,CAAC;KAC9B;IAMD,OAAO,IAAI,mBAAmB;IAI9B;;;;;;OAMG;IACG,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC;IAqDpC;;;;;;OAMG;IACG,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD7B;;;;;OAKG;IACH,KAAK,IAAI,IAAI;IAUb,OAAO,CAAC,UAAU;CAKlB"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Live on-device diarization session — the agent-process owner of an
|
|
3
|
+
* {@link AudioFrameConsumer} wired to the REAL fused VAD / encoder / diarizer /
|
|
4
|
+
* attribution stack.
|
|
5
|
+
*
|
|
6
|
+
* The Android `audioFrame` PCM stream is produced in the Capacitor WebView
|
|
7
|
+
* (JS renderer) but the voice FFI runs in the embedded bun agent process. The
|
|
8
|
+
* agent's `/api/voice/audio-frames` route pumps batched frames into the single
|
|
9
|
+
* session this module owns, where the consumer segments turns, runs
|
|
10
|
+
* diarization + speaker attribution, and emits VOICE_TURN_OBSERVED.
|
|
11
|
+
*
|
|
12
|
+
* This module is the agent-side mirror of the host smoke harness
|
|
13
|
+
* (`packages/app-core/scripts/voice-attribution-smoke.ts`): same real models,
|
|
14
|
+
* same consumer, fed live frames over HTTP instead of a WAV.
|
|
15
|
+
*
|
|
16
|
+
* Single fused engine: VAD, the WeSpeaker speaker encoder, and the pyannote
|
|
17
|
+
* diarizer all run through the ONE fused `libelizainference` handle via its
|
|
18
|
+
* `eliza_inference_vad_*` / `_speaker_*` / `_diariz_*` ABI (the user directive:
|
|
19
|
+
* no separate bun:ffi-musl libs). Resolution:
|
|
20
|
+
* - fused lib: `$ELIZA_INFERENCE_LIBRARY` (exact) or `$ELIZA_INFERENCE_LIB_DIR`
|
|
21
|
+
* (dir) — both exported by ElizaAgentService on Android to the app
|
|
22
|
+
* nativeLibraryDir.
|
|
23
|
+
* - context bundle root: `$ELIZA_VOICE_MODEL_DIR` (the same dir the GGUFs
|
|
24
|
+
* live under); the fused runtime resolves the per-model GGUFs from there.
|
|
25
|
+
*/
|
|
26
|
+
import { type AttributionPipelineLike, type AudioFrameConsumerDeps, type AudioFrameEvent, type EchoReferenceProvider, type RuntimeEventSink, type TurnTranscriber, type VadSegmenter } from "./audio-frame-consumer.js";
|
|
27
|
+
export type { RuntimeEventSink } from "./audio-frame-consumer.js";
|
|
28
|
+
export interface LiveDiarizationStatus {
|
|
29
|
+
/** True once the consumer + real fused deps are loaded and accepting frames. */
|
|
30
|
+
ready: boolean;
|
|
31
|
+
/** Resolved fused-library path (null when it could not be resolved). */
|
|
32
|
+
libs: {
|
|
33
|
+
fusedInference: string | null;
|
|
34
|
+
};
|
|
35
|
+
/** Resolved context-bundle dir for the fused runtime. */
|
|
36
|
+
models: {
|
|
37
|
+
dir: string;
|
|
38
|
+
};
|
|
39
|
+
/** Frames received from the WebView across this session. */
|
|
40
|
+
framesReceived: number;
|
|
41
|
+
/** Frames dropped at the decode boundary. */
|
|
42
|
+
framesDropped: number;
|
|
43
|
+
/** Turns segmented + attributed so far. */
|
|
44
|
+
turnsObserved: number;
|
|
45
|
+
/** Live AEC wiring status. Echo cancellation runs only when this is true. */
|
|
46
|
+
aec: {
|
|
47
|
+
echoReferenceWired: boolean;
|
|
48
|
+
/** Playback→mic delay (samples @16 kHz) currently applied to align the
|
|
49
|
+
* far-end reference — self-calibrated from real echo when confident,
|
|
50
|
+
* otherwise the `ELIZA_VOICE_ECHO_DELAY_MS` seed (default 0). */
|
|
51
|
+
echoDelaySamples: number;
|
|
52
|
+
/** Peak cross-correlation [0,1] of the last accepted delay calibration;
|
|
53
|
+
* 0 until a confident estimate replaces the seed. */
|
|
54
|
+
echoDelayConfidence: number;
|
|
55
|
+
};
|
|
56
|
+
/** The most recent attributed turns (capped), for device-evidence reads. */
|
|
57
|
+
recentTurns: LiveDiarizationTurnSummary[];
|
|
58
|
+
/** Populated only when readiness failed — the precise blocker. */
|
|
59
|
+
error?: string;
|
|
60
|
+
}
|
|
61
|
+
/** A compact, JSON-safe summary of one attributed turn (no PCM/embeddings). */
|
|
62
|
+
export interface LiveDiarizationTurnSummary {
|
|
63
|
+
turnId: string;
|
|
64
|
+
startedAtMs: number;
|
|
65
|
+
endedAtMs: number;
|
|
66
|
+
samples: number;
|
|
67
|
+
durationMs: number;
|
|
68
|
+
hasSpeaker: boolean;
|
|
69
|
+
speakerEntityId: string | null;
|
|
70
|
+
speakerConfidence: number | null;
|
|
71
|
+
segments: number;
|
|
72
|
+
agentShouldSpeak: boolean | null;
|
|
73
|
+
nextSpeaker: string | null;
|
|
74
|
+
}
|
|
75
|
+
export interface LiveDiarizationSessionOptions {
|
|
76
|
+
/**
|
|
77
|
+
* Agent-playback PCM provider for AEC. The caller owns playback capture and
|
|
78
|
+
* delay calibration when supplied. Without an external provider, the session
|
|
79
|
+
* uses its built-in playback buffer fed by /api/voice/playback-frames.
|
|
80
|
+
*/
|
|
81
|
+
echoReference?: EchoReferenceProvider | null;
|
|
82
|
+
}
|
|
83
|
+
export interface LiveDiarizationConsumerDepsInput {
|
|
84
|
+
vad: VadSegmenter;
|
|
85
|
+
pipeline: AttributionPipelineLike;
|
|
86
|
+
runtime: RuntimeEventSink;
|
|
87
|
+
transcribe?: TurnTranscriber | null;
|
|
88
|
+
echoReference?: EchoReferenceProvider | null;
|
|
89
|
+
}
|
|
90
|
+
export declare function buildLiveDiarizationConsumerDeps({ vad, pipeline, runtime, transcribe, echoReference, }: LiveDiarizationConsumerDepsInput): AudioFrameConsumerDeps;
|
|
91
|
+
/**
|
|
92
|
+
* Owns the single live diarization consumer for the agent process. Built
|
|
93
|
+
* lazily on first frame batch so it does not load voice models at boot.
|
|
94
|
+
*/
|
|
95
|
+
export declare class LiveDiarizationSession {
|
|
96
|
+
private readonly runtime;
|
|
97
|
+
private readonly options;
|
|
98
|
+
private consumer;
|
|
99
|
+
private ffi;
|
|
100
|
+
private ctx;
|
|
101
|
+
private encoder;
|
|
102
|
+
private diarizer;
|
|
103
|
+
private vad;
|
|
104
|
+
private building;
|
|
105
|
+
private framesReceived;
|
|
106
|
+
private turnsObserved;
|
|
107
|
+
private readonly recentTurns;
|
|
108
|
+
private resolvedLibPath;
|
|
109
|
+
private buildError;
|
|
110
|
+
/** True once the fused ASR region is mmap-acquired for per-turn transcribe. */
|
|
111
|
+
private asrRegionAcquired;
|
|
112
|
+
/**
|
|
113
|
+
* Far-end (agent TTS playback) alignment buffer for echo cancellation
|
|
114
|
+
* (#9583/#9455). Fed by {@link pushPlayback}; read per mic frame via the
|
|
115
|
+
* consumer's `echoReference` seam. Inert (zero far-end ⇒ NLMS passthrough)
|
|
116
|
+
* until the device streams playback, so wiring it never regresses the
|
|
117
|
+
* no-playback case.
|
|
118
|
+
*/
|
|
119
|
+
private readonly echoBuffer;
|
|
120
|
+
/**
|
|
121
|
+
* Playback→mic delay applied when reading the far-end reference. Seeded from
|
|
122
|
+
* `ELIZA_VOICE_ECHO_DELAY_MS` (default 0) and then SELF-CALIBRATED on the live
|
|
123
|
+
* path: once enough playback-active echo is observed, `estimateEchoDelaySamples`
|
|
124
|
+
* (#9586) recovers the bulk transport lag by cross-correlation and replaces the
|
|
125
|
+
* seed (#9583). Mutable for that reason.
|
|
126
|
+
*/
|
|
127
|
+
private echoDelaySamples;
|
|
128
|
+
private echoDelayConfidence;
|
|
129
|
+
private echoDelayCalibrated;
|
|
130
|
+
/** Rolling near/far windows accumulated only while the far-end is active, used
|
|
131
|
+
* once to estimate the playback→mic delay. Cleared after a confident estimate
|
|
132
|
+
* and on {@link resetPlayback}. */
|
|
133
|
+
private calNear;
|
|
134
|
+
private calFar;
|
|
135
|
+
private calSampleCount;
|
|
136
|
+
constructor(runtime: RuntimeEventSink, options?: LiveDiarizationSessionOptions);
|
|
137
|
+
/** Ensure the real-deps consumer exists; idempotent + concurrency-safe. */
|
|
138
|
+
private ensureBuilt;
|
|
139
|
+
private build;
|
|
140
|
+
/**
|
|
141
|
+
* Build a per-turn ASR transcriber over the fused batch decoder
|
|
142
|
+
* (`eliza_inference_asr_transcribe`). Returns null when the fused build
|
|
143
|
+
* exposes no ASR decoder; acquiring the ASR mmap region is best-effort (a
|
|
144
|
+
* missing bundled ASR model leaves the path diarization-only rather than
|
|
145
|
+
* failing the whole session). One batch decode per finalized turn — the turn
|
|
146
|
+
* is already fully buffered for attribution, so no streaming state is needed.
|
|
147
|
+
*/
|
|
148
|
+
private buildTurnTranscriber;
|
|
149
|
+
private recordTurn;
|
|
150
|
+
/**
|
|
151
|
+
* The far-end (agent TTS playback) reference aligned to a mic frame of
|
|
152
|
+
* `samples` samples — the consumer's `echoReference` seam (#9455/#9583).
|
|
153
|
+
* Reads the alignment buffer at the configured playback→mic delay; the slice
|
|
154
|
+
* is zero-filled (⇒ NLMS passthrough) until the device streams playback.
|
|
155
|
+
* Public so the wiring is unit-testable without the fused FFI.
|
|
156
|
+
*/
|
|
157
|
+
echoReferenceFrame(timestampMs: number, samples: number): Float32Array;
|
|
158
|
+
/** Current self-calibrated AEC delay state (for status + tests). */
|
|
159
|
+
aecDelayState(): {
|
|
160
|
+
delaySamples: number;
|
|
161
|
+
confidence: number;
|
|
162
|
+
calibrated: boolean;
|
|
163
|
+
};
|
|
164
|
+
/**
|
|
165
|
+
* Self-calibrate the playback→mic delay (#9583/#9586) from real echo. Called
|
|
166
|
+
* per mic frame while uncalibrated: when the far-end is active (the agent is
|
|
167
|
+
* playing TTS), accumulate the time-aligned near/far windows; once ~0.75 s of
|
|
168
|
+
* playback-active audio is buffered, recover the bulk transport lag by
|
|
169
|
+
* cross-correlation and, if confident, replace the static seed. One-shot — the
|
|
170
|
+
* device's speaker→mic path is stable, so we lock the first confident estimate
|
|
171
|
+
* and stop re-measuring. Public so it can be unit-tested without the fused FFI.
|
|
172
|
+
*/
|
|
173
|
+
observeForDelayCalibration(nearPcm: Float32Array, timestampMs: number): void;
|
|
174
|
+
/**
|
|
175
|
+
* Feed a batch of agent-playback (far-end) frames for echo cancellation. The
|
|
176
|
+
* device captures the agent's TTS output in the SAME base64 LE-s16 16 kHz
|
|
177
|
+
* mono wire format as the mic and POSTs it in real time as it renders; we
|
|
178
|
+
* decode + append to the alignment buffer. The device MUST also call
|
|
179
|
+
* {@link resetPlayback} when playback stops (or on barge-in) so the canceller
|
|
180
|
+
* never aligns a later mic frame to stale, no-longer-playing audio.
|
|
181
|
+
*/
|
|
182
|
+
pushPlayback(frames: AudioFrameEvent[]): void;
|
|
183
|
+
/** Drop buffered far-end playback (playback stopped / barge-in). Also clears
|
|
184
|
+
* the in-progress delay-calibration window (it would otherwise straddle a
|
|
185
|
+
* playback gap); the already-learned delay is kept. */
|
|
186
|
+
resetPlayback(): void;
|
|
187
|
+
/** Feed a batch of WebView-captured frames; resolves once VAD has processed them. */
|
|
188
|
+
ingest(frames: AudioFrameEvent[]): Promise<void>;
|
|
189
|
+
/** Flush any open segment (call on stopAudioFrames) and await attribution. */
|
|
190
|
+
flush(): Promise<void>;
|
|
191
|
+
/** Build (if needed) and report status — the device-evidence read. */
|
|
192
|
+
status(): Promise<LiveDiarizationStatus>;
|
|
193
|
+
/** Release native handles + listeners. */
|
|
194
|
+
close(): Promise<void>;
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=live-diarization-session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"live-diarization-session.d.ts","sourceRoot":"","sources":["../../../src/services/voice/live-diarization-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure rounding + percentile helpers shared by the voice E2E harness and the
|
|
3
|
+
* voice workbench report (#8785). No models, filesystem, or network — just
|
|
4
|
+
* numeric formatting so both consumers report identical metric values.
|
|
5
|
+
*/
|
|
6
|
+
export declare function round1(value: number): number;
|
|
7
|
+
export declare function round4(value: number): number;
|
|
8
|
+
/** Nearest-rank percentile over a sample (null when empty), non-finite filtered. */
|
|
9
|
+
export declare function percentile(values: ReadonlyArray<number>, p: number): number | null;
|
|
10
|
+
//# sourceMappingURL=metric-math.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metric-math.d.ts","sourceRoot":"","sources":["../../../src/services/voice/metric-math.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE5C;AAED,oFAAoF;AACpF,wBAAgB,UAAU,CACzB,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,EAC7B,CAAC,EAAE,MAAM,GACP,MAAM,GAAG,IAAI,CAMf"}
|
|
@@ -54,7 +54,7 @@ declare abstract class BaseMicSource implements MicSource {
|
|
|
54
54
|
protected emitError(error: Error): void;
|
|
55
55
|
}
|
|
56
56
|
export interface DesktopMicSourceOptions {
|
|
57
|
-
/** Capture sample rate. Default 16 kHz (what
|
|
57
|
+
/** Capture sample rate. Default 16 kHz (what VAD + Gemma ASR expect). */
|
|
58
58
|
sampleRate?: number;
|
|
59
59
|
/** Frame duration in ms. Default 32 ms (one Silero window @ 16 kHz). */
|
|
60
60
|
frameMs?: number;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mic-source.d.ts","sourceRoot":"","sources":["../../../src/services/voice/mic-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAMH,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAiB9D;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACrC,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,MAAM,GACb;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG,IAAI,CAiI5C;AAeD,uBAAe,aAAc,YAAW,SAAS;IAChD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,SAAS,CAAC,QAAQ,CAAC,cAAc,cAAmB,QAAQ,KAAK,IAAI,EAAI;IACzE,SAAS,CAAC,QAAQ,CAAC,cAAc,cAAmB,KAAK,KAAK,IAAI,EAAI;IACtE,SAAS,CAAC,QAAQ,UAAS;gBAEf,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAKpD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAE9B,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,GAAG,MAAM,IAAI;IAKxD,OAAO,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,MAAM,IAAI;IAKrD,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI;IAKjE,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;CAIvC;AAED,MAAM,WAAW,uBAAuB;IACvC,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;0CAEsC;IACtC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB;qEACiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,gBAAiB,SAAQ,aAAa;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAW;IAChC,OAAO,CAAC,IAAI,CAA6B;IAEzC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAgB;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;gBAE3B,IAAI,GAAE,uBAA4B;IA6BxC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA2DtB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAqB3B,OAAO,CAAC,MAAM;CAiBd;AAED;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,aAAa;IAE/C,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,uBAAuB,CAAK;gBAGnC,IAAI,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAO;IAStE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAItB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B;;;;;OAKG;IACH,IAAI,CAAC,GAAG,EAAE,YAAY,EAAE,WAAW,SAAQ,GAAG,IAAI;IAsBlD,oEAAoE;IACpE,SAAS,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,SAAQ,GAAG,IAAI;IAQvD,0DAA0D;IAC1D,IAAI,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;CAGxB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAClC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,EACf,IAAI,GAAE;IACL,uEAAuE;IACvE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,CAAC,cAAc,EAAE,MAAM,KAAK,IAAI,CAAC;CACzC,GACJ;IAAE,UAAU,EAAE,aAAa,CAAC;IAAC,WAAW,EAAE,MAAM,IAAI,CAAA;CAAE,CAOxD"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* nlms-echo-canceller.ts — PCM acoustic echo cancellation for the live
|
|
3
|
+
* half-duplex voice pipeline (#9455).
|
|
4
|
+
*
|
|
5
|
+
* When the agent speaks, its TTS playback leaks back into the microphone and
|
|
6
|
+
* corrupts ASR / VAD / diarization (the agent hears itself). This is a
|
|
7
|
+
* single-channel adaptive echo canceller: a normalized least-mean-squares
|
|
8
|
+
* (NLMS) FIR filter models the playback→mic acoustic path and subtracts the
|
|
9
|
+
* estimated echo from the near-end (mic) signal sample-by-sample.
|
|
10
|
+
*
|
|
11
|
+
* near-end d[n] = local_speech[n] + echo[n] (the raw mic)
|
|
12
|
+
* far-end x[n] = agent TTS playback (the reference)
|
|
13
|
+
* estimate ŷ[n] = Σ_k w[k]·x[n−k] (modeled echo)
|
|
14
|
+
* output e[n] = d[n] − ŷ[n] (echo-cancelled mic → ASR)
|
|
15
|
+
* update w[k] += μ·e[n]·x[n−k] / (‖x‖² + ε) (NLMS adaptation)
|
|
16
|
+
*
|
|
17
|
+
* All audio is 16 kHz mono Float32 [-1, 1] — the pipeline's internal format
|
|
18
|
+
* (see audio-frame-consumer.ts). The filter length must cover the
|
|
19
|
+
* playback→mic delay plus the room's reverberation tail; for tails longer than
|
|
20
|
+
* the filter, calibrate `delaySamples` (the bulk transport delay) so the
|
|
21
|
+
* adaptive taps only have to model the short residual impulse.
|
|
22
|
+
*
|
|
23
|
+
* Scope: this targets the dominant failure mode — the agent transcribing its
|
|
24
|
+
* own TTS while the *user is silent* (echo-only), where it achieves ~29 dB of
|
|
25
|
+
* echo-return-loss-enhancement. A far-end-vs-near-end double-talk detector
|
|
26
|
+
* freezes adaptation when a local talker is active so the filter cannot learn
|
|
27
|
+
* (and cancel) the user's voice; barge-in itself is handled upstream by the
|
|
28
|
+
* barge-in detector (which stops playback). Full double-talk residual-echo
|
|
29
|
+
* suppression is AEC3-class work and intentionally out of scope here.
|
|
30
|
+
*
|
|
31
|
+
* Pure DSP, zero dependencies — verified by nlms-echo-canceller.test.ts
|
|
32
|
+
* (ERLE on synthetic echo, passthrough, stability, reset).
|
|
33
|
+
*/
|
|
34
|
+
export interface NlmsEchoCancellerOptions {
|
|
35
|
+
/** Adaptive FIR length in samples. 256 ≈ 16 ms of impulse response @16 kHz. */
|
|
36
|
+
filterTaps?: number;
|
|
37
|
+
/** NLMS step size in (0, 2). Larger = faster adaptation, less stable. */
|
|
38
|
+
mu?: number;
|
|
39
|
+
/** Regularization added to the reference energy to avoid divide-by-zero. */
|
|
40
|
+
epsilon?: number;
|
|
41
|
+
/**
|
|
42
|
+
* Bulk playback→mic transport delay in samples. The reference is consumed
|
|
43
|
+
* `delaySamples` ahead of the near-end so the adaptive taps only model the
|
|
44
|
+
* residual room impulse, not the (potentially large) transport latency.
|
|
45
|
+
*/
|
|
46
|
+
delaySamples?: number;
|
|
47
|
+
/**
|
|
48
|
+
* Double-talk detector ratio. When the smoothed near-end power exceeds
|
|
49
|
+
* `dtdRatio`× the smoothed far-end reference power (a passive echo path
|
|
50
|
+
* attenuates, so echo power stays below the reference), a local talker is
|
|
51
|
+
* assumed active and adaptation is frozen so the filter cannot learn (and
|
|
52
|
+
* cancel) the user's voice. Set 0 to disable.
|
|
53
|
+
*/
|
|
54
|
+
dtdRatio?: number;
|
|
55
|
+
/**
|
|
56
|
+
* Opt-in nonlinear residual-echo suppressor (#9583/#9649). After the linear
|
|
57
|
+
* NLMS subtracts the modeled echo, an echo-only frame (the agent is speaking,
|
|
58
|
+
* the user is NOT — far-end power exceeds near-end power and no double-talk)
|
|
59
|
+
* still carries the residual echo the finite-length filter could not remove.
|
|
60
|
+
* When enabled, the residual on those frames is scaled toward zero. It is
|
|
61
|
+
* **default-off** and never engages during double-talk or near-end-dominant
|
|
62
|
+
* frames, so it can never attenuate the user's voice. Pass `true` for the
|
|
63
|
+
* default gain or `{ gain }` to tune.
|
|
64
|
+
*/
|
|
65
|
+
residualSuppression?: boolean | ResidualSuppressionOptions;
|
|
66
|
+
}
|
|
67
|
+
export interface ResidualSuppressionOptions {
|
|
68
|
+
/**
|
|
69
|
+
* Gain (0,1] applied to the residual on echo-only frames. Lower = stronger
|
|
70
|
+
* suppression. Default 0.15 (~−16 dB) — aggressive enough to flatten residual
|
|
71
|
+
* echo while leaving headroom for the gate's hysteresis.
|
|
72
|
+
*/
|
|
73
|
+
gain?: number;
|
|
74
|
+
}
|
|
75
|
+
export declare class NlmsEchoCanceller {
|
|
76
|
+
private readonly w;
|
|
77
|
+
private readonly x;
|
|
78
|
+
private readonly taps;
|
|
79
|
+
private readonly mu;
|
|
80
|
+
private readonly eps;
|
|
81
|
+
private readonly delay;
|
|
82
|
+
private readonly dtdRatio;
|
|
83
|
+
/** Residual-suppressor gain, or null when the suppressor is disabled (default). */
|
|
84
|
+
private readonly resGain;
|
|
85
|
+
/** Pending far-end samples not yet aligned to a near-end sample (delay line). */
|
|
86
|
+
private readonly delayLine;
|
|
87
|
+
private xEnergy;
|
|
88
|
+
private peakXEnergy;
|
|
89
|
+
private pNear;
|
|
90
|
+
private pFar;
|
|
91
|
+
private hangover;
|
|
92
|
+
private lastEchoPow;
|
|
93
|
+
/** Stay frozen ~30 ms after the last double-talk trigger so the filter is not
|
|
94
|
+
* corrupted by the bursty onset/offset of the near-end talker. */
|
|
95
|
+
private static readonly HANGOVER_SAMPLES;
|
|
96
|
+
/** Per-sample decay of the far-end energy envelope (~1 s time constant) so a
|
|
97
|
+
* short TTS pause keeps the far-end-active gate closed through the gap. */
|
|
98
|
+
private static readonly PEAK_DECAY;
|
|
99
|
+
/** Far-end is "active" only when the instantaneous ‖x‖² is within this
|
|
100
|
+
* fraction (−20 dB) of the recent envelope. Below it there is no echo to
|
|
101
|
+
* learn, so adaptation freezes (see process()). */
|
|
102
|
+
private static readonly FAR_ACTIVITY_FRAC;
|
|
103
|
+
/** NLMS regularization as a fraction of the far-end envelope. Keeps the step
|
|
104
|
+
* bounded when ‖x‖² momentarily underflows, so a quiet far-end passage can't
|
|
105
|
+
* make the normaliser collapse to the absolute `eps` and blow the filter up. */
|
|
106
|
+
private static readonly REG_FRAC;
|
|
107
|
+
private lastResidualPow;
|
|
108
|
+
constructor(opts?: NlmsEchoCancellerOptions);
|
|
109
|
+
/**
|
|
110
|
+
* Cancel echo from one block of mic audio.
|
|
111
|
+
*
|
|
112
|
+
* @param nearEnd raw mic block (local speech + echo), Float32 [-1, 1]
|
|
113
|
+
* @param farEnd agent playback reference for the same time window. Pass an
|
|
114
|
+
* empty/zero array when the agent is NOT speaking — the filter
|
|
115
|
+
* then passes the mic through unchanged (output ≈ input).
|
|
116
|
+
* @returns echo-cancelled near-end block (same length as `nearEnd`).
|
|
117
|
+
*/
|
|
118
|
+
process(nearEnd: Float32Array, farEnd: Float32Array): Float32Array;
|
|
119
|
+
/**
|
|
120
|
+
* Advance cheap detector/reference state while the far-end is silent without
|
|
121
|
+
* running the FIR echo-estimation loop. Learned filter weights are preserved,
|
|
122
|
+
* but stale playback samples are removed from the delay line/ring so the next
|
|
123
|
+
* non-empty reference frame cannot subtract an echo estimate from a previous
|
|
124
|
+
* utterance.
|
|
125
|
+
*/
|
|
126
|
+
observeFarEndSilence(nearEnd: Float32Array): void;
|
|
127
|
+
/** Echo-return-loss-enhancement (dB) over the last processed block. Higher is
|
|
128
|
+
* better; >10 dB is a meaningful cancellation. Returns 0 when there is no
|
|
129
|
+
* modeled echo (agent silent) so a passthrough block reads as "no gain". */
|
|
130
|
+
get lastErleDb(): number;
|
|
131
|
+
/** Reset adaptation (e.g. when the playback path changes). */
|
|
132
|
+
reset(): void;
|
|
133
|
+
/** Shift a new far-end sample into the ring buffer, maintaining ‖x‖²
|
|
134
|
+
* incrementally (drop the oldest sample's energy, add the newest). */
|
|
135
|
+
private pushRef;
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=nlms-echo-canceller.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nlms-echo-canceller.d.ts","sourceRoot":"","sources":["../../../src/services/voice/nlms-echo-canceller.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,MAAM,WAAW,wBAAwB;IACxC,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;OASG;IACH,mBAAmB,CAAC,EAAE,OAAO,GAAG,0BAA0B,CAAC;CAC3D;AAED,MAAM,WAAW,0BAA0B;IAC1C;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAWD,qBAAa,iBAAiB;IAC7B,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAe;IACjC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAe;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAgB;IACxC,iFAAiF;IACjF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgB;IAC1C,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,IAAI,CAAK;IACjB,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,WAAW,CAAK;IAExB;sEACkE;IAClE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAO;IAC/C;+EAC2E;IAC3E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAW;IAC7C;;uDAEmD;IACnD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAQ;IACjD;;oFAEgF;IAChF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACxC,OAAO,CAAC,eAAe,CAAK;gBAEhB,IAAI,GAAE,wBAA6B;IAc/C;;;;;;;;OAQG;IACH,OAAO,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,YAAY;IAiGlE;;;;;;OAMG;IACH,oBAAoB,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAqBjD;;gFAE4E;IAC5E,IAAI,UAAU,IAAI,MAAM,CAGvB;IAED,8DAA8D;IAC9D,KAAK,IAAI,IAAI;IAab;0EACsE;IACtE,OAAO,CAAC,OAAO;CAOf"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optimistic-policy.d.ts","sourceRoot":"","sources":["../../../src/services/voice/optimistic-policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH;4DAC4D;AAC5D,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;AAEpE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,uBAAuB,IAAI,gBAAgB,CAyC1D;AAED,MAAM,WAAW,uBAAuB;IACvC;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,2BAA2B;IAC3C,WAAW,CAAC,EAAE,gBAAgB,CAAC;IAC/B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,eAAO,MAAM,gCAAgC,MAAM,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,8BAA8B,CAC7C,IAAI,EAAE,2BAA2B,GAC/B,OAAO,CAMT;AAED;;;;;;;;GAQG;AACH,qBAAa,0BAA0B;IACtC,OAAO,CAAC,aAAa,CAAsB;IAC3C,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;gBAE1B,IAAI,GAAE,uBAA4B;IAM9C,oEAAoE;IACpE,cAAc,CAAC,KAAK,EAAE,gBAAgB,GAAG,IAAI;IAI7C,qCAAqC;IACrC,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,IAAI;IAI7C,oDAAoD;IACpD,OAAO,IAAI,OAAO;IAWlB;;;;;OAKG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAKjD,IAAI,SAAS,IAAI,MAAM,CAEtB;CACD"}
|