@elizaos/plugin-local-inference 2.0.0-beta.1 → 2.0.3-beta.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +157 -0
- package/dist/actions/generate-media.d.ts +59 -0
- package/dist/actions/generate-media.d.ts.map +1 -0
- package/dist/actions/identify-speaker.d.ts +23 -0
- package/dist/actions/identify-speaker.d.ts.map +1 -0
- package/dist/actions/transcription-control.d.ts +29 -0
- package/dist/actions/transcription-control.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/environment.d.ts +12 -0
- package/dist/adapters/capacitor-llama/environment.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/index.browser.d.ts +9 -0
- package/dist/adapters/capacitor-llama/index.browser.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/index.d.ts +18 -0
- package/dist/adapters/capacitor-llama/index.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/loader.d.ts +35 -0
- package/dist/adapters/capacitor-llama/loader.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/native-voice-capture.d.ts +70 -0
- package/dist/adapters/capacitor-llama/native-voice-capture.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/structured-output.d.ts +62 -0
- package/dist/adapters/capacitor-llama/structured-output.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/text-streaming.d.ts +24 -0
- package/dist/adapters/capacitor-llama/text-streaming.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/types.d.ts +338 -0
- package/dist/adapters/capacitor-llama/types.d.ts.map +1 -0
- package/dist/adapters/capacitor-llama/voice-turn.d.ts +86 -0
- package/dist/adapters/capacitor-llama/voice-turn.d.ts.map +1 -0
- package/dist/backends/apple-foundation.d.ts +56 -0
- package/dist/backends/apple-foundation.d.ts.map +1 -0
- package/dist/index.d.ts +8 -37
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38979 -430
- package/dist/index.js.map +217 -0
- package/dist/local-inference-routes.d.ts +47 -0
- package/dist/local-inference-routes.d.ts.map +1 -0
- package/dist/provider.d.ts +21 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/routes/compat-helpers.d.ts +18 -0
- package/dist/routes/compat-helpers.d.ts.map +1 -0
- package/dist/routes/family-member-route.d.ts +62 -0
- package/dist/routes/family-member-route.d.ts.map +1 -0
- package/dist/routes/index.d.ts +20 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +42040 -0
- package/dist/routes/index.js.map +236 -0
- package/dist/routes/live-diarization-route.d.ts +33 -0
- package/dist/routes/live-diarization-route.d.ts.map +1 -0
- package/dist/routes/local-inference-asr-route.d.ts +4 -0
- package/dist/routes/local-inference-asr-route.d.ts.map +1 -0
- package/dist/routes/local-inference-asr-transcribe.d.ts +20 -0
- package/dist/routes/local-inference-asr-transcribe.d.ts.map +1 -0
- package/dist/routes/local-inference-compat-routes.d.ts +16 -0
- package/dist/routes/local-inference-compat-routes.d.ts.map +1 -0
- package/dist/routes/local-inference-tts-route.d.ts +7 -0
- package/dist/routes/local-inference-tts-route.d.ts.map +1 -0
- package/dist/routes/native-pcm-turn-route.d.ts +3 -0
- package/dist/routes/native-pcm-turn-route.d.ts.map +1 -0
- package/dist/routes/transcript-audio-store.d.ts +15 -0
- package/dist/routes/transcript-audio-store.d.ts.map +1 -0
- package/dist/routes/transcripts-routes.d.ts +44 -0
- package/dist/routes/transcripts-routes.d.ts.map +1 -0
- package/dist/routes/voice-first-run-routes.d.ts +62 -0
- package/dist/routes/voice-first-run-routes.d.ts.map +1 -0
- package/dist/routes/voice-models-routes.d.ts +62 -0
- package/dist/routes/voice-models-routes.d.ts.map +1 -0
- package/dist/routes/voice-profile-plugin-routes.d.ts +19 -0
- package/dist/routes/voice-profile-plugin-routes.d.ts.map +1 -0
- package/dist/routes/voice-profiles-management-routes.d.ts +52 -0
- package/dist/routes/voice-profiles-management-routes.d.ts.map +1 -0
- package/dist/routes/voice-speaker-profile-routes.d.ts +57 -0
- package/dist/routes/voice-speaker-profile-routes.d.ts.map +1 -0
- package/dist/runtime/embedding-manager-support.d.ts +77 -0
- package/dist/runtime/embedding-manager-support.d.ts.map +1 -0
- package/dist/runtime/embedding-presets.d.ts +16 -0
- package/dist/runtime/embedding-presets.d.ts.map +1 -0
- package/dist/runtime/embedding-warmup-policy.d.ts +14 -0
- package/dist/runtime/embedding-warmup-policy.d.ts.map +1 -0
- package/dist/runtime/ensure-local-inference-handler.d.ts +70 -0
- package/dist/runtime/ensure-local-inference-handler.d.ts.map +1 -0
- package/dist/runtime/index.d.ts +15 -0
- package/dist/runtime/index.d.ts.map +1 -0
- package/dist/runtime/index.js +38768 -0
- package/dist/runtime/index.js.map +217 -0
- package/dist/runtime/mobile-local-inference-gate.d.ts +63 -0
- package/dist/runtime/mobile-local-inference-gate.d.ts.map +1 -0
- package/dist/runtime/voice-entity-binding.d.ts +113 -0
- package/dist/runtime/voice-entity-binding.d.ts.map +1 -0
- package/dist/services/active-model.d.ts +310 -0
- package/dist/services/active-model.d.ts.map +1 -0
- package/dist/services/asr-provenance.d.ts +5 -0
- package/dist/services/asr-provenance.d.ts.map +1 -0
- package/dist/services/assignments.d.ts +84 -0
- package/dist/services/assignments.d.ts.map +1 -0
- package/dist/services/backend-selector.d.ts +55 -0
- package/dist/services/backend-selector.d.ts.map +1 -0
- package/dist/services/backend.d.ts +440 -0
- package/dist/services/backend.d.ts.map +1 -0
- package/dist/services/bionic-host-loader.d.ts +67 -0
- package/dist/services/bionic-host-loader.d.ts.map +1 -0
- package/dist/services/bundled-models.d.ts +34 -0
- package/dist/services/bundled-models.d.ts.map +1 -0
- package/dist/services/cache-bridge.d.ts +206 -0
- package/dist/services/cache-bridge.d.ts.map +1 -0
- package/dist/services/catalog.d.ts +10 -0
- package/dist/services/catalog.d.ts.map +1 -0
- package/dist/services/checkpoint-client.d.ts +109 -0
- package/dist/services/checkpoint-client.d.ts.map +1 -0
- package/dist/services/checkpoint-manager.d.ts +217 -0
- package/dist/services/checkpoint-manager.d.ts.map +1 -0
- package/dist/services/cloud-fallback.d.ts +102 -0
- package/dist/services/cloud-fallback.d.ts.map +1 -0
- package/dist/services/context-fit.d.ts +36 -0
- package/dist/services/context-fit.d.ts.map +1 -0
- package/dist/services/conversation-registry.d.ts +142 -0
- package/dist/services/conversation-registry.d.ts.map +1 -0
- package/dist/services/desktop-fused-ffi-backend-runtime.d.ts +111 -0
- package/dist/services/desktop-fused-ffi-backend-runtime.d.ts.map +1 -0
- package/dist/services/device-bridge.d.ts +188 -0
- package/dist/services/device-bridge.d.ts.map +1 -0
- package/dist/services/device-resource-metrics.d.ts +149 -0
- package/dist/services/device-resource-metrics.d.ts.map +1 -0
- package/dist/services/device-tier.d.ts +133 -0
- package/dist/services/device-tier.d.ts.map +1 -0
- package/dist/services/downloader.d.ts +94 -0
- package/dist/services/downloader.d.ts.map +1 -0
- package/dist/services/engine.d.ts +579 -0
- package/dist/services/engine.d.ts.map +1 -0
- package/dist/services/ensure-local-artifacts.d.ts +82 -0
- package/dist/services/ensure-local-artifacts.d.ts.map +1 -0
- package/dist/services/external-scanner.d.ts +17 -0
- package/dist/services/external-scanner.d.ts.map +1 -0
- package/dist/services/ffi-llm-mock.d.ts +90 -0
- package/dist/services/ffi-llm-mock.d.ts.map +1 -0
- package/dist/services/ffi-llm-streaming-abi.d.ts +318 -0
- package/dist/services/ffi-llm-streaming-abi.d.ts.map +1 -0
- package/dist/services/ffi-streaming-backend.d.ts +201 -0
- package/dist/services/ffi-streaming-backend.d.ts.map +1 -0
- package/dist/services/ffi-streaming-runner.d.ts +146 -0
- package/dist/services/ffi-streaming-runner.d.ts.map +1 -0
- package/dist/services/gpu-autotune.d.ts +150 -0
- package/dist/services/gpu-autotune.d.ts.map +1 -0
- package/dist/services/gpu-detect.d.ts +56 -0
- package/dist/services/gpu-detect.d.ts.map +1 -0
- package/dist/services/handler-registry.d.ts +72 -0
- package/dist/services/handler-registry.d.ts.map +1 -0
- package/dist/services/hardware.d.ts +63 -0
- package/dist/services/hardware.d.ts.map +1 -0
- package/dist/services/image-description-runtime.d.ts +14 -0
- package/dist/services/image-description-runtime.d.ts.map +1 -0
- package/dist/services/imagegen/aosp-unavailable.d.ts +134 -0
- package/dist/services/imagegen/aosp-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/backend-selector.d.ts +118 -0
- package/dist/services/imagegen/backend-selector.d.ts.map +1 -0
- package/dist/services/imagegen/coreml-unavailable.d.ts +105 -0
- package/dist/services/imagegen/coreml-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/errors.d.ts +16 -0
- package/dist/services/imagegen/errors.d.ts.map +1 -0
- package/dist/services/imagegen/index.d.ts +58 -0
- package/dist/services/imagegen/index.d.ts.map +1 -0
- package/dist/services/imagegen/mflux.d.ts +74 -0
- package/dist/services/imagegen/mflux.d.ts.map +1 -0
- package/dist/services/imagegen/sd-cpp.d.ts +181 -0
- package/dist/services/imagegen/sd-cpp.d.ts.map +1 -0
- package/dist/services/imagegen/tensorrt-unavailable.d.ts +83 -0
- package/dist/services/imagegen/tensorrt-unavailable.d.ts.map +1 -0
- package/dist/services/imagegen/types.d.ts +181 -0
- package/dist/services/imagegen/types.d.ts.map +1 -0
- package/dist/services/index.d.ts +31 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +39453 -0
- package/dist/services/index.js.map +227 -0
- package/dist/services/inference-capabilities.d.ts +132 -0
- package/dist/services/inference-capabilities.d.ts.map +1 -0
- package/dist/services/inference-telemetry.d.ts +59 -0
- package/dist/services/inference-telemetry.d.ts.map +1 -0
- package/dist/services/ios-llama-streaming.d.ts +119 -0
- package/dist/services/ios-llama-streaming.d.ts.map +1 -0
- package/dist/services/kv-spill.d.ts +189 -0
- package/dist/services/kv-spill.d.ts.map +1 -0
- package/dist/services/latency-trace.d.ts +346 -0
- package/dist/services/latency-trace.d.ts.map +1 -0
- package/dist/services/lib-target.d.ts +55 -0
- package/dist/services/lib-target.d.ts.map +1 -0
- package/dist/services/live-signals.d.ts +86 -0
- package/dist/services/live-signals.d.ts.map +1 -0
- package/dist/services/llama-server-metrics.d.ts +114 -0
- package/dist/services/llama-server-metrics.d.ts.map +1 -0
- package/dist/services/llm-streaming-binding.d.ts +96 -0
- package/dist/services/llm-streaming-binding.d.ts.map +1 -0
- package/dist/services/load-args.d.ts +82 -0
- package/dist/services/load-args.d.ts.map +1 -0
- package/dist/services/manifest/index.d.ts +4 -0
- package/dist/services/manifest/index.d.ts.map +1 -0
- package/dist/services/manifest/schema.d.ts +903 -0
- package/dist/services/manifest/schema.d.ts.map +1 -0
- package/dist/services/manifest/types.d.ts +32 -0
- package/dist/services/manifest/types.d.ts.map +1 -0
- package/dist/services/manifest/validator.d.ts +66 -0
- package/dist/services/manifest/validator.d.ts.map +1 -0
- package/dist/services/memory-arbiter.d.ts +348 -0
- package/dist/services/memory-arbiter.d.ts.map +1 -0
- package/dist/services/memory-benchmark.d.ts +76 -0
- package/dist/services/memory-benchmark.d.ts.map +1 -0
- package/dist/services/memory-monitor.d.ts +128 -0
- package/dist/services/memory-monitor.d.ts.map +1 -0
- package/dist/services/memory-pressure.d.ts +130 -0
- package/dist/services/memory-pressure.d.ts.map +1 -0
- package/dist/services/mtp-doctor.d.ts +13 -0
- package/dist/services/mtp-doctor.d.ts.map +1 -0
- package/dist/services/network-policy.d.ts +127 -0
- package/dist/services/network-policy.d.ts.map +1 -0
- package/dist/services/paths.d.ts +6 -0
- package/dist/services/paths.d.ts.map +1 -0
- package/dist/services/planner-skeleton.d.ts +124 -0
- package/dist/services/planner-skeleton.d.ts.map +1 -0
- package/dist/services/providers.d.ts +38 -0
- package/dist/services/providers.d.ts.map +1 -0
- package/dist/services/ram-budget.d.ts +110 -0
- package/dist/services/ram-budget.d.ts.map +1 -0
- package/dist/services/readiness.d.ts +9 -0
- package/dist/services/readiness.d.ts.map +1 -0
- package/dist/services/recommendation.d.ts +111 -0
- package/dist/services/recommendation.d.ts.map +1 -0
- package/dist/services/registry.d.ts +33 -0
- package/dist/services/registry.d.ts.map +1 -0
- package/dist/services/router-handler.d.ts +92 -0
- package/dist/services/router-handler.d.ts.map +1 -0
- package/dist/services/routing-policy.d.ts +92 -0
- package/dist/services/routing-policy.d.ts.map +1 -0
- package/dist/services/routing-preferences.d.ts +8 -0
- package/dist/services/routing-preferences.d.ts.map +1 -0
- package/dist/services/runtime-target.d.ts +98 -0
- package/dist/services/runtime-target.d.ts.map +1 -0
- package/dist/services/service.d.ts +128 -0
- package/dist/services/service.d.ts.map +1 -0
- package/dist/services/session-pool.d.ts +72 -0
- package/dist/services/session-pool.d.ts.map +1 -0
- package/dist/services/structured-output/deterministic-repair.d.ts +23 -0
- package/dist/services/structured-output/deterministic-repair.d.ts.map +1 -0
- package/dist/services/structured-output/index.d.ts +2 -0
- package/dist/services/structured-output/index.d.ts.map +1 -0
- package/dist/services/structured-output.d.ts +311 -0
- package/dist/services/structured-output.d.ts.map +1 -0
- package/dist/services/system-memory.d.ts +33 -0
- package/dist/services/system-memory.d.ts.map +1 -0
- package/dist/services/types.d.ts +19 -0
- package/dist/services/types.d.ts.map +1 -0
- package/dist/services/verify-on-device.d.ts +34 -0
- package/dist/services/verify-on-device.d.ts.map +1 -0
- package/dist/services/verify.d.ts +8 -0
- package/dist/services/verify.d.ts.map +1 -0
- package/dist/services/vision/aosp-unavailable.d.ts +115 -0
- package/dist/services/vision/aosp-unavailable.d.ts.map +1 -0
- package/dist/services/vision/capacitor-llama.d.ts +99 -0
- package/dist/services/vision/capacitor-llama.d.ts.map +1 -0
- package/dist/services/vision/cloud-fallback.d.ts +47 -0
- package/dist/services/vision/cloud-fallback.d.ts.map +1 -0
- package/dist/services/vision/hash.d.ts +71 -0
- package/dist/services/vision/hash.d.ts.map +1 -0
- package/dist/services/vision/index.d.ts +95 -0
- package/dist/services/vision/index.d.ts.map +1 -0
- package/dist/services/vision/llama-server.d.ts +73 -0
- package/dist/services/vision/llama-server.d.ts.map +1 -0
- package/dist/services/vision/types.d.ts +162 -0
- package/dist/services/vision/types.d.ts.map +1 -0
- package/dist/services/vision/vast-fallback.d.ts +18 -0
- package/dist/services/vision/vast-fallback.d.ts.map +1 -0
- package/dist/services/vision-embedding-cache.d.ts +98 -0
- package/dist/services/vision-embedding-cache.d.ts.map +1 -0
- package/dist/services/voice/__test-helpers__/fake-ffi.d.ts +27 -0
- package/dist/services/voice/__test-helpers__/fake-ffi.d.ts.map +1 -0
- package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts +66 -0
- package/dist/services/voice/__test-helpers__/synthetic-speech.d.ts.map +1 -0
- package/dist/services/voice/acoustic-speaker-attribution.d.ts +61 -0
- package/dist/services/voice/acoustic-speaker-attribution.d.ts.map +1 -0
- package/dist/services/voice/audio-frame-consumer.d.ts +294 -0
- package/dist/services/voice/audio-frame-consumer.d.ts.map +1 -0
- package/dist/services/voice/barge-in.d.ts +112 -0
- package/dist/services/voice/barge-in.d.ts.map +1 -0
- package/dist/services/voice/cancellation-coordinator.d.ts +127 -0
- package/dist/services/voice/cancellation-coordinator.d.ts.map +1 -0
- package/dist/services/voice/checkpoint-manager.d.ts +199 -0
- package/dist/services/voice/checkpoint-manager.d.ts.map +1 -0
- package/dist/services/voice/checkpoint-policy.d.ts +178 -0
- package/dist/services/voice/checkpoint-policy.d.ts.map +1 -0
- package/dist/services/voice/corpus-augment.d.ts +111 -0
- package/dist/services/voice/corpus-augment.d.ts.map +1 -0
- package/dist/services/voice/corpus-generator.d.ts +134 -0
- package/dist/services/voice/corpus-generator.d.ts.map +1 -0
- package/dist/services/voice/diarization-error-rate.d.ts +40 -0
- package/dist/services/voice/diarization-error-rate.d.ts.map +1 -0
- package/dist/services/voice/e2e-harness.d.ts +297 -0
- package/dist/services/voice/e2e-harness.d.ts.map +1 -0
- package/dist/services/voice/eager-context-builder.d.ts +170 -0
- package/dist/services/voice/eager-context-builder.d.ts.map +1 -0
- package/dist/services/voice/echo-delay.d.ts +67 -0
- package/dist/services/voice/echo-delay.d.ts.map +1 -0
- package/dist/services/voice/echo-metrics.d.ts +7 -0
- package/dist/services/voice/echo-metrics.d.ts.map +1 -0
- package/dist/services/voice/echo-reference-buffer.d.ts +65 -0
- package/dist/services/voice/echo-reference-buffer.d.ts.map +1 -0
- package/dist/services/voice/eliza1-eot-scorer.d.ts +124 -0
- package/dist/services/voice/eliza1-eot-scorer.d.ts.map +1 -0
- package/dist/services/voice/embedding-server.d.ts +37 -0
- package/dist/services/voice/embedding-server.d.ts.map +1 -0
- package/dist/services/voice/embedding.d.ts +132 -0
- package/dist/services/voice/embedding.d.ts.map +1 -0
- package/dist/services/voice/emotion-attribution.d.ts +68 -0
- package/dist/services/voice/emotion-attribution.d.ts.map +1 -0
- package/dist/services/voice/engine-bridge.d.ts +762 -0
- package/dist/services/voice/engine-bridge.d.ts.map +1 -0
- package/dist/services/voice/eot-classifier-ggml.d.ts +179 -0
- package/dist/services/voice/eot-classifier-ggml.d.ts.map +1 -0
- package/dist/services/voice/eot-classifier.d.ts +211 -0
- package/dist/services/voice/eot-classifier.d.ts.map +1 -0
- package/dist/services/voice/errors.d.ts +20 -0
- package/dist/services/voice/errors.d.ts.map +1 -0
- package/dist/services/voice/expressive-tags.d.ts +158 -0
- package/dist/services/voice/expressive-tags.d.ts.map +1 -0
- package/dist/services/voice/ffi-bindings.d.ts +696 -0
- package/dist/services/voice/ffi-bindings.d.ts.map +1 -0
- package/dist/services/voice/first-line-cache.d.ts +181 -0
- package/dist/services/voice/first-line-cache.d.ts.map +1 -0
- package/dist/services/voice/fused-eot-scorer.d.ts +51 -0
- package/dist/services/voice/fused-eot-scorer.d.ts.map +1 -0
- package/dist/services/voice/index.d.ts +96 -0
- package/dist/services/voice/index.d.ts.map +1 -0
- package/dist/services/voice/kokoro/index.d.ts +24 -0
- package/dist/services/voice/kokoro/index.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-backend.d.ts +87 -0
- package/dist/services/voice/kokoro/kokoro-backend.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts +58 -0
- package/dist/services/voice/kokoro/kokoro-engine-discovery.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts +75 -0
- package/dist/services/voice/kokoro/kokoro-ffi-runtime.d.ts.map +1 -0
- package/dist/services/voice/kokoro/kokoro-runtime.d.ts +100 -0
- package/dist/services/voice/kokoro/kokoro-runtime.d.ts.map +1 -0
- package/dist/services/voice/kokoro/phoneme-stream.d.ts +51 -0
- package/dist/services/voice/kokoro/phoneme-stream.d.ts.map +1 -0
- package/dist/services/voice/kokoro/phonemizer.d.ts +50 -0
- package/dist/services/voice/kokoro/phonemizer.d.ts.map +1 -0
- package/dist/services/voice/kokoro/pick-runtime.d.ts +61 -0
- package/dist/services/voice/kokoro/pick-runtime.d.ts.map +1 -0
- package/dist/services/voice/kokoro/runtime-selection.d.ts +31 -0
- package/dist/services/voice/kokoro/runtime-selection.d.ts.map +1 -0
- package/dist/services/voice/kokoro/types.d.ts +82 -0
- package/dist/services/voice/kokoro/types.d.ts.map +1 -0
- package/dist/services/voice/kokoro/voice-presets.d.ts +23 -0
- package/dist/services/voice/kokoro/voice-presets.d.ts.map +1 -0
- package/dist/services/voice/kokoro/voices.d.ts +30 -0
- package/dist/services/voice/kokoro/voices.d.ts.map +1 -0
- package/dist/services/voice/lifecycle.d.ts +135 -0
- package/dist/services/voice/lifecycle.d.ts.map +1 -0
- package/dist/services/voice/live-diarization-session.d.ts +196 -0
- package/dist/services/voice/live-diarization-session.d.ts.map +1 -0
- package/dist/services/voice/metric-math.d.ts +10 -0
- package/dist/services/voice/metric-math.d.ts.map +1 -0
- package/dist/services/voice/mic-source.d.ts +136 -0
- package/dist/services/voice/mic-source.d.ts.map +1 -0
- package/dist/services/voice/nlms-echo-canceller.d.ts +137 -0
- package/dist/services/voice/nlms-echo-canceller.d.ts.map +1 -0
- package/dist/services/voice/optimistic-policy.d.ts +109 -0
- package/dist/services/voice/optimistic-policy.d.ts.map +1 -0
- package/dist/services/voice/optimistic-rollback.d.ts +151 -0
- package/dist/services/voice/optimistic-rollback.d.ts.map +1 -0
- package/dist/services/voice/partial-stabilizer.d.ts +73 -0
- package/dist/services/voice/partial-stabilizer.d.ts.map +1 -0
- package/dist/services/voice/phoneme-tokenizer.d.ts +49 -0
- package/dist/services/voice/phoneme-tokenizer.d.ts.map +1 -0
- package/dist/services/voice/phrase-cache.d.ts +76 -0
- package/dist/services/voice/phrase-cache.d.ts.map +1 -0
- package/dist/services/voice/phrase-chunker.d.ts +62 -0
- package/dist/services/voice/phrase-chunker.d.ts.map +1 -0
- package/dist/services/voice/pipeline-impls.d.ts +151 -0
- package/dist/services/voice/pipeline-impls.d.ts.map +1 -0
- package/dist/services/voice/pipeline.d.ts +216 -0
- package/dist/services/voice/pipeline.d.ts.map +1 -0
- package/dist/services/voice/prefill-client.d.ts +123 -0
- package/dist/services/voice/prefill-client.d.ts.map +1 -0
- package/dist/services/voice/prefix-preserving-queue.d.ts +113 -0
- package/dist/services/voice/prefix-preserving-queue.d.ts.map +1 -0
- package/dist/services/voice/profile-store.d.ts +248 -0
- package/dist/services/voice/profile-store.d.ts.map +1 -0
- package/dist/services/voice/ring-buffer.d.ts +40 -0
- package/dist/services/voice/ring-buffer.d.ts.map +1 -0
- package/dist/services/voice/rollback-queue.d.ts +24 -0
- package/dist/services/voice/rollback-queue.d.ts.map +1 -0
- package/dist/services/voice/samantha-preset-placeholder.d.ts +67 -0
- package/dist/services/voice/samantha-preset-placeholder.d.ts.map +1 -0
- package/dist/services/voice/samantha-preset-regenerator.d.ts +87 -0
- package/dist/services/voice/samantha-preset-regenerator.d.ts.map +1 -0
- package/dist/services/voice/scheduler.d.ts +146 -0
- package/dist/services/voice/scheduler.d.ts.map +1 -0
- package/dist/services/voice/self-voice-imprint.d.ts +33 -0
- package/dist/services/voice/self-voice-imprint.d.ts.map +1 -0
- package/dist/services/voice/shared-resources.d.ts +204 -0
- package/dist/services/voice/shared-resources.d.ts.map +1 -0
- package/dist/services/voice/speaker/attribution-pipeline.d.ts +74 -0
- package/dist/services/voice/speaker/attribution-pipeline.d.ts.map +1 -0
- package/dist/services/voice/speaker/diarizer-fused.d.ts +59 -0
- package/dist/services/voice/speaker/diarizer-fused.d.ts.map +1 -0
- package/dist/services/voice/speaker/diarizer.d.ts +75 -0
- package/dist/services/voice/speaker/diarizer.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder-fused.d.ts +60 -0
- package/dist/services/voice/speaker/encoder-fused.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder-ggml.d.ts +33 -0
- package/dist/services/voice/speaker/encoder-ggml.d.ts.map +1 -0
- package/dist/services/voice/speaker/encoder.d.ts +37 -0
- package/dist/services/voice/speaker/encoder.d.ts.map +1 -0
- package/dist/services/voice/speaker-imprint.d.ts +83 -0
- package/dist/services/voice/speaker-imprint.d.ts.map +1 -0
- package/dist/services/voice/speaker-preset-cache.d.ts +77 -0
- package/dist/services/voice/speaker-preset-cache.d.ts.map +1 -0
- package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts +160 -0
- package/dist/services/voice/streaming-asr/streaming-pipeline-adapter.d.ts.map +1 -0
- package/dist/services/voice/system-audio-sink.d.ts +73 -0
- package/dist/services/voice/system-audio-sink.d.ts.map +1 -0
- package/dist/services/voice/transcriber.d.ts +244 -0
- package/dist/services/voice/transcriber.d.ts.map +1 -0
- package/dist/services/voice/transcript-knowledge.d.ts +37 -0
- package/dist/services/voice/transcript-knowledge.d.ts.map +1 -0
- package/dist/services/voice/transcript-service.d.ts +60 -0
- package/dist/services/voice/transcript-service.d.ts.map +1 -0
- package/dist/services/voice/transcript-store.d.ts +64 -0
- package/dist/services/voice/transcript-store.d.ts.map +1 -0
- package/dist/services/voice/turn-controller.d.ts +183 -0
- package/dist/services/voice/turn-controller.d.ts.map +1 -0
- package/dist/services/voice/types.d.ts +643 -0
- package/dist/services/voice/types.d.ts.map +1 -0
- package/dist/services/voice/vad.d.ts +283 -0
- package/dist/services/voice/vad.d.ts.map +1 -0
- package/dist/services/voice/voice-budget.d.ts +241 -0
- package/dist/services/voice/voice-budget.d.ts.map +1 -0
- package/dist/services/voice/voice-emotion-classifier.d.ts +95 -0
- package/dist/services/voice/voice-emotion-classifier.d.ts.map +1 -0
- package/dist/services/voice/voice-preload-predictor.d.ts +76 -0
- package/dist/services/voice/voice-preload-predictor.d.ts.map +1 -0
- package/dist/services/voice/voice-preset-format.d.ts +158 -0
- package/dist/services/voice/voice-preset-format.d.ts.map +1 -0
- package/dist/services/voice/voice-profile-artifact.d.ts +116 -0
- package/dist/services/voice/voice-profile-artifact.d.ts.map +1 -0
- package/dist/services/voice/voice-profile-routes.d.ts +83 -0
- package/dist/services/voice/voice-profile-routes.d.ts.map +1 -0
- package/dist/services/voice/voice-scenario.d.ts +131 -0
- package/dist/services/voice/voice-scenario.d.ts.map +1 -0
- package/dist/services/voice/voice-state-machine.d.ts +364 -0
- package/dist/services/voice/voice-state-machine.d.ts.map +1 -0
- package/dist/services/voice/voice-workbench-report.d.ts +117 -0
- package/dist/services/voice/voice-workbench-report.d.ts.map +1 -0
- package/dist/services/voice/wake-word-ggml.d.ts +100 -0
- package/dist/services/voice/wake-word-ggml.d.ts.map +1 -0
- package/dist/services/voice/wake-word.d.ts +255 -0
- package/dist/services/voice/wake-word.d.ts.map +1 -0
- package/dist/services/voice/wav-codec.d.ts +11 -0
- package/dist/services/voice/wav-codec.d.ts.map +1 -0
- package/dist/services/voice/workbench-entrypoint.d.ts +42 -0
- package/dist/services/voice/workbench-entrypoint.d.ts.map +1 -0
- package/dist/services/voice/workbench-headless-runner.d.ts +102 -0
- package/dist/services/voice/workbench-headless-runner.d.ts.map +1 -0
- package/dist/services/voice/workbench-logic-services.d.ts +36 -0
- package/dist/services/voice/workbench-logic-services.d.ts.map +1 -0
- package/dist/services/voice/workbench-real-services.d.ts +17 -0
- package/dist/services/voice/workbench-real-services.d.ts.map +1 -0
- package/dist/services/voice/workbench-scenarios.d.ts +24 -0
- package/dist/services/voice/workbench-scenarios.d.ts.map +1 -0
- package/dist/services/voice/wrap-with-first-line-cache.d.ts +70 -0
- package/dist/services/voice/wrap-with-first-line-cache.d.ts.map +1 -0
- package/dist/services/voice-model-updater.d.ts +240 -0
- package/dist/services/voice-model-updater.d.ts.map +1 -0
- package/dist/services/voice-prewarm.d.ts +3 -0
- package/dist/services/voice-prewarm.d.ts.map +1 -0
- package/dist/voice-workbench.d.ts +18 -0
- package/dist/voice-workbench.d.ts.map +1 -0
- package/dist/voice-workbench.js +5259 -0
- package/dist/voice-workbench.js.map +34 -0
- package/package.json +101 -15
- package/registry-entry.json +137 -0
- package/src/actions/generate-media.ts +647 -0
- package/src/actions/identify-speaker.ts +171 -0
- package/src/actions/transcription-control.test.ts +100 -0
- package/src/actions/transcription-control.ts +127 -0
- package/src/adapters/capacitor-llama/__tests__/compat-behavior.test.ts +218 -0
- package/src/adapters/capacitor-llama/__tests__/index.test.ts +68 -0
- package/src/adapters/capacitor-llama/__tests__/structured-output.test.ts +215 -0
- package/src/adapters/capacitor-llama/__tests__/text-streaming.test.ts +174 -0
- package/src/adapters/capacitor-llama/__tests__/voice-turn.test.ts +293 -0
- package/src/adapters/capacitor-llama/environment.ts +71 -0
- package/src/adapters/capacitor-llama/index.browser.ts +83 -0
- package/src/adapters/capacitor-llama/index.ts +831 -0
- package/src/adapters/capacitor-llama/loader.ts +109 -0
- package/src/adapters/capacitor-llama/native-voice-capture.ts +140 -0
- package/src/adapters/capacitor-llama/structured-output.ts +165 -0
- package/src/adapters/capacitor-llama/text-streaming.ts +227 -0
- package/src/adapters/capacitor-llama/types.ts +374 -0
- package/src/adapters/capacitor-llama/voice-turn.ts +178 -0
- package/src/backends/apple-foundation.ts +127 -0
- package/src/index.ts +62 -0
- package/src/local-inference-routes.test.ts +390 -0
- package/src/local-inference-routes.ts +1625 -0
- package/src/provider.ts +1111 -0
- package/src/routes/compat-helpers.ts +275 -0
- package/src/routes/family-member-route.ts +353 -0
- package/src/routes/index.ts +61 -0
- package/src/routes/live-diarization-route.test.ts +347 -0
- package/src/routes/live-diarization-route.ts +198 -0
- package/src/routes/local-inference-asr-route.test.ts +246 -0
- package/src/routes/local-inference-asr-route.ts +166 -0
- package/src/routes/local-inference-asr-transcribe.test.ts +118 -0
- package/src/routes/local-inference-asr-transcribe.ts +97 -0
- package/src/routes/local-inference-compat-routes.test.ts +485 -0
- package/src/routes/local-inference-compat-routes.ts +775 -0
- package/src/routes/local-inference-tts-route.test.ts +179 -0
- package/src/routes/local-inference-tts-route.ts +230 -0
- package/src/routes/native-pcm-turn-route.test.ts +136 -0
- package/src/routes/native-pcm-turn-route.ts +121 -0
- package/src/routes/transcript-audio-store.ts +27 -0
- package/src/routes/transcripts-routes.test.ts +195 -0
- package/src/routes/transcripts-routes.ts +191 -0
- package/src/routes/voice-first-run-routes.ts +524 -0
- package/src/routes/voice-models-routes.ts +554 -0
- package/src/routes/voice-profile-plugin-routes.ts +138 -0
- package/src/routes/voice-profiles-management-routes.ts +476 -0
- package/src/routes/voice-speaker-profile-routes.ts +199 -0
- package/src/runtime/aosp-llama-loader-selection.test.ts +80 -0
- package/src/runtime/bionic-wire-encoding.test.ts +147 -0
- package/src/runtime/capacitor-llama.d.ts +25 -0
- package/src/runtime/embedding-manager-support.ts +497 -0
- package/src/runtime/embedding-presets.ts +81 -0
- package/src/runtime/embedding-warmup-policy.test.ts +53 -0
- package/src/runtime/embedding-warmup-policy.ts +48 -0
- package/src/runtime/ensure-local-inference-handler.test.ts +726 -0
- package/src/runtime/ensure-local-inference-handler.ts +1640 -0
- package/src/runtime/index.ts +36 -0
- package/src/runtime/mobile-local-inference-gate.test.ts +152 -0
- package/src/runtime/mobile-local-inference-gate.ts +99 -0
- package/src/runtime/voice-entity-binding.transcript.test.ts +98 -0
- package/src/runtime/voice-entity-binding.ts +368 -0
- package/src/runtime/voice-speaker-entity-contract.test.ts +149 -0
- package/src/services/README.md +71 -0
- package/src/services/__tests__/backend-selector.precedence.test.ts +333 -0
- package/src/services/__tests__/backend-selector.test.ts +101 -0
- package/src/services/__tests__/checkpoint-manager.test.ts +376 -0
- package/src/services/__tests__/gpu-autotune.test.ts +400 -0
- package/src/services/__tests__/llm-streaming-binding.test.ts +85 -0
- package/src/services/__tests__/planner-grammar.test.ts +372 -0
- package/src/services/__tests__/runtime-target.test.ts +176 -0
- package/src/services/active-model-context-fit.test.ts +125 -0
- package/src/services/active-model-switch-rollback.test.ts +183 -0
- package/src/services/active-model.ts +1416 -0
- package/src/services/asr-provenance.ts +68 -0
- package/src/services/assignment-validation.test.ts +118 -0
- package/src/services/assignments.test.ts +106 -0
- package/src/services/assignments.ts +278 -0
- package/src/services/backend-selector.ts +95 -0
- package/src/services/backend.test.ts +84 -0
- package/src/services/backend.ts +791 -0
- package/src/services/bionic-host-loader.test.ts +226 -0
- package/src/services/bionic-host-loader.ts +252 -0
- package/src/services/bundled-models.ts +129 -0
- package/src/services/cache-bridge.test.ts +516 -0
- package/src/services/cache-bridge.ts +423 -0
- package/src/services/catalog.test.ts +259 -0
- package/src/services/catalog.ts +33 -0
- package/src/services/checkpoint-client.ts +258 -0
- package/src/services/checkpoint-manager.ts +474 -0
- package/src/services/cloud-fallback.ts +230 -0
- package/src/services/context-fit.test.ts +121 -0
- package/src/services/context-fit.ts +113 -0
- package/src/services/conversation-registry.test.ts +235 -0
- package/src/services/conversation-registry.ts +264 -0
- package/src/services/desktop-fused-ffi-backend-runtime.ts +431 -0
- package/src/services/device-bridge.ts +1237 -0
- package/src/services/device-resource-metrics.test.ts +98 -0
- package/src/services/device-resource-metrics.ts +346 -0
- package/src/services/device-tier.test.ts +458 -0
- package/src/services/device-tier.ts +502 -0
- package/src/services/downloader.test.ts +888 -0
- package/src/services/downloader.ts +1039 -0
- package/src/services/engine-direct-bundle.test.ts +90 -0
- package/src/services/engine-streaming.test.ts +80 -0
- package/src/services/engine.ts +2096 -0
- package/src/services/ensure-local-artifacts.integration.test.ts +273 -0
- package/src/services/ensure-local-artifacts.test.ts +368 -0
- package/src/services/ensure-local-artifacts.ts +351 -0
- package/src/services/external-scanner.ts +312 -0
- package/src/services/ffi-llm-mock.ts +354 -0
- package/src/services/ffi-llm-streaming-abi.ts +445 -0
- package/src/services/ffi-streaming-backend.ts +418 -0
- package/src/services/ffi-streaming-runner.test.ts +220 -0
- package/src/services/ffi-streaming-runner.ts +407 -0
- package/src/services/ffi-unload-ordering.test.ts +166 -0
- package/src/services/fused-eliza1-no-regression.test.ts +144 -0
- package/src/services/gpu-autotune.ts +534 -0
- package/src/services/gpu-detect.ts +139 -0
- package/src/services/handler-registry.ts +240 -0
- package/src/services/hardware.test.ts +236 -0
- package/src/services/hardware.ts +438 -0
- package/src/services/image-description-runtime.test.ts +61 -0
- package/src/services/image-description-runtime.ts +118 -0
- package/src/services/imagegen/aosp-unavailable.ts +229 -0
- package/src/services/imagegen/backend-selector.test.ts +190 -0
- package/src/services/imagegen/backend-selector.ts +277 -0
- package/src/services/imagegen/coreml-unavailable.ts +237 -0
- package/src/services/imagegen/errors.ts +40 -0
- package/src/services/imagegen/index.ts +144 -0
- package/src/services/imagegen/mflux.ts +313 -0
- package/src/services/imagegen/sd-cpp.ts +715 -0
- package/src/services/imagegen/tensorrt-unavailable.ts +295 -0
- package/src/services/imagegen/types.ts +193 -0
- package/src/services/index.ts +229 -0
- package/src/services/inference-capabilities.test.ts +75 -0
- package/src/services/inference-capabilities.ts +204 -0
- package/src/services/inference-telemetry.ts +143 -0
- package/src/services/ios-llama-streaming.ts +248 -0
- package/src/services/kv-spill.test.ts +222 -0
- package/src/services/kv-spill.ts +357 -0
- package/src/services/latency-trace.test.ts +266 -0
- package/src/services/latency-trace.ts +844 -0
- package/src/services/lib-target.test.ts +145 -0
- package/src/services/lib-target.ts +102 -0
- package/src/services/live-signals.test.ts +132 -0
- package/src/services/live-signals.ts +177 -0
- package/src/services/llama-server-metrics.test.ts +168 -0
- package/src/services/llama-server-metrics.ts +304 -0
- package/src/services/llm-streaming-binding.ts +136 -0
- package/src/services/load-args.ts +81 -0
- package/src/services/manifest/eliza-1.manifest.v1.json +790 -0
- package/src/services/manifest/index.ts +72 -0
- package/src/services/manifest/manifest.test.ts +791 -0
- package/src/services/manifest/schema.ts +761 -0
- package/src/services/manifest/types.ts +61 -0
- package/src/services/manifest/validator.ts +633 -0
- package/src/services/memory-arbiter.test.ts +558 -0
- package/src/services/memory-arbiter.ts +991 -0
- package/src/services/memory-benchmark.test.ts +91 -0
- package/src/services/memory-benchmark.ts +354 -0
- package/src/services/memory-monitor.test.ts +232 -0
- package/src/services/memory-monitor.ts +309 -0
- package/src/services/memory-pressure.ts +414 -0
- package/src/services/mtp-doctor.ts +86 -0
- package/src/services/network-policy.ts +346 -0
- package/src/services/paths.ts +25 -0
- package/src/services/planner-skeleton.ts +175 -0
- package/src/services/providers.ts +507 -0
- package/src/services/ram-budget-cache.test.ts +164 -0
- package/src/services/ram-budget.ts +309 -0
- package/src/services/readiness.test.ts +87 -0
- package/src/services/readiness.ts +238 -0
- package/src/services/recommendation.test.ts +216 -0
- package/src/services/recommendation.ts +671 -0
- package/src/services/registry.ts +157 -0
- package/src/services/required-kernels-gate.test.ts +64 -0
- package/src/services/router-handler.test.ts +45 -0
- package/src/services/router-handler.ts +426 -0
- package/src/services/routing-policy.test.ts +352 -0
- package/src/services/routing-policy.ts +367 -0
- package/src/services/routing-preferences.ts +17 -0
- package/src/services/runtime-target.ts +154 -0
- package/src/services/service.test.ts +223 -0
- package/src/services/service.ts +750 -0
- package/src/services/session-pool.ts +153 -0
- package/src/services/structured-output/deterministic-repair.test.ts +169 -0
- package/src/services/structured-output/deterministic-repair.ts +443 -0
- package/src/services/structured-output/index.ts +4 -0
- package/src/services/structured-output.test.ts +483 -0
- package/src/services/structured-output.ts +712 -0
- package/src/services/system-memory.test.ts +47 -0
- package/src/services/system-memory.ts +67 -0
- package/src/services/transcription-priority.test.ts +211 -0
- package/src/services/types.ts +59 -0
- package/src/services/verify-on-device.test.ts +87 -0
- package/src/services/verify-on-device.ts +127 -0
- package/src/services/verify.ts +13 -0
- package/src/services/vision/aosp-unavailable.ts +163 -0
- package/src/services/vision/capacitor-llama.ts +255 -0
- package/src/services/vision/cloud-fallback.test.ts +243 -0
- package/src/services/vision/cloud-fallback.ts +268 -0
- package/src/services/vision/fallback-chain.test.ts +86 -0
- package/src/services/vision/hash.ts +157 -0
- package/src/services/vision/index.ts +251 -0
- package/src/services/vision/llama-server.ts +177 -0
- package/src/services/vision/types.ts +163 -0
- package/src/services/vision/vast-fallback.ts +127 -0
- package/src/services/vision-embedding-cache.ts +189 -0
- package/src/services/voice/VOICE_WORKBENCH.md +133 -0
- package/src/services/voice/__fixtures__/voice-workbench-logic-baseline.json +180 -0
- package/src/services/voice/__test-helpers__/fake-ffi.ts +94 -0
- package/src/services/voice/__test-helpers__/synthetic-speech.ts +194 -0
- package/src/services/voice/__tests__/checkpoint-manager.test.ts +241 -0
- package/src/services/voice/__tests__/checkpoint-policy.test.ts +270 -0
- package/src/services/voice/__tests__/eager-context-builder.test.ts +257 -0
- package/src/services/voice/__tests__/eliza1-eot-scorer.test.ts +288 -0
- package/src/services/voice/__tests__/eot-classifier.test.ts +431 -0
- package/src/services/voice/__tests__/optimistic-rollback.test.ts +312 -0
- package/src/services/voice/__tests__/prefill-client.test.ts +266 -0
- package/src/services/voice/__tests__/prefix-preserving-queue.test.ts +208 -0
- package/src/services/voice/__tests__/streaming-asr.test.ts +450 -0
- package/src/services/voice/__tests__/streaming-transcriber.test.ts +339 -0
- package/src/services/voice/__tests__/turn-detector-resolver.test.ts +195 -0
- package/src/services/voice/__tests__/voice-state-machine-prefill.test.ts +275 -0
- package/src/services/voice/__tests__/voice-state-machine.test.ts +354 -0
- package/src/services/voice/acoustic-speaker-attribution.test.ts +165 -0
- package/src/services/voice/acoustic-speaker-attribution.ts +336 -0
- package/src/services/voice/asr-timed.real.test.ts +139 -0
- package/src/services/voice/audio-frame-consumer.test.ts +669 -0
- package/src/services/voice/audio-frame-consumer.ts +651 -0
- package/src/services/voice/barge-in.test.ts +244 -0
- package/src/services/voice/barge-in.ts +335 -0
- package/src/services/voice/cancellation-coordinator.test.ts +196 -0
- package/src/services/voice/cancellation-coordinator.ts +269 -0
- package/src/services/voice/checkpoint-manager.ts +401 -0
- package/src/services/voice/checkpoint-policy.ts +336 -0
- package/src/services/voice/composite-eot-classifier.test.ts +59 -0
- package/src/services/voice/corpus-augment.test.ts +276 -0
- package/src/services/voice/corpus-augment.ts +451 -0
- package/src/services/voice/corpus-generator.test.ts +201 -0
- package/src/services/voice/corpus-generator.ts +413 -0
- package/src/services/voice/diarization-error-rate.greedy.test.ts +140 -0
- package/src/services/voice/diarization-error-rate.test.ts +100 -0
- package/src/services/voice/diarization-error-rate.ts +249 -0
- package/src/services/voice/e2e-harness.der.test.ts +94 -0
- package/src/services/voice/e2e-harness.respond-eot-entity.test.ts +277 -0
- package/src/services/voice/e2e-harness.security-echo.test.ts +103 -0
- package/src/services/voice/e2e-harness.test.ts +182 -0
- package/src/services/voice/e2e-harness.ts +902 -0
- package/src/services/voice/eager-context-builder.ts +262 -0
- package/src/services/voice/echo-delay.test.ts +118 -0
- package/src/services/voice/echo-delay.ts +135 -0
- package/src/services/voice/echo-metrics.test.ts +17 -0
- package/src/services/voice/echo-metrics.ts +20 -0
- package/src/services/voice/echo-reference-buffer.test.ts +86 -0
- package/src/services/voice/echo-reference-buffer.ts +165 -0
- package/src/services/voice/eliza1-eot-scorer.ts +242 -0
- package/src/services/voice/embedding-server.ts +200 -0
- package/src/services/voice/embedding.test.ts +131 -0
- package/src/services/voice/embedding.ts +242 -0
- package/src/services/voice/emotion-attribution.test.ts +129 -0
- package/src/services/voice/emotion-attribution.ts +361 -0
- package/src/services/voice/engine-bridge-cancellation.test.ts +422 -0
- package/src/services/voice/engine-bridge-transcript-join.test.ts +278 -0
- package/src/services/voice/engine-bridge.test.ts +384 -0
- package/src/services/voice/engine-bridge.ts +2343 -0
- package/src/services/voice/eot-classifier-ggml.ts +569 -0
- package/src/services/voice/eot-classifier.test.ts +98 -0
- package/src/services/voice/eot-classifier.ts +422 -0
- package/src/services/voice/errors.ts +34 -0
- package/src/services/voice/expressive-tags.asr.test.ts +77 -0
- package/src/services/voice/expressive-tags.test.ts +102 -0
- package/src/services/voice/expressive-tags.ts +405 -0
- package/src/services/voice/ffi-bindings.test.ts +735 -0
- package/src/services/voice/ffi-bindings.ts +3387 -0
- package/src/services/voice/first-line-cache.ts +725 -0
- package/src/services/voice/fused-eot-scorer.ts +139 -0
- package/src/services/voice/index.ts +502 -0
- package/src/services/voice/kokoro/__tests__/kokoro-backend.test.ts +262 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.real.test.ts +236 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-bridge.test.ts +60 -0
- package/src/services/voice/kokoro/__tests__/kokoro-engine-discovery.test.ts +277 -0
- package/src/services/voice/kokoro/__tests__/kokoro-ffi-runtime.test.ts +235 -0
- package/src/services/voice/kokoro/__tests__/kokoro-runtime.test.ts +95 -0
- package/src/services/voice/kokoro/__tests__/phonemizer.test.ts +53 -0
- package/src/services/voice/kokoro/__tests__/runtime-selection.test.ts +67 -0
- package/src/services/voice/kokoro/__tests__/voices.test.ts +57 -0
- package/src/services/voice/kokoro/index.ts +79 -0
- package/src/services/voice/kokoro/kokoro-backend.ts +223 -0
- package/src/services/voice/kokoro/kokoro-engine-discovery.ts +177 -0
- package/src/services/voice/kokoro/kokoro-ffi-runtime.ts +233 -0
- package/src/services/voice/kokoro/kokoro-runtime.ts +170 -0
- package/src/services/voice/kokoro/phoneme-stream.ts +123 -0
- package/src/services/voice/kokoro/phonemizer.ts +344 -0
- package/src/services/voice/kokoro/pick-runtime.test.ts +91 -0
- package/src/services/voice/kokoro/pick-runtime.ts +130 -0
- package/src/services/voice/kokoro/runtime-selection.ts +64 -0
- package/src/services/voice/kokoro/types.ts +95 -0
- package/src/services/voice/kokoro/voice-presets.ts +129 -0
- package/src/services/voice/kokoro/voices.ts +64 -0
- package/src/services/voice/lifecycle.test.ts +315 -0
- package/src/services/voice/lifecycle.ts +301 -0
- package/src/services/voice/live-diarization-session.echo.test.ts +232 -0
- package/src/services/voice/live-diarization-session.ts +622 -0
- package/src/services/voice/metric-math.test.ts +61 -0
- package/src/services/voice/metric-math.ts +25 -0
- package/src/services/voice/mic-source.test.ts +210 -0
- package/src/services/voice/mic-source.ts +503 -0
- package/src/services/voice/nlms-echo-canceller.test.ts +244 -0
- package/src/services/voice/nlms-echo-canceller.ts +317 -0
- package/src/services/voice/optimistic-policy.power-source.test.ts +36 -0
- package/src/services/voice/optimistic-policy.test.ts +101 -0
- package/src/services/voice/optimistic-policy.ts +192 -0
- package/src/services/voice/optimistic-rollback.ts +343 -0
- package/src/services/voice/partial-stabilizer.test.ts +68 -0
- package/src/services/voice/partial-stabilizer.ts +140 -0
- package/src/services/voice/phoneme-tokenizer.ts +158 -0
- package/src/services/voice/phrase-cache.test.ts +242 -0
- package/src/services/voice/phrase-cache.ts +186 -0
- package/src/services/voice/phrase-chunker.test.ts +239 -0
- package/src/services/voice/phrase-chunker.ts +281 -0
- package/src/services/voice/pipeline-impls.l6.test.ts +110 -0
- package/src/services/voice/pipeline-impls.test.ts +292 -0
- package/src/services/voice/pipeline-impls.ts +315 -0
- package/src/services/voice/pipeline.ts +504 -0
- package/src/services/voice/prefill-client.ts +316 -0
- package/src/services/voice/prefix-preserving-queue.ts +162 -0
- package/src/services/voice/profile-store.ts +887 -0
- package/src/services/voice/real-audio-decode.test.ts +148 -0
- package/src/services/voice/research/VOICE_8785_ASSESSMENT.md +141 -0
- package/src/services/voice/research/VOICE_PIPELINE_RESEARCH_2026.md +117 -0
- package/src/services/voice/research/VOICE_VALIDATION_RUNBOOK.md +135 -0
- package/src/services/voice/ring-buffer.test.ts +129 -0
- package/src/services/voice/ring-buffer.ts +123 -0
- package/src/services/voice/rollback-queue.ts +74 -0
- package/src/services/voice/samantha-preset-placeholder.test.ts +97 -0
- package/src/services/voice/samantha-preset-placeholder.ts +148 -0
- package/src/services/voice/samantha-preset-regenerator.ts +393 -0
- package/src/services/voice/samantha-preset-regenerator.wav.test.ts +90 -0
- package/src/services/voice/scheduler.t2.test.ts +141 -0
- package/src/services/voice/scheduler.ts +927 -0
- package/src/services/voice/self-voice-imprint.test.ts +59 -0
- package/src/services/voice/self-voice-imprint.ts +102 -0
- package/src/services/voice/shared-resources.ts +343 -0
- package/src/services/voice/speaker/attribution-pipeline.test.ts +221 -0
- package/src/services/voice/speaker/attribution-pipeline.ts +449 -0
- package/src/services/voice/speaker/diarizer-fused.real.test.ts +100 -0
- package/src/services/voice/speaker/diarizer-fused.ts +154 -0
- package/src/services/voice/speaker/diarizer.ts +218 -0
- package/src/services/voice/speaker/encoder-fused.real.test.ts +113 -0
- package/src/services/voice/speaker/encoder-fused.ts +138 -0
- package/src/services/voice/speaker/encoder-ggml.test.ts +59 -0
- package/src/services/voice/speaker/encoder-ggml.ts +79 -0
- package/src/services/voice/speaker/encoder.ts +105 -0
- package/src/services/voice/speaker-imprint.test.ts +185 -0
- package/src/services/voice/speaker-imprint.ts +312 -0
- package/src/services/voice/speaker-preset-cache.test.ts +154 -0
- package/src/services/voice/speaker-preset-cache.ts +195 -0
- package/src/services/voice/streaming-asr/streaming-pipeline-adapter.ts +292 -0
- package/src/services/voice/system-audio-sink.test.ts +29 -0
- package/src/services/voice/system-audio-sink.ts +366 -0
- package/src/services/voice/transcriber.asr-backend.test.ts +76 -0
- package/src/services/voice/transcriber.test.ts +392 -0
- package/src/services/voice/transcriber.ts +704 -0
- package/src/services/voice/transcript-knowledge.test.ts +68 -0
- package/src/services/voice/transcript-knowledge.ts +75 -0
- package/src/services/voice/transcript-service.test.ts +195 -0
- package/src/services/voice/transcript-service.ts +205 -0
- package/src/services/voice/transcript-store.test.ts +189 -0
- package/src/services/voice/transcript-store.ts +164 -0
- package/src/services/voice/turn-controller.test.ts +575 -0
- package/src/services/voice/turn-controller.ts +596 -0
- package/src/services/voice/types.ts +699 -0
- package/src/services/voice/vad.test.ts +498 -0
- package/src/services/voice/vad.ts +832 -0
- package/src/services/voice/vad.v1-v4.test.ts +222 -0
- package/src/services/voice/voice-budget.test.ts +415 -0
- package/src/services/voice/voice-budget.ts +635 -0
- package/src/services/voice/voice-duet.test.ts +375 -0
- package/src/services/voice/voice-emotion-classifier.test.ts +210 -0
- package/src/services/voice/voice-emotion-classifier.ts +273 -0
- package/src/services/voice/voice-hardening.fuzz.test.ts +116 -0
- package/src/services/voice/voice-preload-predictor.test.ts +130 -0
- package/src/services/voice/voice-preload-predictor.ts +113 -0
- package/src/services/voice/voice-preset-format.fuzz.test.ts +89 -0
- package/src/services/voice/voice-preset-format.test.ts +75 -0
- package/src/services/voice/voice-preset-format.ts +713 -0
- package/src/services/voice/voice-preset-generator.test.ts +89 -0
- package/src/services/voice/voice-profile-artifact.test.ts +138 -0
- package/src/services/voice/voice-profile-artifact.ts +518 -0
- package/src/services/voice/voice-profile-routes.test.ts +429 -0
- package/src/services/voice/voice-profile-routes.ts +425 -0
- package/src/services/voice/voice-scenario.test.ts +159 -0
- package/src/services/voice/voice-scenario.ts +280 -0
- package/src/services/voice/voice-scenario.turn-helpers.test.ts +77 -0
- package/src/services/voice/voice-state-machine.ts +727 -0
- package/src/services/voice/voice-workbench-report.test.ts +168 -0
- package/src/services/voice/voice-workbench-report.ts +367 -0
- package/src/services/voice/voice-workbench.test.ts +158 -0
- package/src/services/voice/voice.test.ts +1070 -0
- package/src/services/voice/wake-word-ggml.ts +319 -0
- package/src/services/voice/wake-word.test.ts +298 -0
- package/src/services/voice/wake-word.ts +554 -0
- package/src/services/voice/wav-codec.fuzz.test.ts +59 -0
- package/src/services/voice/wav-codec.test.ts +32 -0
- package/src/services/voice/wav-codec.ts +101 -0
- package/src/services/voice/workbench-entrypoint.test.ts +55 -0
- package/src/services/voice/workbench-entrypoint.ts +88 -0
- package/src/services/voice/workbench-headless-runner.test.ts +162 -0
- package/src/services/voice/workbench-headless-runner.ts +396 -0
- package/src/services/voice/workbench-logic-services.test.ts +225 -0
- package/src/services/voice/workbench-logic-services.ts +184 -0
- package/src/services/voice/workbench-real-services.ts +629 -0
- package/src/services/voice/workbench-scenarios.ts +407 -0
- package/src/services/voice/wrap-with-first-line-cache.ts +267 -0
- package/src/services/voice-model-updater.ts +724 -0
- package/src/services/voice-prewarm.ts +51 -0
- package/src/voice-workbench.ts +71 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-process Kokoro-82M runtime over the fused `libelizainference` FFI
|
|
3
|
+
* (the `eliza_inference_kokoro_*` exports — introduced at ABI v10; the fused
|
|
4
|
+
* library is currently ABI v12, which adds EOT (v11) and ASR word timestamps
|
|
5
|
+
* (v12) on top, so these symbols are present in every current build — see
|
|
6
|
+
* `ELIZA_INFERENCE_ABI_VERSION` in ffi-bindings.ts).
|
|
7
|
+
*
|
|
8
|
+
* This is the canonical Kokoro execution path on every platform. It replaces
|
|
9
|
+
* the local-TCP `KokoroGgufRuntime` (POST `/v1/audio/speech` on a running
|
|
10
|
+
* llama-server) for the mobile case — iOS and Google Play forbid the app
|
|
11
|
+
* opening a local TCP socket, so the HTTP→llama-server route cannot ship there.
|
|
12
|
+
* Kokoro synthesizes through the same dlopen()-ed handle as OmniVoice: the
|
|
13
|
+
* fused build links Eliza-1's Kokoro engine (its own GGUF reader + iSTFT
|
|
14
|
+
* decoder) behind `eliza_inference_kokoro_supported/load/synthesize/sample_rate`.
|
|
15
|
+
*
|
|
16
|
+
* Ownership: this runtime owns its own FFI handle + context. The context is
|
|
17
|
+
* created with `create(bundleRoot)` anchored at the bundle root (or the Kokoro
|
|
18
|
+
* model root when there is no Eliza-1 bundle), mirroring how the desktop fused
|
|
19
|
+
* text runtime obtains its ctx. The GGUF + the active voice `.bin` are loaded
|
|
20
|
+
* once via `kokoroLoad` and reloaded only when the requested voice changes.
|
|
21
|
+
*
|
|
22
|
+
* No silent fallback (AGENTS.md §3): when the loaded library does not export
|
|
23
|
+
* the Kokoro symbols (`kokoroSupported() === false`) or the model/voice files
|
|
24
|
+
* are missing, construction / first synthesis throws a structured
|
|
25
|
+
* `VoiceLifecycleError` rather than dropping back to the TCP route.
|
|
26
|
+
*/
|
|
27
|
+
import { type ElizaInferenceContextHandle, type ElizaInferenceFfi } from "../ffi-bindings";
|
|
28
|
+
import type { KokoroRuntime, KokoroRuntimeInputs } from "./kokoro-runtime";
|
|
29
|
+
import type { KokoroModelLayout } from "./types";
|
|
30
|
+
export interface KokoroFfiRuntimeOptions {
|
|
31
|
+
/** Resolved on-disk Kokoro layout (GGUF filename + voices dir + root). */
|
|
32
|
+
layout: KokoroModelLayout;
|
|
33
|
+
/**
|
|
34
|
+
* Directory the FFI context anchors at (`create(bundleRoot)`). Defaults to
|
|
35
|
+
* the Kokoro model root, which is sufficient for the standalone Kokoro
|
|
36
|
+
* engine — it loads the GGUF + voice `.bin` by explicit absolute path, not
|
|
37
|
+
* by bundle convention.
|
|
38
|
+
*/
|
|
39
|
+
bundleRoot?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Inject a pre-loaded FFI handle (the desktop fused engine already owns one).
|
|
42
|
+
* When omitted the runtime loads its own via `resolveFusedLibraryPath`.
|
|
43
|
+
*/
|
|
44
|
+
ffi?: ElizaInferenceFfi;
|
|
45
|
+
/**
|
|
46
|
+
* Inject a context to reuse. When omitted the runtime creates its own with
|
|
47
|
+
* `ffi.create(bundleRoot)` and destroys it on `dispose`.
|
|
48
|
+
*/
|
|
49
|
+
ctx?: ElizaInferenceContextHandle;
|
|
50
|
+
}
|
|
51
|
+
export declare class KokoroFfiRuntime implements KokoroRuntime {
|
|
52
|
+
readonly id: "gguf";
|
|
53
|
+
readonly sampleRate: number;
|
|
54
|
+
private readonly layout;
|
|
55
|
+
private readonly ffi;
|
|
56
|
+
private readonly ownsFfi;
|
|
57
|
+
private readonly ctx;
|
|
58
|
+
private readonly ownsCtx;
|
|
59
|
+
/** Voice id currently resident on the ctx (null until first load). */
|
|
60
|
+
private loadedVoiceId;
|
|
61
|
+
private disposed;
|
|
62
|
+
constructor(opts: KokoroFfiRuntimeOptions);
|
|
63
|
+
synthesize(args: KokoroRuntimeInputs): Promise<{
|
|
64
|
+
cancelled: boolean;
|
|
65
|
+
}>;
|
|
66
|
+
dispose(): void;
|
|
67
|
+
/**
|
|
68
|
+
* Load the GGUF + the requested voice `.bin` into the ctx, reloading only
|
|
69
|
+
* when the voice changes (Kokoro keeps the model resident; swapping voices
|
|
70
|
+
* is a cheap re-load of the 256-float style tensor).
|
|
71
|
+
*/
|
|
72
|
+
private ensureVoiceLoaded;
|
|
73
|
+
private kokoroSynthesize;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=kokoro-ffi-runtime.d.ts.map
|
|
@@ -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,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kokoro-82M model runner.
|
|
3
|
+
*
|
|
4
|
+
* Execution paths:
|
|
5
|
+
*
|
|
6
|
+
* 1. GGUF via llama-server (default). When the host llama-server advertises
|
|
7
|
+
* a Kokoro-capable build and exposes `/v1/audio/speech`, we POST text in
|
|
8
|
+
* and stream PCM out.
|
|
9
|
+
*
|
|
10
|
+
* 2. Python subprocess — eval-loop only. Spawns `python -m kokoro_tts`.
|
|
11
|
+
* Never the default in production.
|
|
12
|
+
*/
|
|
13
|
+
import type { KokoroPhonemeSequence, KokoroVoicePack } from "./types";
|
|
14
|
+
/** Pinned GGUF candidate location (carried by our llama.cpp fork). The
|
|
15
|
+
* runtime references this only for diagnostics; the fork-side builder
|
|
16
|
+
* produces the file at this path. */
|
|
17
|
+
export declare const KOKORO_GGUF_REL_PATH = "voice/kokoro-82m-v1_0.gguf";
|
|
18
|
+
/** One synthesized PCM segment delivered to the streaming backend. */
|
|
19
|
+
export interface KokoroRuntimeChunk {
|
|
20
|
+
pcm: Float32Array;
|
|
21
|
+
sampleRate: number;
|
|
22
|
+
isFinal: boolean;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Construction-time inputs for a runtime instance. The voice pack contains
|
|
26
|
+
* the style tensor reference; the runtime is responsible for resolving the
|
|
27
|
+
* bytes off `layout.voicesDir/<file>`.
|
|
28
|
+
*/
|
|
29
|
+
export interface KokoroRuntimeInputs {
|
|
30
|
+
phonemes: KokoroPhonemeSequence;
|
|
31
|
+
voice: KokoroVoicePack;
|
|
32
|
+
/**
|
|
33
|
+
* Output sample budget. The runtime always honours the model's native
|
|
34
|
+
* sample rate (`layout.sampleRate`, usually 24 kHz) — this caps the
|
|
35
|
+
* total samples to prevent runaway generation. Defaults to 16 seconds
|
|
36
|
+
* at the layout sample rate (matches the longest phrase the chunker
|
|
37
|
+
* will emit + headroom).
|
|
38
|
+
*/
|
|
39
|
+
maxSamples?: number;
|
|
40
|
+
/** Cancellation signal — polled at chunk boundaries. */
|
|
41
|
+
cancelSignal: {
|
|
42
|
+
cancelled: boolean;
|
|
43
|
+
};
|
|
44
|
+
/** Per-chunk callback; returning `true` cancels the rest of the run. */
|
|
45
|
+
onChunk: (chunk: KokoroRuntimeChunk) => boolean | undefined;
|
|
46
|
+
}
|
|
47
|
+
/** Shared runtime contract — `KokoroTtsBackend` depends on this, not the
|
|
48
|
+
* concrete classes. Tests inject a mock. */
|
|
49
|
+
export interface KokoroRuntime {
|
|
50
|
+
readonly id: "gguf" | "python" | "mock";
|
|
51
|
+
readonly sampleRate: number;
|
|
52
|
+
synthesize(args: KokoroRuntimeInputs): Promise<{
|
|
53
|
+
cancelled: boolean;
|
|
54
|
+
}>;
|
|
55
|
+
dispose(): void;
|
|
56
|
+
}
|
|
57
|
+
export interface KokoroPythonRuntimeOptions {
|
|
58
|
+
pythonBinary: string;
|
|
59
|
+
/** Resolved layout — the subprocess discovers the model under here. */
|
|
60
|
+
layout: {
|
|
61
|
+
root: string;
|
|
62
|
+
sampleRate: number;
|
|
63
|
+
};
|
|
64
|
+
/** Optional env passed through to the subprocess. */
|
|
65
|
+
env?: NodeJS.ProcessEnv;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Subprocess-backed runtime. Spawns `python -m kokoro_tts ...` per
|
|
69
|
+
* synthesis call (no warm-pool — the Python path is the *eval* path, not
|
|
70
|
+
* the realtime path). Production code paths never select this; the
|
|
71
|
+
* fine-tune evaluator wires it explicitly.
|
|
72
|
+
*/
|
|
73
|
+
export declare class KokoroPythonRuntime implements KokoroRuntime {
|
|
74
|
+
readonly id: "python";
|
|
75
|
+
readonly sampleRate: number;
|
|
76
|
+
constructor(opts: KokoroPythonRuntimeOptions);
|
|
77
|
+
synthesize(_args: KokoroRuntimeInputs): Promise<{
|
|
78
|
+
cancelled: boolean;
|
|
79
|
+
}>;
|
|
80
|
+
dispose(): void;
|
|
81
|
+
}
|
|
82
|
+
export interface KokoroMockRuntimeOptions {
|
|
83
|
+
sampleRate: number;
|
|
84
|
+
/** Total samples emitted per synthesis call. */
|
|
85
|
+
totalSamples?: number;
|
|
86
|
+
/** Number of body chunks to split the output across. */
|
|
87
|
+
chunkCount?: number;
|
|
88
|
+
}
|
|
89
|
+
export declare class KokoroMockRuntime implements KokoroRuntime {
|
|
90
|
+
readonly id: "mock";
|
|
91
|
+
readonly sampleRate: number;
|
|
92
|
+
private readonly opts;
|
|
93
|
+
calls: number;
|
|
94
|
+
constructor(opts: KokoroMockRuntimeOptions);
|
|
95
|
+
synthesize(args: KokoroRuntimeInputs): Promise<{
|
|
96
|
+
cancelled: boolean;
|
|
97
|
+
}>;
|
|
98
|
+
dispose(): void;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=kokoro-runtime.d.ts.map
|
|
@@ -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,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Text → phoneme-id adapter for Kokoro-82M.
|
|
3
|
+
*
|
|
4
|
+
* Kokoro is trained against espeak-ng IPA tokens with a small fixed vocab
|
|
5
|
+
* (~178 entries: IPA symbols + stress/punct markers + special <s>/<pad>).
|
|
6
|
+
* Production deployments should bring real espeak-ng phonemization
|
|
7
|
+
* (`phonemizer` is the pure-JS eSpeak NG package); the bundled fallback here is a
|
|
8
|
+
* deterministic letter-to-pseudo-phoneme adapter that produces audible
|
|
9
|
+
* speech for ASCII English text but loses prosodic accuracy.
|
|
10
|
+
*
|
|
11
|
+
* Resolution order:
|
|
12
|
+
* 1. Caller-provided `KokoroPhonemizer` (preferred — bring your own).
|
|
13
|
+
* 2. Dynamically-imported `phonemizer`/`phonemize` npm package, if installed.
|
|
14
|
+
* 3. Bundled `FallbackG2PPhonemizer` (degrades gracefully, never throws on
|
|
15
|
+
* ASCII input).
|
|
16
|
+
*
|
|
17
|
+
* Non-ASCII text with no real phonemizer raises `KokoroPhonemizerError` —
|
|
18
|
+
* silent garbage out is worse than a surfaced error (AGENTS.md §3).
|
|
19
|
+
*/
|
|
20
|
+
import { type KokoroPhonemeSequence, type KokoroPhonemizer } from "./types";
|
|
21
|
+
/**
|
|
22
|
+
* Deterministic ASCII-only G2P used when no real phonemizer is installed.
|
|
23
|
+
* Lossy by design — this exists so dev environments without espeak-ng still
|
|
24
|
+
* produce lexically useful smoke output for common English phrases, not to
|
|
25
|
+
* replace a production Misaki/espeak phonemizer.
|
|
26
|
+
*/
|
|
27
|
+
export declare class FallbackG2PPhonemizer implements KokoroPhonemizer {
|
|
28
|
+
readonly id = "fallback-g2p";
|
|
29
|
+
phonemize(text: string, _lang: string): Promise<KokoroPhonemeSequence>;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Wraps the npm `phonemizer` package when present. It returns an IPA string
|
|
33
|
+
* which we tokenise with the same VOCAB above. Real Kokoro inference should
|
|
34
|
+
* use a proper espeak tokenizer — production deployments bring their own;
|
|
35
|
+
* this is the "install npm and it works" middle ground.
|
|
36
|
+
*/
|
|
37
|
+
export declare class NpmPhonemizePhonemizer implements KokoroPhonemizer {
|
|
38
|
+
private readonly mod;
|
|
39
|
+
private readonly callStyle;
|
|
40
|
+
readonly id: string;
|
|
41
|
+
private constructor();
|
|
42
|
+
static tryLoad(): Promise<NpmPhonemizePhonemizer | null>;
|
|
43
|
+
phonemize(text: string, lang: string): Promise<KokoroPhonemeSequence>;
|
|
44
|
+
}
|
|
45
|
+
export declare function kokoroLangToPhonemizerLanguage(lang: string): string;
|
|
46
|
+
/** Lazy resolver: caller override → npm `phonemizer` → bundled fallback. */
|
|
47
|
+
export declare function resolvePhonemizer(override?: KokoroPhonemizer): Promise<KokoroPhonemizer>;
|
|
48
|
+
/** Exported for tests and bench-time diagnostics. */
|
|
49
|
+
export declare const KOKORO_PAD_ID: number;
|
|
50
|
+
//# sourceMappingURL=phonemizer.d.ts.map
|
|
@@ -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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kokoro runtime selector — picks the resolved-runtime path.
|
|
3
|
+
*
|
|
4
|
+
* The env knob is `KOKORO_BACKEND`:
|
|
5
|
+
*
|
|
6
|
+
* ffi (default) → KokoroFfiRuntime → in-process synthesis through the
|
|
7
|
+
* fused `libelizainference` handle (the
|
|
8
|
+
* `eliza_inference_kokoro_*` exports, introduced at ABI
|
|
9
|
+
* v10; the fused library is currently ABI v12). This is
|
|
10
|
+
* the SOLE synthesis path on every platform.
|
|
11
|
+
* mock → KokoroMockRuntime. Tests only.
|
|
12
|
+
*
|
|
13
|
+
* The legacy `fork` / `server` value (POST `/v1/audio/speech` on a running
|
|
14
|
+
* llama-server) was removed — Kokoro is folded into the fused lib, so there is
|
|
15
|
+
* one runtime, not a duplicate HTTP transport. The "onnx" value was removed
|
|
16
|
+
* earlier with `onnxruntime-node`.
|
|
17
|
+
*/
|
|
18
|
+
import { type KokoroFfiRuntimeOptions } from "./kokoro-ffi-runtime";
|
|
19
|
+
import { type KokoroMockRuntimeOptions, type KokoroRuntime } from "./kokoro-runtime";
|
|
20
|
+
export type KokoroBackendId = "ffi" | "mock";
|
|
21
|
+
export interface KokoroBackendInputs {
|
|
22
|
+
/** Override the env-resolved backend (tests / programmatic selection). */
|
|
23
|
+
backend?: KokoroBackendId;
|
|
24
|
+
/** Default backend derived from the discovered model layout. Used when no
|
|
25
|
+
* explicit backend and no `KOKORO_BACKEND` env override are set. When
|
|
26
|
+
* omitted the selector defaults to the in-process `ffi` path. */
|
|
27
|
+
defaultBackend?: KokoroBackendId;
|
|
28
|
+
/** Construction options for the in-process FFI path. Used iff backend === "ffi". */
|
|
29
|
+
ffi?: KokoroFfiRuntimeOptions;
|
|
30
|
+
/** Construction options for the mock path. */
|
|
31
|
+
mock?: KokoroMockRuntimeOptions;
|
|
32
|
+
/** Override the process.env source. */
|
|
33
|
+
env?: NodeJS.ProcessEnv;
|
|
34
|
+
}
|
|
35
|
+
export interface KokoroBackendDecision {
|
|
36
|
+
backend: KokoroBackendId;
|
|
37
|
+
/** One-line reason — surfaced to telemetry. */
|
|
38
|
+
reason: string;
|
|
39
|
+
runtime: KokoroRuntime;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Resolve the `KOKORO_BACKEND` env variable. Throws on an unrecognized value
|
|
43
|
+
* — silent fallback would hide a misconfiguration (AGENTS.md §3 "no silent
|
|
44
|
+
* fallback"). The legacy `fork` / `server` (HTTP) value is rejected with a
|
|
45
|
+
* pointer to the in-process path.
|
|
46
|
+
*/
|
|
47
|
+
export declare function readKokoroBackendFromEnv(env?: NodeJS.ProcessEnv): KokoroBackendId | undefined;
|
|
48
|
+
/**
|
|
49
|
+
* Pick the Kokoro runtime backend.
|
|
50
|
+
*
|
|
51
|
+
* 1. Explicit `inputs.backend` wins.
|
|
52
|
+
* 2. Else env (`KOKORO_BACKEND`).
|
|
53
|
+
* 3. Else `inputs.defaultBackend`.
|
|
54
|
+
* 4. Else default → `ffi` (in-process fused handle, the only mobile-safe path).
|
|
55
|
+
*
|
|
56
|
+
* If the chosen backend's options block is missing the call throws a
|
|
57
|
+
* structured error (no silent downgrade). Callers must wire the options
|
|
58
|
+
* for the backends they enable.
|
|
59
|
+
*/
|
|
60
|
+
export declare function pickKokoroRuntimeBackend(inputs: KokoroBackendInputs): KokoroBackendDecision;
|
|
61
|
+
//# sourceMappingURL=pick-runtime.d.ts.map
|
|
@@ -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,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public types for the Kokoro-82M TTS backend (Apache-2.0, hexgrad/Kokoro-82M
|
|
3
|
+
* upstream).
|
|
4
|
+
*
|
|
5
|
+
* Kokoro is a small (~82M-param) StyleTTS-2 derivative that ships with a set
|
|
6
|
+
* of "voice packs" — pre-baked 256-dim style vectors (one .bin per voice).
|
|
7
|
+
* Adding voices is a cheap (~512KB) extra download.
|
|
8
|
+
*/
|
|
9
|
+
/** Canonical voice-pack id. Convention: `<lang>_<name>` (af_bella, am_michael). */
|
|
10
|
+
export type KokoroVoiceId = string;
|
|
11
|
+
/** One bundled voice pack — small fp32 style tensor on disk. */
|
|
12
|
+
export interface KokoroVoicePack {
|
|
13
|
+
/** `af_bella`, `af_sarah`, `am_michael`, ... */
|
|
14
|
+
id: KokoroVoiceId;
|
|
15
|
+
/** Human-readable name shown in UI. */
|
|
16
|
+
displayName: string;
|
|
17
|
+
/** Two-letter language tag (`a` = American English, `b` = British English, etc. per Kokoro convention). */
|
|
18
|
+
lang: string;
|
|
19
|
+
/** Filename inside the voices/ directory, relative to the Kokoro model root. */
|
|
20
|
+
file: string;
|
|
21
|
+
/** Style-vector dim (256 for v1.0). */
|
|
22
|
+
dim: number;
|
|
23
|
+
/** Genre/voice tags for picker UIs. */
|
|
24
|
+
tags?: ReadonlyArray<string>;
|
|
25
|
+
}
|
|
26
|
+
/** Where the runtime expects to find Kokoro on disk. */
|
|
27
|
+
export interface KokoroModelLayout {
|
|
28
|
+
/** Directory under `<stateDir>/local-inference/models/kokoro/`. */
|
|
29
|
+
root: string;
|
|
30
|
+
/** Model file — the Kokoro GGUF carried by our llama.cpp fork. */
|
|
31
|
+
modelFile: string;
|
|
32
|
+
/** Directory containing the per-voice style tensors. */
|
|
33
|
+
voicesDir: string;
|
|
34
|
+
/** Model output sample rate (Kokoro v1.0 = 24000). */
|
|
35
|
+
sampleRate: number;
|
|
36
|
+
}
|
|
37
|
+
/** Construction-time configuration for `KokoroTtsBackend`. */
|
|
38
|
+
export interface KokoroBackendOptions {
|
|
39
|
+
/** Resolved on-disk layout. Required — the backend never guesses paths. */
|
|
40
|
+
layout: KokoroModelLayout;
|
|
41
|
+
/**
|
|
42
|
+
* Voice id to use when the caller's `SpeakerPreset.voiceId` is not in the
|
|
43
|
+
* voice-pack registry. The named voice MUST be present in `layout.voicesDir`.
|
|
44
|
+
*/
|
|
45
|
+
defaultVoiceId: KokoroVoiceId;
|
|
46
|
+
/**
|
|
47
|
+
* Optional phonemizer override. Defaults to the bundled lazy phonemizer,
|
|
48
|
+
* which uses `phonemize` if installed and falls back to a deterministic
|
|
49
|
+
* grapheme-to-phoneme adapter otherwise (documented tradeoff in README).
|
|
50
|
+
*/
|
|
51
|
+
phonemizer?: KokoroPhonemizer;
|
|
52
|
+
/**
|
|
53
|
+
* Max samples emitted in a single streaming chunk. Defaults to a quarter-
|
|
54
|
+
* second at 24kHz (6000) so the scheduler ring buffer sees a continuous
|
|
55
|
+
* trickle and TTFB stays close to the first inference completion.
|
|
56
|
+
*/
|
|
57
|
+
streamingChunkSamples?: number;
|
|
58
|
+
}
|
|
59
|
+
/** A pure (or async-pure) text → phoneme-id sequence converter. */
|
|
60
|
+
export interface KokoroPhonemizer {
|
|
61
|
+
/** Phonemize a single utterance into a sequence of integer ids. */
|
|
62
|
+
phonemize(text: string, lang: string): Promise<KokoroPhonemeSequence>;
|
|
63
|
+
/** Human-facing id (`"phonemize"`, `"espeak-ng"`, `"fallback-g2p"`, ...). */
|
|
64
|
+
readonly id: string;
|
|
65
|
+
}
|
|
66
|
+
export interface KokoroPhonemeSequence {
|
|
67
|
+
/** Token ids for the model's `input_ids` tensor. */
|
|
68
|
+
ids: Int32Array;
|
|
69
|
+
/** Original phoneme string, for debugging and tests. */
|
|
70
|
+
phonemes: string;
|
|
71
|
+
}
|
|
72
|
+
/** Raised when the on-disk model layout is missing or malformed. */
|
|
73
|
+
export declare class KokoroModelMissingError extends Error {
|
|
74
|
+
readonly code: "kokoro-model-missing";
|
|
75
|
+
constructor(message: string);
|
|
76
|
+
}
|
|
77
|
+
/** Raised when phonemization cannot proceed (no phonemizer + non-ASCII text). */
|
|
78
|
+
export declare class KokoroPhonemizerError extends Error {
|
|
79
|
+
readonly code: "kokoro-phonemizer-error";
|
|
80
|
+
constructor(message: string);
|
|
81
|
+
}
|
|
82
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -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,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry of bundled Kokoro voice packs (upstream: hexgrad/Kokoro-82M).
|
|
3
|
+
*
|
|
4
|
+
* Each entry maps a stable `KokoroVoiceId` (the `voices/<id>.bin` filename
|
|
5
|
+
* Kokoro ships) onto display metadata. The runtime resolves a caller's
|
|
6
|
+
* `SpeakerPreset.voiceId` against this table; an unknown id falls through to
|
|
7
|
+
* the backend's `defaultVoiceId`.
|
|
8
|
+
*
|
|
9
|
+
* The actual style tensor (256 fp32 values) lives at
|
|
10
|
+
* `<modelRoot>/voices/<file>` and is loaded lazily on first use.
|
|
11
|
+
*
|
|
12
|
+
* Reference: https://huggingface.co/hexgrad/Kokoro-82M
|
|
13
|
+
*/
|
|
14
|
+
import type { KokoroVoicePack } from "./types";
|
|
15
|
+
export declare const KOKORO_VOICE_PACKS: ReadonlyArray<KokoroVoicePack>;
|
|
16
|
+
/** Look up a voice pack by id. Returns `undefined` for unknown ids — the
|
|
17
|
+
* backend chooses how to fall back (typically `defaultVoiceId`). */
|
|
18
|
+
export declare function findKokoroVoice(id: string): KokoroVoicePack | undefined;
|
|
19
|
+
/** The voice the runtime selects when nothing is configured. */
|
|
20
|
+
export declare const KOKORO_DEFAULT_VOICE_ID = "af_same";
|
|
21
|
+
/** Conservative fallback voice when a configured/default preset is not staged. */
|
|
22
|
+
export declare const KOKORO_FALLBACK_VOICE_ID = "af_bella";
|
|
23
|
+
//# sourceMappingURL=voice-presets.d.ts.map
|
|
@@ -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,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kokoro-82M voice catalog.
|
|
3
|
+
*
|
|
4
|
+
* Re-exports the bundled `KOKORO_VOICE_PACKS` table from `voice-presets.ts`
|
|
5
|
+
* under the canonical filename the integration spec calls out, and adds a few
|
|
6
|
+
* search helpers used by the runtime-selection layer and the picker UI.
|
|
7
|
+
*
|
|
8
|
+
* Each voice pack ships as a small (~256 fp32 values × 4 bytes ≈ 1 KB) style
|
|
9
|
+
* tensor under `<modelRoot>/voices/<file>`. Adding voices is cheap (download
|
|
10
|
+
* a single .bin), and a hot ONNX session can swap voices per-utterance with
|
|
11
|
+
* no re-init cost — the model is the same.
|
|
12
|
+
*
|
|
13
|
+
* Upstream registry: https://huggingface.co/hexgrad/Kokoro-82M/tree/main/voices
|
|
14
|
+
*/
|
|
15
|
+
import type { KokoroVoiceId, KokoroVoicePack } from "./types";
|
|
16
|
+
export { findKokoroVoice, KOKORO_DEFAULT_VOICE_ID, KOKORO_VOICE_PACKS, } from "./voice-presets";
|
|
17
|
+
/** All voice ids that ship with the upstream Kokoro v1.0 release. */
|
|
18
|
+
export declare function listKokoroVoiceIds(): ReadonlyArray<KokoroVoiceId>;
|
|
19
|
+
/** Filter voice packs by language tag (`a` US, `b` UK, etc.). */
|
|
20
|
+
export declare function listKokoroVoicesByLang(lang: string): ReadonlyArray<KokoroVoicePack>;
|
|
21
|
+
/** Filter by an exact tag (`female`, `male`, `british`, `breathy`, ...). */
|
|
22
|
+
export declare function listKokoroVoicesByTag(tag: string): ReadonlyArray<KokoroVoicePack>;
|
|
23
|
+
/**
|
|
24
|
+
* Resolve a caller-supplied voice id against the registry. Returns the
|
|
25
|
+
* matching pack, or the default pack when the id is not bundled. Never
|
|
26
|
+
* throws — runtime selection treats this as a graceful fallback because the
|
|
27
|
+
* caller's `SpeakerPreset.voiceId` may have been authored for OmniVoice.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveKokoroVoiceOrDefault(id: string): KokoroVoicePack;
|
|
30
|
+
//# sourceMappingURL=voices.d.ts.map
|
|
@@ -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"}
|