@pipedog/core 0.0.0 → 0.1.0
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 +25 -0
- package/NOTICE +9 -0
- package/dist/adapters/base_llm_adapter.d.ts +266 -0
- package/dist/adapters/base_llm_adapter.js +489 -0
- package/dist/adapters/index.d.ts +2 -0
- package/dist/adapters/index.js +8 -0
- package/dist/adapters/schemas/direct_function.d.ts +202 -0
- package/dist/adapters/schemas/direct_function.js +302 -0
- package/dist/adapters/schemas/function_schema.d.ts +67 -0
- package/dist/adapters/schemas/function_schema.js +72 -0
- package/dist/adapters/schemas/index.d.ts +2 -0
- package/dist/adapters/schemas/index.js +8 -0
- package/dist/adapters/schemas/tools_schema.d.ts +57 -0
- package/dist/adapters/schemas/tools_schema.js +79 -0
- package/dist/adapters/services/index.d.ts +2 -0
- package/dist/adapters/services/index.js +8 -0
- package/dist/adapters/services/open_ai_adapter.d.ts +147 -0
- package/dist/adapters/services/open_ai_adapter.js +250 -0
- package/dist/audio/dtmf/dtmf_data.d.ts +3 -0
- package/dist/audio/dtmf/dtmf_data.js +22 -0
- package/dist/audio/dtmf/index.d.ts +2 -0
- package/dist/audio/dtmf/index.js +8 -0
- package/dist/audio/dtmf/types.d.ts +31 -0
- package/dist/audio/dtmf/types.js +35 -0
- package/dist/audio/dtmf/utils.d.ts +13 -0
- package/dist/audio/dtmf/utils.js +62 -0
- package/dist/audio/filters/base_audio_filter.d.ts +51 -0
- package/dist/audio/filters/base_audio_filter.js +17 -0
- package/dist/audio/filters/index.d.ts +2 -0
- package/dist/audio/filters/index.js +8 -0
- package/dist/audio/index.d.ts +2 -0
- package/dist/audio/index.js +8 -0
- package/dist/audio/krisp_instance.d.ts +95 -0
- package/dist/audio/krisp_instance.js +229 -0
- package/dist/audio/mixers/base_audio_mixer.d.ts +56 -0
- package/dist/audio/mixers/base_audio_mixer.js +16 -0
- package/dist/audio/mixers/index.d.ts +2 -0
- package/dist/audio/mixers/index.js +8 -0
- package/dist/audio/resamplers/base_audio_resampler.d.ts +46 -0
- package/dist/audio/resamplers/base_audio_resampler.js +35 -0
- package/dist/audio/resamplers/index.d.ts +2 -0
- package/dist/audio/resamplers/index.js +8 -0
- package/dist/audio/resamplers/resampy_resampler.d.ts +10 -0
- package/dist/audio/resamplers/resampy_resampler.js +15 -0
- package/dist/audio/resamplers/soxr_resampler.d.ts +54 -0
- package/dist/audio/resamplers/soxr_resampler.js +69 -0
- package/dist/audio/resamplers/soxr_stream_resampler.d.ts +75 -0
- package/dist/audio/resamplers/soxr_stream_resampler.js +146 -0
- package/dist/audio/turn/base_turn_analyzer.d.ts +84 -0
- package/dist/audio/turn/base_turn_analyzer.js +61 -0
- package/dist/audio/turn/index.d.ts +2 -0
- package/dist/audio/turn/index.js +8 -0
- package/dist/audio/turn/smart_turn/_whisper_features.d.ts +30 -0
- package/dist/audio/turn/smart_turn/_whisper_features.js +225 -0
- package/dist/audio/turn/smart_turn/base_smart_turn.d.ts +94 -0
- package/dist/audio/turn/smart_turn/base_smart_turn.js +239 -0
- package/dist/audio/turn/smart_turn/local_smart_turn_v3.d.ts +76 -0
- package/dist/audio/turn/smart_turn/local_smart_turn_v3.js +143 -0
- package/dist/audio/utils.d.ts +224 -0
- package/dist/audio/utils.js +634 -0
- package/dist/audio/vad/data/index.d.ts +2 -0
- package/dist/audio/vad/data/index.js +8 -0
- package/dist/audio/vad/index.d.ts +2 -0
- package/dist/audio/vad/index.js +8 -0
- package/dist/audio/vad/vad_analyzer.d.ts +126 -0
- package/dist/audio/vad/vad_analyzer.js +211 -0
- package/dist/audio/vad/vad_controller.d.ts +143 -0
- package/dist/audio/vad/vad_controller.js +228 -0
- package/dist/audio/volume.d.ts +38 -0
- package/dist/audio/volume.js +75 -0
- package/dist/bus/adapters/base.d.ts +35 -0
- package/dist/bus/adapters/base.js +19 -0
- package/dist/bus/adapters/index.d.ts +10 -0
- package/dist/bus/adapters/index.js +15 -0
- package/dist/bus/adapters/llm_context_adapter.d.ts +36 -0
- package/dist/bus/adapters/llm_context_adapter.js +82 -0
- package/dist/bus/adapters/tools_schema_adapter.d.ts +25 -0
- package/dist/bus/adapters/tools_schema_adapter.js +70 -0
- package/dist/bus/bridge_processor.d.ts +111 -0
- package/dist/bus/bridge_processor.js +166 -0
- package/dist/bus/bus.d.ts +110 -0
- package/dist/bus/bus.js +200 -0
- package/dist/bus/index.d.ts +22 -0
- package/dist/bus/index.js +27 -0
- package/dist/bus/local/async_queue.d.ts +12 -0
- package/dist/bus/local/async_queue.js +21 -0
- package/dist/bus/local/index.d.ts +3 -0
- package/dist/bus/local/index.js +8 -0
- package/dist/bus/messages.d.ts +378 -0
- package/dist/bus/messages.js +357 -0
- package/dist/bus/network/index.d.ts +16 -0
- package/dist/bus/network/index.js +21 -0
- package/dist/bus/queue.d.ts +27 -0
- package/dist/bus/queue.js +51 -0
- package/dist/bus/serializers/base.d.ts +25 -0
- package/dist/bus/serializers/base.js +14 -0
- package/dist/bus/serializers/index.d.ts +9 -0
- package/dist/bus/serializers/index.js +14 -0
- package/dist/bus/serializers/json.d.ts +77 -0
- package/dist/bus/serializers/json.js +367 -0
- package/dist/bus/subscriber.d.ts +46 -0
- package/dist/bus/subscriber.js +27 -0
- package/dist/bus/ui/index.d.ts +3 -0
- package/dist/bus/ui/index.js +8 -0
- package/dist/bus/ui/messages.d.ts +186 -0
- package/dist/bus/ui/messages.js +171 -0
- package/dist/classifiers/base_classifier.d.ts +263 -0
- package/dist/classifiers/base_classifier.js +346 -0
- package/dist/classifiers/cloudflare/clef/classifier.d.ts +70 -0
- package/dist/classifiers/cloudflare/clef/classifier.js +204 -0
- package/dist/classifiers/cloudflare/clef/client.d.ts +104 -0
- package/dist/classifiers/cloudflare/clef/client.js +234 -0
- package/dist/classifiers/cloudflare/clef/index.d.ts +2 -0
- package/dist/classifiers/cloudflare/clef/index.js +8 -0
- package/dist/classifiers/cloudflare/index.d.ts +2 -0
- package/dist/classifiers/cloudflare/index.js +8 -0
- package/dist/classifiers/http_client.d.ts +70 -0
- package/dist/classifiers/http_client.js +161 -0
- package/dist/classifiers/index.d.ts +2 -0
- package/dist/classifiers/index.js +8 -0
- package/dist/classifiers/jev/classifier.d.ts +8 -0
- package/dist/classifiers/jev/classifier.js +13 -0
- package/dist/classifiers/jev/client.d.ts +8 -0
- package/dist/classifiers/jev/client.js +13 -0
- package/dist/classifiers/jev/index.d.ts +2 -0
- package/dist/classifiers/jev/index.js +8 -0
- package/dist/classifiers/llm/classifier.d.ts +72 -0
- package/dist/classifiers/llm/classifier.js +304 -0
- package/dist/classifiers/llm/index.d.ts +2 -0
- package/dist/classifiers/llm/index.js +8 -0
- package/dist/classifiers/openai/decisions/classifier.d.ts +77 -0
- package/dist/classifiers/openai/decisions/classifier.js +241 -0
- package/dist/classifiers/openai/decisions/client.d.ts +108 -0
- package/dist/classifiers/openai/decisions/client.js +234 -0
- package/dist/classifiers/openai/decisions/index.d.ts +2 -0
- package/dist/classifiers/openai/decisions/index.js +8 -0
- package/dist/classifiers/openai/index.d.ts +2 -0
- package/dist/classifiers/openai/index.js +8 -0
- package/dist/classifiers/typesafe/index.d.ts +2 -0
- package/dist/classifiers/typesafe/index.js +8 -0
- package/dist/classifiers/typesafe/jev/classifier.d.ts +70 -0
- package/dist/classifiers/typesafe/jev/classifier.js +220 -0
- package/dist/classifiers/typesafe/jev/client.d.ts +105 -0
- package/dist/classifiers/typesafe/jev/client.js +233 -0
- package/dist/classifiers/typesafe/jev/index.d.ts +2 -0
- package/dist/classifiers/typesafe/jev/index.js +8 -0
- package/dist/clocks/base_clock.d.ts +13 -0
- package/dist/clocks/base_clock.js +14 -0
- package/dist/clocks/index.d.ts +2 -0
- package/dist/clocks/index.js +8 -0
- package/dist/clocks/system_clock.d.ts +15 -0
- package/dist/clocks/system_clock.js +25 -0
- package/dist/frames/frames.d.ts +2533 -0
- package/dist/frames/frames.js +2485 -0
- package/dist/frames/index.d.ts +2 -0
- package/dist/frames/index.js +8 -0
- package/dist/frames/protobufs/frames_pb2.d.ts +229 -0
- package/dist/frames/protobufs/frames_pb2.js +466 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +56 -0
- package/dist/metrics/index.d.ts +2 -0
- package/dist/metrics/index.js +8 -0
- package/dist/metrics/metrics.d.ts +276 -0
- package/dist/metrics/metrics.js +254 -0
- package/dist/observers/base_observer.d.ts +173 -0
- package/dist/observers/base_observer.js +151 -0
- package/dist/observers/error_observer.d.ts +75 -0
- package/dist/observers/error_observer.js +87 -0
- package/dist/observers/function_call_observer.d.ts +157 -0
- package/dist/observers/function_call_observer.js +222 -0
- package/dist/observers/index.d.ts +2 -0
- package/dist/observers/index.js +8 -0
- package/dist/observers/loggers/debug_log_observer.d.ts +91 -0
- package/dist/observers/loggers/debug_log_observer.js +228 -0
- package/dist/observers/loggers/index.d.ts +2 -0
- package/dist/observers/loggers/index.js +8 -0
- package/dist/observers/loggers/llm_log_observer.d.ts +24 -0
- package/dist/observers/loggers/llm_log_observer.js +110 -0
- package/dist/observers/loggers/metrics_log_observer.d.ts +85 -0
- package/dist/observers/loggers/metrics_log_observer.js +186 -0
- package/dist/observers/loggers/transcription_log_observer.d.ts +23 -0
- package/dist/observers/loggers/transcription_log_observer.js +74 -0
- package/dist/observers/service_metrics_observer.d.ts +168 -0
- package/dist/observers/service_metrics_observer.js +236 -0
- package/dist/observers/speaking_observer.d.ts +104 -0
- package/dist/observers/speaking_observer.js +150 -0
- package/dist/observers/startup_timing_observer.d.ts +221 -0
- package/dist/observers/startup_timing_observer.js +365 -0
- package/dist/observers/turn_tracking_observer.d.ts +78 -0
- package/dist/observers/turn_tracking_observer.js +189 -0
- package/dist/observers/user_bot_latency_observer.d.ts +411 -0
- package/dist/observers/user_bot_latency_observer.js +974 -0
- package/dist/pipeline/base_pipeline.d.ts +49 -0
- package/dist/pipeline/base_pipeline.js +101 -0
- package/dist/pipeline/capabilities.d.ts +76 -0
- package/dist/pipeline/capabilities.js +97 -0
- package/dist/pipeline/index.d.ts +2 -0
- package/dist/pipeline/index.js +8 -0
- package/dist/pipeline/job_context.d.ts +317 -0
- package/dist/pipeline/job_context.js +450 -0
- package/dist/pipeline/job_decorator.d.ts +54 -0
- package/dist/pipeline/job_decorator.js +92 -0
- package/dist/pipeline/llm_switcher.d.ts +84 -0
- package/dist/pipeline/llm_switcher.js +107 -0
- package/dist/pipeline/llm_with_backend.d.ts +435 -0
- package/dist/pipeline/llm_with_backend.js +806 -0
- package/dist/pipeline/parallel_pipeline.d.ts +83 -0
- package/dist/pipeline/parallel_pipeline.js +200 -0
- package/dist/pipeline/pipeline.d.ts +126 -0
- package/dist/pipeline/pipeline.js +196 -0
- package/dist/pipeline/service_switcher.d.ts +287 -0
- package/dist/pipeline/service_switcher.js +509 -0
- package/dist/pipeline/sync_parallel_pipeline.d.ts +192 -0
- package/dist/pipeline/sync_parallel_pipeline.js +387 -0
- package/dist/pipeline/worker.d.ts +814 -0
- package/dist/pipeline/worker.js +1639 -0
- package/dist/pipeline/worker_observer.d.ts +131 -0
- package/dist/pipeline/worker_observer.js +274 -0
- package/dist/pipeline/worker_ready_decorator.d.ts +45 -0
- package/dist/pipeline/worker_ready_decorator.js +76 -0
- package/dist/processors/aggregators/async_tool_messages.d.ts +146 -0
- package/dist/processors/aggregators/async_tool_messages.js +291 -0
- package/dist/processors/aggregators/dtmf_aggregator.d.ts +61 -0
- package/dist/processors/aggregators/dtmf_aggregator.js +144 -0
- package/dist/processors/aggregators/gated.d.ts +43 -0
- package/dist/processors/aggregators/gated.js +86 -0
- package/dist/processors/aggregators/gated_llm_context.d.ts +42 -0
- package/dist/processors/aggregators/gated_llm_context.js +86 -0
- package/dist/processors/aggregators/index.d.ts +2 -0
- package/dist/processors/aggregators/index.js +8 -0
- package/dist/processors/aggregators/llm_context.d.ts +370 -0
- package/dist/processors/aggregators/llm_context.js +580 -0
- package/dist/processors/aggregators/llm_context_summarizer.d.ts +219 -0
- package/dist/processors/aggregators/llm_context_summarizer.js +447 -0
- package/dist/processors/aggregators/llm_response.d.ts +37 -0
- package/dist/processors/aggregators/llm_response.js +71 -0
- package/dist/processors/aggregators/llm_response_universal.d.ts +966 -0
- package/dist/processors/aggregators/llm_response_universal.js +2394 -0
- package/dist/processors/aggregators/llm_text_processor.d.ts +53 -0
- package/dist/processors/aggregators/llm_text_processor.js +102 -0
- package/dist/processors/aggregators/sentence.d.ts +39 -0
- package/dist/processors/aggregators/sentence.js +69 -0
- package/dist/processors/async_generator.d.ts +42 -0
- package/dist/processors/async_generator.js +76 -0
- package/dist/processors/audio/audio_buffer_processor.d.ts +241 -0
- package/dist/processors/audio/audio_buffer_processor.js +565 -0
- package/dist/processors/audio/index.d.ts +2 -0
- package/dist/processors/audio/index.js +8 -0
- package/dist/processors/audio/vad_processor.d.ts +67 -0
- package/dist/processors/audio/vad_processor.js +103 -0
- package/dist/processors/consumer_processor.d.ts +49 -0
- package/dist/processors/consumer_processor.js +85 -0
- package/dist/processors/filters/frame_filter.d.ts +39 -0
- package/dist/processors/filters/frame_filter.js +52 -0
- package/dist/processors/filters/function_filter.d.ts +59 -0
- package/dist/processors/filters/function_filter.js +78 -0
- package/dist/processors/filters/identity_filter.d.ts +33 -0
- package/dist/processors/filters/identity_filter.js +37 -0
- package/dist/processors/filters/index.d.ts +2 -0
- package/dist/processors/filters/index.js +8 -0
- package/dist/processors/filters/null_filter.d.ts +34 -0
- package/dist/processors/filters/null_filter.js +47 -0
- package/dist/processors/filters/wake_notifier_filter.d.ts +48 -0
- package/dist/processors/filters/wake_notifier_filter.js +49 -0
- package/dist/processors/frame_processor.d.ts +360 -0
- package/dist/processors/frame_processor.js +932 -0
- package/dist/processors/frameworks/index.d.ts +2 -0
- package/dist/processors/frameworks/index.js +8 -0
- package/dist/processors/frameworks/rtvi/frames.d.ts +241 -0
- package/dist/processors/frameworks/rtvi/frames.js +259 -0
- package/dist/processors/frameworks/rtvi/index.d.ts +6 -0
- package/dist/processors/frameworks/rtvi/index.js +11 -0
- package/dist/processors/frameworks/rtvi/models.d.ts +1741 -0
- package/dist/processors/frameworks/rtvi/models.js +1807 -0
- package/dist/processors/frameworks/rtvi/observer.d.ts +340 -0
- package/dist/processors/frameworks/rtvi/observer.js +1113 -0
- package/dist/processors/frameworks/rtvi/processor.d.ts +182 -0
- package/dist/processors/frameworks/rtvi/processor.js +676 -0
- package/dist/processors/idle_frame_processor.d.ts +44 -0
- package/dist/processors/idle_frame_processor.js +86 -0
- package/dist/processors/index.d.ts +2 -0
- package/dist/processors/index.js +8 -0
- package/dist/processors/logger.d.ts +42 -0
- package/dist/processors/logger.js +87 -0
- package/dist/processors/metrics/frame_processor_metrics.d.ts +172 -0
- package/dist/processors/metrics/frame_processor_metrics.js +372 -0
- package/dist/processors/metrics/index.d.ts +2 -0
- package/dist/processors/metrics/index.js +8 -0
- package/dist/processors/producer_processor.d.ts +68 -0
- package/dist/processors/producer_processor.js +78 -0
- package/dist/processors/text_transformer.d.ts +30 -0
- package/dist/processors/text_transformer.js +48 -0
- package/dist/registry/index.d.ts +3 -0
- package/dist/registry/index.js +8 -0
- package/dist/registry/registry.d.ts +69 -0
- package/dist/registry/registry.js +149 -0
- package/dist/registry/types.d.ts +47 -0
- package/dist/registry/types.js +39 -0
- package/dist/serializers/base_serializer.d.ts +94 -0
- package/dist/serializers/base_serializer.js +82 -0
- package/dist/serializers/index.d.ts +2 -0
- package/dist/serializers/index.js +8 -0
- package/dist/services/ai_service.d.ts +145 -0
- package/dist/services/ai_service.js +262 -0
- package/dist/services/anthropic/index.d.ts +2 -0
- package/dist/services/anthropic/index.js +7 -0
- package/dist/services/assemblyai/index.d.ts +2 -0
- package/dist/services/assemblyai/index.js +7 -0
- package/dist/services/asyncai/index.d.ts +2 -0
- package/dist/services/asyncai/index.js +7 -0
- package/dist/services/aws/index.d.ts +2 -0
- package/dist/services/aws/index.js +7 -0
- package/dist/services/azure/index.d.ts +2 -0
- package/dist/services/azure/index.js +7 -0
- package/dist/services/baseten/index.d.ts +2 -0
- package/dist/services/baseten/index.js +7 -0
- package/dist/services/bland/index.d.ts +2 -0
- package/dist/services/bland/index.js +7 -0
- package/dist/services/camb/index.d.ts +2 -0
- package/dist/services/camb/index.js +7 -0
- package/dist/services/cartesia/index.d.ts +2 -0
- package/dist/services/cartesia/index.js +7 -0
- package/dist/services/cerebras/index.d.ts +2 -0
- package/dist/services/cerebras/index.js +7 -0
- package/dist/services/crusoe/index.d.ts +2 -0
- package/dist/services/crusoe/index.js +7 -0
- package/dist/services/deepgram/index.d.ts +2 -0
- package/dist/services/deepgram/index.js +7 -0
- package/dist/services/deepseek/index.d.ts +2 -0
- package/dist/services/deepseek/index.js +7 -0
- package/dist/services/elevenlabs/index.d.ts +2 -0
- package/dist/services/elevenlabs/index.js +7 -0
- package/dist/services/fal/index.d.ts +2 -0
- package/dist/services/fal/index.js +7 -0
- package/dist/services/fireworks/index.d.ts +2 -0
- package/dist/services/fireworks/index.js +7 -0
- package/dist/services/fish/index.d.ts +2 -0
- package/dist/services/fish/index.js +7 -0
- package/dist/services/funasr/index.d.ts +3 -0
- package/dist/services/funasr/index.js +8 -0
- package/dist/services/gladia/index.d.ts +2 -0
- package/dist/services/gladia/index.js +7 -0
- package/dist/services/google/index.d.ts +2 -0
- package/dist/services/google/index.js +7 -0
- package/dist/services/gradium/index.d.ts +2 -0
- package/dist/services/gradium/index.js +7 -0
- package/dist/services/grok/index.d.ts +2 -0
- package/dist/services/grok/index.js +7 -0
- package/dist/services/groq/index.d.ts +2 -0
- package/dist/services/groq/index.js +7 -0
- package/dist/services/heygen/index.d.ts +2 -0
- package/dist/services/heygen/index.js +7 -0
- package/dist/services/hume/index.d.ts +2 -0
- package/dist/services/hume/index.js +7 -0
- package/dist/services/image_service.d.ts +52 -0
- package/dist/services/image_service.js +60 -0
- package/dist/services/inception/index.d.ts +2 -0
- package/dist/services/inception/index.js +7 -0
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.js +8 -0
- package/dist/services/inworld/index.d.ts +2 -0
- package/dist/services/inworld/index.js +7 -0
- package/dist/services/keenable/index.d.ts +2 -0
- package/dist/services/keenable/index.js +7 -0
- package/dist/services/kokoro/index.d.ts +2 -0
- package/dist/services/kokoro/index.js +7 -0
- package/dist/services/llm_service.d.ts +1106 -0
- package/dist/services/llm_service.js +2231 -0
- package/dist/services/mem0/index.d.ts +2 -0
- package/dist/services/mem0/index.js +7 -0
- package/dist/services/meta/index.d.ts +2 -0
- package/dist/services/meta/index.js +7 -0
- package/dist/services/minimax/index.d.ts +2 -0
- package/dist/services/minimax/index.js +7 -0
- package/dist/services/mistral/index.d.ts +2 -0
- package/dist/services/mistral/index.js +7 -0
- package/dist/services/moondream/index.d.ts +2 -0
- package/dist/services/moondream/index.js +7 -0
- package/dist/services/moonshine/index.d.ts +2 -0
- package/dist/services/moonshine/index.js +7 -0
- package/dist/services/nebius/index.d.ts +2 -0
- package/dist/services/nebius/index.js +7 -0
- package/dist/services/neuphonic/index.d.ts +2 -0
- package/dist/services/neuphonic/index.js +7 -0
- package/dist/services/novita/index.d.ts +2 -0
- package/dist/services/novita/index.js +7 -0
- package/dist/services/nvidia/index.d.ts +2 -0
- package/dist/services/nvidia/index.js +11 -0
- package/dist/services/ollama/index.d.ts +2 -0
- package/dist/services/ollama/index.js +7 -0
- package/dist/services/openai/index.d.ts +2 -0
- package/dist/services/openai/index.js +7 -0
- package/dist/services/openclaw/index.d.ts +14 -0
- package/dist/services/openclaw/index.js +19 -0
- package/dist/services/openrouter/index.d.ts +2 -0
- package/dist/services/openrouter/index.js +7 -0
- package/dist/services/perplexity/index.d.ts +2 -0
- package/dist/services/perplexity/index.js +7 -0
- package/dist/services/piper/index.d.ts +2 -0
- package/dist/services/piper/index.js +7 -0
- package/dist/services/pocket_tts/index.d.ts +2 -0
- package/dist/services/pocket_tts/index.js +7 -0
- package/dist/services/qwen/index.d.ts +2 -0
- package/dist/services/qwen/index.js +7 -0
- package/dist/services/resembleai/index.d.ts +2 -0
- package/dist/services/resembleai/index.js +7 -0
- package/dist/services/rime/index.d.ts +2 -0
- package/dist/services/rime/index.js +7 -0
- package/dist/services/sambanova/index.d.ts +2 -0
- package/dist/services/sambanova/index.js +7 -0
- package/dist/services/sarvam/index.d.ts +2 -0
- package/dist/services/sarvam/index.js +7 -0
- package/dist/services/settings.d.ts +356 -0
- package/dist/services/settings.js +437 -0
- package/dist/services/simli/index.d.ts +2 -0
- package/dist/services/simli/index.js +7 -0
- package/dist/services/smallest/index.d.ts +2 -0
- package/dist/services/smallest/index.js +7 -0
- package/dist/services/soniox/index.d.ts +2 -0
- package/dist/services/soniox/index.js +7 -0
- package/dist/services/speechify/index.d.ts +2 -0
- package/dist/services/speechify/index.js +7 -0
- package/dist/services/speechmatics/index.d.ts +2 -0
- package/dist/services/speechmatics/index.js +7 -0
- package/dist/services/stt_latency.d.ts +62 -0
- package/dist/services/stt_latency.js +71 -0
- package/dist/services/stt_service.d.ts +601 -0
- package/dist/services/stt_service.js +1044 -0
- package/dist/services/tavus/index.d.ts +2 -0
- package/dist/services/tavus/index.js +7 -0
- package/dist/services/together/index.d.ts +2 -0
- package/dist/services/together/index.js +7 -0
- package/dist/services/tts_service.d.ts +909 -0
- package/dist/services/tts_service.js +2018 -0
- package/dist/services/ultravox/index.d.ts +2 -0
- package/dist/services/ultravox/index.js +9 -0
- package/dist/services/vision_service.d.ts +56 -0
- package/dist/services/vision_service.js +62 -0
- package/dist/services/websocket_service.d.ts +213 -0
- package/dist/services/websocket_service.js +654 -0
- package/dist/services/whisper/index.d.ts +2 -0
- package/dist/services/whisper/index.js +9 -0
- package/dist/services/xai/index.d.ts +2 -0
- package/dist/services/xai/index.js +9 -0
- package/dist/services/xtts/index.d.ts +2 -0
- package/dist/services/xtts/index.js +9 -0
- package/dist/tests/index.d.ts +2 -0
- package/dist/tests/index.js +8 -0
- package/dist/tests/utils.d.ts +123 -0
- package/dist/tests/utils.js +212 -0
- package/dist/transcriptions/index.d.ts +2 -0
- package/dist/transcriptions/index.js +8 -0
- package/dist/transcriptions/language.d.ts +376 -0
- package/dist/transcriptions/language.js +543 -0
- package/dist/transports/base_input.d.ts +149 -0
- package/dist/transports/base_input.js +338 -0
- package/dist/transports/base_output.d.ts +432 -0
- package/dist/transports/base_output.js +1231 -0
- package/dist/transports/base_transport.d.ts +223 -0
- package/dist/transports/base_transport.js +167 -0
- package/dist/transports/daily/index.d.ts +2 -0
- package/dist/transports/daily/index.js +9 -0
- package/dist/transports/heygen/index.d.ts +2 -0
- package/dist/transports/heygen/index.js +9 -0
- package/dist/transports/index.d.ts +2 -0
- package/dist/transports/index.js +8 -0
- package/dist/transports/lemonslice/index.d.ts +2 -0
- package/dist/transports/lemonslice/index.js +9 -0
- package/dist/transports/livekit/index.d.ts +2 -0
- package/dist/transports/livekit/index.js +9 -0
- package/dist/transports/local/index.d.ts +2 -0
- package/dist/transports/local/index.js +9 -0
- package/dist/transports/moq/index.d.ts +2 -0
- package/dist/transports/moq/index.js +9 -0
- package/dist/transports/smallwebrtc/index.d.ts +2 -0
- package/dist/transports/smallwebrtc/index.js +9 -0
- package/dist/transports/tavus/index.d.ts +2 -0
- package/dist/transports/tavus/index.js +9 -0
- package/dist/transports/video_in_sampler.d.ts +157 -0
- package/dist/transports/video_in_sampler.js +258 -0
- package/dist/transports/vonage/index.d.ts +2 -0
- package/dist/transports/vonage/index.js +9 -0
- package/dist/transports/websocket/index.d.ts +2 -0
- package/dist/transports/websocket/index.js +9 -0
- package/dist/transports/whatsapp/index.d.ts +2 -0
- package/dist/transports/whatsapp/index.js +9 -0
- package/dist/turns/eager_end_of_turn_mixin.d.ts +70 -0
- package/dist/turns/eager_end_of_turn_mixin.js +122 -0
- package/dist/turns/empty_user_turn.d.ts +55 -0
- package/dist/turns/empty_user_turn.js +53 -0
- package/dist/turns/index.d.ts +2 -0
- package/dist/turns/index.js +8 -0
- package/dist/turns/speculation_gate.d.ts +169 -0
- package/dist/turns/speculation_gate.js +294 -0
- package/dist/turns/types.d.ts +33 -0
- package/dist/turns/types.js +35 -0
- package/dist/turns/user_idle_controller.d.ts +94 -0
- package/dist/turns/user_idle_controller.js +187 -0
- package/dist/turns/user_mute/always_user_mute_strategy.d.ts +15 -0
- package/dist/turns/user_mute/always_user_mute_strategy.js +29 -0
- package/dist/turns/user_mute/base_user_mute_strategy.d.ts +39 -0
- package/dist/turns/user_mute/base_user_mute_strategy.js +45 -0
- package/dist/turns/user_mute/first_speech_user_mute_strategy.d.ts +28 -0
- package/dist/turns/user_mute/first_speech_user_mute_strategy.js +52 -0
- package/dist/turns/user_mute/function_call_user_mute_strategy.d.ts +25 -0
- package/dist/turns/user_mute/function_call_user_mute_strategy.js +50 -0
- package/dist/turns/user_mute/index.d.ts +6 -0
- package/dist/turns/user_mute/index.js +11 -0
- package/dist/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.d.ts +43 -0
- package/dist/turns/user_mute/mute_until_first_bot_complete_user_mute_strategy.js +76 -0
- package/dist/turns/user_start/base_user_turn_start_strategy.d.ts +135 -0
- package/dist/turns/user_start/base_user_turn_start_strategy.js +134 -0
- package/dist/turns/user_start/external_user_turn_start_strategy.d.ts +45 -0
- package/dist/turns/user_start/external_user_turn_start_strategy.js +64 -0
- package/dist/turns/user_start/index.d.ts +8 -0
- package/dist/turns/user_start/index.js +16 -0
- package/dist/turns/user_start/krisp_viva_ip_user_turn_start_strategy.d.ts +133 -0
- package/dist/turns/user_start/krisp_viva_ip_user_turn_start_strategy.js +243 -0
- package/dist/turns/user_start/min_words_user_turn_start_strategy.d.ts +60 -0
- package/dist/turns/user_start/min_words_user_turn_start_strategy.js +102 -0
- package/dist/turns/user_start/transcription_user_turn_start_strategy.d.ts +29 -0
- package/dist/turns/user_start/transcription_user_turn_start_strategy.js +43 -0
- package/dist/turns/user_start/vad_user_turn_start_strategy.d.ts +20 -0
- package/dist/turns/user_start/vad_user_turn_start_strategy.js +31 -0
- package/dist/turns/user_start/wake_phrase_user_turn_start_strategy.d.ts +141 -0
- package/dist/turns/user_start/wake_phrase_user_turn_start_strategy.js +238 -0
- package/dist/turns/user_stop/base_user_turn_stop_strategy.d.ts +174 -0
- package/dist/turns/user_stop/base_user_turn_stop_strategy.js +170 -0
- package/dist/turns/user_stop/deferred_user_turn_stop_strategy.d.ts +81 -0
- package/dist/turns/user_stop/deferred_user_turn_stop_strategy.js +107 -0
- package/dist/turns/user_stop/eager_match_policy.d.ts +36 -0
- package/dist/turns/user_stop/eager_match_policy.js +50 -0
- package/dist/turns/user_stop/eager_user_turn_stop_strategy.d.ts +84 -0
- package/dist/turns/user_stop/eager_user_turn_stop_strategy.js +154 -0
- package/dist/turns/user_stop/external_user_turn_completion_stop_strategy.d.ts +45 -0
- package/dist/turns/user_stop/external_user_turn_completion_stop_strategy.js +55 -0
- package/dist/turns/user_stop/external_user_turn_stop_strategy.d.ts +115 -0
- package/dist/turns/user_stop/external_user_turn_stop_strategy.js +205 -0
- package/dist/turns/user_stop/index.d.ts +10 -0
- package/dist/turns/user_stop/index.js +15 -0
- package/dist/turns/user_stop/llm_turn_completion_user_turn_stop_strategy.d.ts +44 -0
- package/dist/turns/user_stop/llm_turn_completion_user_turn_stop_strategy.js +59 -0
- package/dist/turns/user_stop/speech_timeout_user_turn_stop_strategy.d.ts +140 -0
- package/dist/turns/user_stop/speech_timeout_user_turn_stop_strategy.js +303 -0
- package/dist/turns/user_stop/turn_analyzer_user_turn_stop_strategy.d.ts +135 -0
- package/dist/turns/user_stop/turn_analyzer_user_turn_stop_strategy.js +332 -0
- package/dist/turns/user_turn_completion_mixin.d.ts +147 -0
- package/dist/turns/user_turn_completion_mixin.js +591 -0
- package/dist/turns/user_turn_controller.d.ts +134 -0
- package/dist/turns/user_turn_controller.js +335 -0
- package/dist/turns/user_turn_processor.d.ts +87 -0
- package/dist/turns/user_turn_processor.js +180 -0
- package/dist/turns/user_turn_strategies.d.ts +187 -0
- package/dist/turns/user_turn_strategies.js +222 -0
- package/dist/utils/async_tool_cancellation.d.ts +35 -0
- package/dist/utils/async_tool_cancellation.js +78 -0
- package/dist/utils/asyncio/index.d.ts +2 -0
- package/dist/utils/asyncio/index.js +7 -0
- package/dist/utils/asyncio/task_manager.d.ts +49 -0
- package/dist/utils/asyncio/task_manager.js +105 -0
- package/dist/utils/base_object.d.ts +76 -0
- package/dist/utils/base_object.js +154 -0
- package/dist/utils/context/aggregated_frame_sequencer.d.ts +491 -0
- package/dist/utils/context/aggregated_frame_sequencer.js +803 -0
- package/dist/utils/context/audio_context_manager.d.ts +131 -0
- package/dist/utils/context/audio_context_manager.js +233 -0
- package/dist/utils/context/index.d.ts +2 -0
- package/dist/utils/context/index.js +7 -0
- package/dist/utils/context/llm_context_summarization.d.ts +258 -0
- package/dist/utils/context/llm_context_summarization.js +511 -0
- package/dist/utils/context/text_segment_map.d.ts +611 -0
- package/dist/utils/context/text_segment_map.js +1132 -0
- package/dist/utils/context/word_completion_tracker.d.ts +273 -0
- package/dist/utils/context/word_completion_tracker.js +441 -0
- package/dist/utils/context/word_timestamp_tracker.d.ts +72 -0
- package/dist/utils/context/word_timestamp_tracker.js +98 -0
- package/dist/utils/deprecation.d.ts +28 -0
- package/dist/utils/deprecation.js +75 -0
- package/dist/utils/env.d.ts +38 -0
- package/dist/utils/env.js +62 -0
- package/dist/utils/errors.d.ts +75 -0
- package/dist/utils/errors.js +202 -0
- package/dist/utils/file_resolver.d.ts +126 -0
- package/dist/utils/file_resolver.js +314 -0
- package/dist/utils/file_storage.d.ts +99 -0
- package/dist/utils/file_storage.js +100 -0
- package/dist/utils/frame_queue.d.ts +36 -0
- package/dist/utils/frame_queue.js +66 -0
- package/dist/utils/http.d.ts +39 -0
- package/dist/utils/http.js +53 -0
- package/dist/utils/image.d.ts +15 -0
- package/dist/utils/image.js +30 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +8 -0
- package/dist/utils/log_config.d.ts +34 -0
- package/dist/utils/log_config.js +76 -0
- package/dist/utils/logger.d.ts +40 -0
- package/dist/utils/logger.js +91 -0
- package/dist/utils/mixin.d.ts +14 -0
- package/dist/utils/mixin.js +63 -0
- package/dist/utils/network.d.ts +73 -0
- package/dist/utils/network.js +90 -0
- package/dist/utils/security/allowed_origins.d.ts +16 -0
- package/dist/utils/security/allowed_origins.js +34 -0
- package/dist/utils/security/index.d.ts +2 -0
- package/dist/utils/security/index.js +7 -0
- package/dist/utils/security/redaction.d.ts +27 -0
- package/dist/utils/security/redaction.js +123 -0
- package/dist/utils/security/ssrf.d.ts +79 -0
- package/dist/utils/security/ssrf.js +327 -0
- package/dist/utils/shared.d.ts +35 -0
- package/dist/utils/shared.js +136 -0
- package/dist/utils/startup.d.ts +17 -0
- package/dist/utils/startup.js +130 -0
- package/dist/utils/string.d.ts +116 -0
- package/dist/utils/string.js +460 -0
- package/dist/utils/sync/base_notifier.d.ts +25 -0
- package/dist/utils/sync/base_notifier.js +16 -0
- package/dist/utils/sync/event_notifier.d.ts +38 -0
- package/dist/utils/sync/event_notifier.js +51 -0
- package/dist/utils/sync/index.d.ts +2 -0
- package/dist/utils/sync/index.js +7 -0
- package/dist/utils/text/alnum_utils.d.ts +109 -0
- package/dist/utils/text/alnum_utils.js +262 -0
- package/dist/utils/text/base_text_aggregator.d.ts +146 -0
- package/dist/utils/text/base_text_aggregator.js +102 -0
- package/dist/utils/text/base_text_filter.d.ts +54 -0
- package/dist/utils/text/base_text_filter.js +50 -0
- package/dist/utils/text/index.d.ts +2 -0
- package/dist/utils/text/index.js +7 -0
- package/dist/utils/text/markdown_text_filter.d.ts +147 -0
- package/dist/utils/text/markdown_text_filter.js +522 -0
- package/dist/utils/text/markup_utils.d.ts +54 -0
- package/dist/utils/text/markup_utils.js +156 -0
- package/dist/utils/text/pattern_pair_aggregator.d.ts +251 -0
- package/dist/utils/text/pattern_pair_aggregator.js +478 -0
- package/dist/utils/text/phonemes.d.ts +60 -0
- package/dist/utils/text/phonemes.js +172 -0
- package/dist/utils/text/simple_text_aggregator.d.ts +135 -0
- package/dist/utils/text/simple_text_aggregator.js +254 -0
- package/dist/utils/text/skip_tags_aggregator.d.ts +85 -0
- package/dist/utils/text/skip_tags_aggregator.js +147 -0
- package/dist/utils/text/transforms/pronunciations.d.ts +65 -0
- package/dist/utils/text/transforms/pronunciations.js +111 -0
- package/dist/utils/text/word_timestamp_utils.d.ts +26 -0
- package/dist/utils/text/word_timestamp_utils.js +52 -0
- package/dist/utils/time.d.ts +13 -0
- package/dist/utils/time.js +31 -0
- package/dist/utils/tracing/index.d.ts +3 -0
- package/dist/utils/tracing/index.js +8 -0
- package/dist/utils/tracing/service_attributes.d.ts +198 -0
- package/dist/utils/tracing/service_attributes.js +434 -0
- package/dist/utils/tracing/service_decorators.d.ts +214 -0
- package/dist/utils/tracing/service_decorators.js +1662 -0
- package/dist/utils/tracing/setup.d.ts +95 -0
- package/dist/utils/tracing/setup.js +110 -0
- package/dist/utils/tracing/tracing_context.d.ts +55 -0
- package/dist/utils/tracing/tracing_context.js +97 -0
- package/dist/utils/tracing/turn_trace_observer.d.ts +90 -0
- package/dist/utils/tracing/turn_trace_observer.js +219 -0
- package/dist/utils/types.d.ts +80 -0
- package/dist/utils/types.js +108 -0
- package/dist/utils/utils.d.ts +5 -0
- package/dist/utils/utils.js +22 -0
- package/dist/utils/yaml.d.ts +64 -0
- package/dist/utils/yaml.js +41 -0
- package/dist/version.d.ts +3 -0
- package/dist/version.js +7 -0
- package/dist/workers/base_worker.d.ts +772 -0
- package/dist/workers/base_worker.js +1298 -0
- package/dist/workers/index.d.ts +2 -0
- package/dist/workers/index.js +8 -0
- package/dist/workers/llm/backend_llm_worker.d.ts +552 -0
- package/dist/workers/llm/backend_llm_worker.js +1055 -0
- package/dist/workers/llm/index.d.ts +6 -0
- package/dist/workers/llm/index.js +11 -0
- package/dist/workers/llm/llm_context_worker.d.ts +66 -0
- package/dist/workers/llm/llm_context_worker.js +72 -0
- package/dist/workers/llm/llm_worker.d.ts +180 -0
- package/dist/workers/llm/llm_worker.js +323 -0
- package/dist/workers/llm/tool_decorator.d.ts +68 -0
- package/dist/workers/llm/tool_decorator.js +60 -0
- package/dist/workers/runner.d.ts +268 -0
- package/dist/workers/runner.js +489 -0
- package/dist/workers/ui/index.d.ts +22 -0
- package/dist/workers/ui/index.js +27 -0
- package/dist/workers/ui/ui_event_decorator.d.ts +43 -0
- package/dist/workers/ui/ui_event_decorator.js +75 -0
- package/dist/workers/ui/ui_job_context.d.ts +12 -0
- package/dist/workers/ui/ui_job_context.js +17 -0
- package/dist/workers/ui/ui_prompts.d.ts +21 -0
- package/dist/workers/ui/ui_prompts.js +41 -0
- package/dist/workers/ui/ui_tools.d.ts +32 -0
- package/dist/workers/ui/ui_tools.js +112 -0
- package/dist/workers/ui/ui_worker.d.ts +571 -0
- package/dist/workers/ui/ui_worker.js +1156 -0
- package/package.json +46 -3
- package/README.md +0 -5
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { AudioVolumeTracker } from "../volume.ts";
|
|
2
|
+
export declare const VAD_CONFIDENCE = 0.7;
|
|
3
|
+
export declare const VAD_START_SECS = 0.2;
|
|
4
|
+
export declare const VAD_STOP_SECS = 0.2;
|
|
5
|
+
export declare const VAD_MIN_VOLUME = 0.6;
|
|
6
|
+
/**
|
|
7
|
+
* Voice Activity Detection states.
|
|
8
|
+
*
|
|
9
|
+
* - QUIET: no voice activity detected.
|
|
10
|
+
* - STARTING: voice activity beginning, transitioning from quiet.
|
|
11
|
+
* - SPEAKING: active voice detected and confirmed.
|
|
12
|
+
* - STOPPING: voice activity ending, transitioning to quiet.
|
|
13
|
+
*/
|
|
14
|
+
export declare const VADState: {
|
|
15
|
+
readonly QUIET: 1;
|
|
16
|
+
readonly STARTING: 2;
|
|
17
|
+
readonly SPEAKING: 3;
|
|
18
|
+
readonly STOPPING: 4;
|
|
19
|
+
};
|
|
20
|
+
export type VADState = (typeof VADState)[keyof typeof VADState];
|
|
21
|
+
export interface VADParamsOptions {
|
|
22
|
+
/** Minimum confidence threshold for voice detection. */
|
|
23
|
+
confidence?: number;
|
|
24
|
+
/** Duration to wait before confirming voice start. */
|
|
25
|
+
startSecs?: number;
|
|
26
|
+
/** Duration to wait before confirming voice stop. */
|
|
27
|
+
stopSecs?: number;
|
|
28
|
+
/** Minimum audio volume threshold for voice detection. */
|
|
29
|
+
minVolume?: number;
|
|
30
|
+
}
|
|
31
|
+
/** Configuration parameters for Voice Activity Detection. */
|
|
32
|
+
export declare class VADParams {
|
|
33
|
+
confidence: number;
|
|
34
|
+
startSecs: number;
|
|
35
|
+
stopSecs: number;
|
|
36
|
+
minVolume: number;
|
|
37
|
+
constructor(options?: VADParamsOptions);
|
|
38
|
+
toString(): string;
|
|
39
|
+
}
|
|
40
|
+
export interface VADAnalyzerOptions {
|
|
41
|
+
/** Audio sample rate in Hz. If null, will be set later. */
|
|
42
|
+
sampleRate?: number | null;
|
|
43
|
+
/** VAD parameters for detection configuration. */
|
|
44
|
+
params?: VADParams | null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Abstract base class for Voice Activity Detection analyzers.
|
|
48
|
+
*
|
|
49
|
+
* Provides the framework for implementing VAD analysis with configurable
|
|
50
|
+
* parameters, state management, and audio processing capabilities.
|
|
51
|
+
* Subclasses must implement the core voice confidence calculation.
|
|
52
|
+
*
|
|
53
|
+
* Upstream runs the model on a single-thread executor; there are no threads
|
|
54
|
+
* on every runtime we target, so the analysis runs inline.
|
|
55
|
+
*/
|
|
56
|
+
export declare abstract class VADAnalyzer {
|
|
57
|
+
protected _initSampleRate: number | null;
|
|
58
|
+
protected _sampleRate: number;
|
|
59
|
+
protected _params: VADParams;
|
|
60
|
+
protected _numChannels: number;
|
|
61
|
+
protected _vadBuffer: Uint8Array;
|
|
62
|
+
protected _volumeTracker: AudioVolumeTracker;
|
|
63
|
+
protected _smoothingFactor: number;
|
|
64
|
+
protected _prevVolume: number;
|
|
65
|
+
protected _vadFrames: number;
|
|
66
|
+
protected _vadFramesNumBytes: number;
|
|
67
|
+
protected _vadStartFrames: number;
|
|
68
|
+
protected _vadStopFrames: number;
|
|
69
|
+
protected _vadStartingCount: number;
|
|
70
|
+
protected _vadStoppingCount: number;
|
|
71
|
+
protected _vadState: VADState;
|
|
72
|
+
constructor(options?: VADAnalyzerOptions);
|
|
73
|
+
/** Current audio sample rate in Hz. */
|
|
74
|
+
get sampleRate(): number;
|
|
75
|
+
/** Number of audio channels (always 1 for mono). */
|
|
76
|
+
get numChannels(): number;
|
|
77
|
+
/** Current VAD configuration parameters. */
|
|
78
|
+
get params(): VADParams;
|
|
79
|
+
/**
|
|
80
|
+
* Get the number of audio frames required for analysis.
|
|
81
|
+
*
|
|
82
|
+
* @returns Number of frames needed for VAD processing.
|
|
83
|
+
*/
|
|
84
|
+
abstract numFramesRequired(): number;
|
|
85
|
+
/**
|
|
86
|
+
* Calculate voice activity confidence for the given audio buffer.
|
|
87
|
+
*
|
|
88
|
+
* @param buffer Audio buffer to analyze.
|
|
89
|
+
* @returns Voice confidence score between 0.0 and 1.0.
|
|
90
|
+
*/
|
|
91
|
+
abstract voiceConfidence(buffer: Uint8Array): number;
|
|
92
|
+
/**
|
|
93
|
+
* Set the sample rate for audio processing.
|
|
94
|
+
*
|
|
95
|
+
* @param sampleRate Audio sample rate in Hz.
|
|
96
|
+
*/
|
|
97
|
+
setSampleRate(sampleRate: number): void;
|
|
98
|
+
/**
|
|
99
|
+
* Set VAD parameters and recalculate internal values.
|
|
100
|
+
*
|
|
101
|
+
* @param params VAD parameters for detection configuration.
|
|
102
|
+
*/
|
|
103
|
+
setParams(params: VADParams): void;
|
|
104
|
+
/** Calculate smoothed audio volume using exponential smoothing. */
|
|
105
|
+
protected _getSmoothedVolume(audio: Uint8Array): number;
|
|
106
|
+
/**
|
|
107
|
+
* Analyze audio buffer and return current VAD state.
|
|
108
|
+
*
|
|
109
|
+
* Processes incoming audio data, maintains internal state, and determines
|
|
110
|
+
* voice activity status based on confidence and volume thresholds.
|
|
111
|
+
*
|
|
112
|
+
* @param buffer Audio buffer to analyze.
|
|
113
|
+
* @returns Current VAD state after processing the buffer.
|
|
114
|
+
*/
|
|
115
|
+
analyzeAudio(buffer: Uint8Array): Promise<VADState>;
|
|
116
|
+
/** Analyze audio buffer and return current VAD state. */
|
|
117
|
+
protected _runAnalyzer(buffer: Uint8Array): VADState;
|
|
118
|
+
/**
|
|
119
|
+
* Release the analyzer's resources.
|
|
120
|
+
*
|
|
121
|
+
* This method should be called when the object is no longer needed.
|
|
122
|
+
* (Upstream shuts down its model thread here; there is none in the port.)
|
|
123
|
+
*/
|
|
124
|
+
cleanup(): Promise<void>;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=vad_analyzer.d.ts.map
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
// Copyright (c) 2024-2026, Daily
|
|
2
|
+
// Copyright (c) 2026, pipedog contributors
|
|
3
|
+
// SPDX-License-Identifier: BSD-2-Clause
|
|
4
|
+
//
|
|
5
|
+
// Ported from pipecat: src/pipecat/audio/vad/vad_analyzer.py
|
|
6
|
+
/**
|
|
7
|
+
* Voice Activity Detection (VAD) analyzer base classes and utilities.
|
|
8
|
+
*
|
|
9
|
+
* Provides the abstract base class for VAD analyzers and associated data
|
|
10
|
+
* structures for voice activity detection in audio streams. Includes state
|
|
11
|
+
* management, parameter configuration, and audio analysis framework.
|
|
12
|
+
*/
|
|
13
|
+
import { logger } from "../../utils/logger.js";
|
|
14
|
+
import { expSmoothing } from "../utils.js";
|
|
15
|
+
import { AudioVolumeTracker } from "../volume.js";
|
|
16
|
+
export const VAD_CONFIDENCE = 0.7;
|
|
17
|
+
export const VAD_START_SECS = 0.2;
|
|
18
|
+
export const VAD_STOP_SECS = 0.2;
|
|
19
|
+
export const VAD_MIN_VOLUME = 0.6;
|
|
20
|
+
/**
|
|
21
|
+
* Voice Activity Detection states.
|
|
22
|
+
*
|
|
23
|
+
* - QUIET: no voice activity detected.
|
|
24
|
+
* - STARTING: voice activity beginning, transitioning from quiet.
|
|
25
|
+
* - SPEAKING: active voice detected and confirmed.
|
|
26
|
+
* - STOPPING: voice activity ending, transitioning to quiet.
|
|
27
|
+
*/
|
|
28
|
+
export const VADState = {
|
|
29
|
+
QUIET: 1,
|
|
30
|
+
STARTING: 2,
|
|
31
|
+
SPEAKING: 3,
|
|
32
|
+
STOPPING: 4,
|
|
33
|
+
};
|
|
34
|
+
/** Configuration parameters for Voice Activity Detection. */
|
|
35
|
+
export class VADParams {
|
|
36
|
+
confidence;
|
|
37
|
+
startSecs;
|
|
38
|
+
stopSecs;
|
|
39
|
+
minVolume;
|
|
40
|
+
constructor(options = {}) {
|
|
41
|
+
this.confidence = options.confidence ?? VAD_CONFIDENCE;
|
|
42
|
+
this.startSecs = options.startSecs ?? VAD_START_SECS;
|
|
43
|
+
this.stopSecs = options.stopSecs ?? VAD_STOP_SECS;
|
|
44
|
+
this.minVolume = options.minVolume ?? VAD_MIN_VOLUME;
|
|
45
|
+
}
|
|
46
|
+
toString() {
|
|
47
|
+
return (`confidence=${this.confidence} start_secs=${this.startSecs} ` +
|
|
48
|
+
`stop_secs=${this.stopSecs} min_volume=${this.minVolume}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Abstract base class for Voice Activity Detection analyzers.
|
|
53
|
+
*
|
|
54
|
+
* Provides the framework for implementing VAD analysis with configurable
|
|
55
|
+
* parameters, state management, and audio processing capabilities.
|
|
56
|
+
* Subclasses must implement the core voice confidence calculation.
|
|
57
|
+
*
|
|
58
|
+
* Upstream runs the model on a single-thread executor; there are no threads
|
|
59
|
+
* on every runtime we target, so the analysis runs inline.
|
|
60
|
+
*/
|
|
61
|
+
export class VADAnalyzer {
|
|
62
|
+
_initSampleRate;
|
|
63
|
+
_sampleRate = 0;
|
|
64
|
+
_params;
|
|
65
|
+
_numChannels = 1;
|
|
66
|
+
_vadBuffer = new Uint8Array(0);
|
|
67
|
+
_volumeTracker = new AudioVolumeTracker();
|
|
68
|
+
// Volume exponential smoothing
|
|
69
|
+
_smoothingFactor = 0.2;
|
|
70
|
+
_prevVolume = 0.0;
|
|
71
|
+
_vadFrames = 0;
|
|
72
|
+
_vadFramesNumBytes = 0;
|
|
73
|
+
_vadStartFrames = 0;
|
|
74
|
+
_vadStopFrames = 0;
|
|
75
|
+
_vadStartingCount = 0;
|
|
76
|
+
_vadStoppingCount = 0;
|
|
77
|
+
_vadState = VADState.QUIET;
|
|
78
|
+
constructor(options = {}) {
|
|
79
|
+
this._initSampleRate = options.sampleRate ?? null;
|
|
80
|
+
this._params = options.params ?? new VADParams();
|
|
81
|
+
}
|
|
82
|
+
/** Current audio sample rate in Hz. */
|
|
83
|
+
get sampleRate() {
|
|
84
|
+
return this._sampleRate;
|
|
85
|
+
}
|
|
86
|
+
/** Number of audio channels (always 1 for mono). */
|
|
87
|
+
get numChannels() {
|
|
88
|
+
return this._numChannels;
|
|
89
|
+
}
|
|
90
|
+
/** Current VAD configuration parameters. */
|
|
91
|
+
get params() {
|
|
92
|
+
return this._params;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Set the sample rate for audio processing.
|
|
96
|
+
*
|
|
97
|
+
* @param sampleRate Audio sample rate in Hz.
|
|
98
|
+
*/
|
|
99
|
+
setSampleRate(sampleRate) {
|
|
100
|
+
this._sampleRate = this._initSampleRate || sampleRate;
|
|
101
|
+
this.setParams(this._params);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Set VAD parameters and recalculate internal values.
|
|
105
|
+
*
|
|
106
|
+
* @param params VAD parameters for detection configuration.
|
|
107
|
+
*/
|
|
108
|
+
setParams(params) {
|
|
109
|
+
logger.debug(`Setting VAD params to: ${params}`);
|
|
110
|
+
this._params = params;
|
|
111
|
+
this._vadFrames = this.numFramesRequired();
|
|
112
|
+
this._vadFramesNumBytes = this._vadFrames * this._numChannels * 2;
|
|
113
|
+
const vadFramesPerSec = this._vadFrames / this.sampleRate;
|
|
114
|
+
this._vadStartFrames = pyRound(this._params.startSecs / vadFramesPerSec);
|
|
115
|
+
this._vadStopFrames = pyRound(this._params.stopSecs / vadFramesPerSec);
|
|
116
|
+
// VAD state resets, but volume state doesn't: the rolling window and its
|
|
117
|
+
// smoothing follow the audio stream, which is continuous across parameter
|
|
118
|
+
// changes.
|
|
119
|
+
this._vadStartingCount = 0;
|
|
120
|
+
this._vadStoppingCount = 0;
|
|
121
|
+
this._vadState = VADState.QUIET;
|
|
122
|
+
}
|
|
123
|
+
/** Calculate smoothed audio volume using exponential smoothing. */
|
|
124
|
+
_getSmoothedVolume(audio) {
|
|
125
|
+
this._volumeTracker.update(audio, this.sampleRate);
|
|
126
|
+
return expSmoothing(this._volumeTracker.volume, this._prevVolume, this._smoothingFactor);
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Analyze audio buffer and return current VAD state.
|
|
130
|
+
*
|
|
131
|
+
* Processes incoming audio data, maintains internal state, and determines
|
|
132
|
+
* voice activity status based on confidence and volume thresholds.
|
|
133
|
+
*
|
|
134
|
+
* @param buffer Audio buffer to analyze.
|
|
135
|
+
* @returns Current VAD state after processing the buffer.
|
|
136
|
+
*/
|
|
137
|
+
async analyzeAudio(buffer) {
|
|
138
|
+
return this._runAnalyzer(buffer);
|
|
139
|
+
}
|
|
140
|
+
/** Analyze audio buffer and return current VAD state. */
|
|
141
|
+
_runAnalyzer(buffer) {
|
|
142
|
+
const combined = new Uint8Array(this._vadBuffer.length + buffer.length);
|
|
143
|
+
combined.set(this._vadBuffer, 0);
|
|
144
|
+
combined.set(buffer, this._vadBuffer.length);
|
|
145
|
+
this._vadBuffer = combined;
|
|
146
|
+
const numRequiredBytes = this._vadFramesNumBytes;
|
|
147
|
+
if (this._vadBuffer.length < numRequiredBytes) {
|
|
148
|
+
return this._vadState;
|
|
149
|
+
}
|
|
150
|
+
while (this._vadBuffer.length >= numRequiredBytes) {
|
|
151
|
+
const audioFrames = this._vadBuffer.slice(0, numRequiredBytes);
|
|
152
|
+
this._vadBuffer = this._vadBuffer.subarray(numRequiredBytes);
|
|
153
|
+
const confidence = this.voiceConfidence(audioFrames);
|
|
154
|
+
const volume = this._getSmoothedVolume(audioFrames);
|
|
155
|
+
this._prevVolume = volume;
|
|
156
|
+
const speaking = confidence >= this._params.confidence && volume >= this._params.minVolume;
|
|
157
|
+
if (speaking) {
|
|
158
|
+
switch (this._vadState) {
|
|
159
|
+
case VADState.QUIET:
|
|
160
|
+
this._vadState = VADState.STARTING;
|
|
161
|
+
this._vadStartingCount = 1;
|
|
162
|
+
break;
|
|
163
|
+
case VADState.STARTING:
|
|
164
|
+
this._vadStartingCount += 1;
|
|
165
|
+
break;
|
|
166
|
+
case VADState.STOPPING:
|
|
167
|
+
this._vadState = VADState.SPEAKING;
|
|
168
|
+
this._vadStoppingCount = 0;
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
else {
|
|
173
|
+
switch (this._vadState) {
|
|
174
|
+
case VADState.STARTING:
|
|
175
|
+
this._vadState = VADState.QUIET;
|
|
176
|
+
this._vadStartingCount = 0;
|
|
177
|
+
break;
|
|
178
|
+
case VADState.SPEAKING:
|
|
179
|
+
this._vadState = VADState.STOPPING;
|
|
180
|
+
this._vadStoppingCount = 1;
|
|
181
|
+
break;
|
|
182
|
+
case VADState.STOPPING:
|
|
183
|
+
this._vadStoppingCount += 1;
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (this._vadState === VADState.STARTING && this._vadStartingCount >= this._vadStartFrames) {
|
|
189
|
+
this._vadState = VADState.SPEAKING;
|
|
190
|
+
this._vadStartingCount = 0;
|
|
191
|
+
}
|
|
192
|
+
if (this._vadState === VADState.STOPPING && this._vadStoppingCount >= this._vadStopFrames) {
|
|
193
|
+
this._vadState = VADState.QUIET;
|
|
194
|
+
this._vadStoppingCount = 0;
|
|
195
|
+
}
|
|
196
|
+
return this._vadState;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Release the analyzer's resources.
|
|
200
|
+
*
|
|
201
|
+
* This method should be called when the object is no longer needed.
|
|
202
|
+
* (Upstream shuts down its model thread here; there is none in the port.)
|
|
203
|
+
*/
|
|
204
|
+
async cleanup() { }
|
|
205
|
+
}
|
|
206
|
+
/** Python's round(): half to even. */
|
|
207
|
+
function pyRound(x) {
|
|
208
|
+
const r = Math.round(x);
|
|
209
|
+
return Math.abs(x % 1) === 0.5 && r % 2 !== 0 ? r - 1 : r;
|
|
210
|
+
}
|
|
211
|
+
//# sourceMappingURL=vad_analyzer.js.map
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Voice Activity Detection controller for managing speech state transitions.
|
|
3
|
+
*
|
|
4
|
+
* Provides a controller that wraps a VADAnalyzer to track speech state and
|
|
5
|
+
* emit events when speech starts, stops, or is actively detected.
|
|
6
|
+
*/
|
|
7
|
+
import { type Task } from "@pipedog/asyncio";
|
|
8
|
+
import { type Frame, InputAudioRawFrame } from "../../frames/frames.ts";
|
|
9
|
+
import { FrameDirection, type FrameProcessorSetup } from "../../processors/frame_processor.ts";
|
|
10
|
+
import { BaseObject } from "../../utils/base_object.ts";
|
|
11
|
+
import { type VADAnalyzer, VADState } from "./vad_analyzer.ts";
|
|
12
|
+
export interface VADControllerOptions {
|
|
13
|
+
/**
|
|
14
|
+
* Minimum interval in seconds between `on_speech_activity` events.
|
|
15
|
+
* Defaults to 0.2.
|
|
16
|
+
*/
|
|
17
|
+
speechActivityPeriod?: number;
|
|
18
|
+
/**
|
|
19
|
+
* Timeout in seconds to force speech stop when no audio frames are
|
|
20
|
+
* received while in SPEAKING state. This handles cases like mic mute
|
|
21
|
+
* mid-speech. Set to 0 to disable. Defaults to 1.0.
|
|
22
|
+
*/
|
|
23
|
+
audioIdleTimeout?: number;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Manages voice activity detection state and emits speech events.
|
|
27
|
+
*
|
|
28
|
+
* Wraps a `VADAnalyzer` to process audio and trigger events based on speech
|
|
29
|
+
* state transitions. Tracks whether the user is speaking, quiet, or
|
|
30
|
+
* transitioning between states.
|
|
31
|
+
*
|
|
32
|
+
* Event handlers available:
|
|
33
|
+
*
|
|
34
|
+
* - on_speech_started: Called when speech begins.
|
|
35
|
+
* - on_speech_stopped: Called when speech ends, including forced stop when
|
|
36
|
+
* the audio stream goes idle (no frames received while speaking).
|
|
37
|
+
* - on_speech_activity: Called periodically while speech is detected.
|
|
38
|
+
* - on_push_frame: Called when the controller wants to push a frame.
|
|
39
|
+
* - on_broadcast_frame: Called when the controller wants to broadcast a frame.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* vadController.eventHandler("on_speech_started", async (controller) => { ... });
|
|
43
|
+
* vadController.eventHandler("on_speech_stopped", async (controller) => { ... });
|
|
44
|
+
* vadController.eventHandler("on_speech_activity", async (controller) => { ... });
|
|
45
|
+
* vadController.eventHandler("on_push_frame", async (controller, frame, direction) => { ... });
|
|
46
|
+
* vadController.eventHandler("on_broadcast_frame", async (controller, frameCls, options) => { ... });
|
|
47
|
+
*/
|
|
48
|
+
export declare class VADController extends BaseObject {
|
|
49
|
+
protected _vadAnalyzer: VADAnalyzer;
|
|
50
|
+
protected _vadState: VADState;
|
|
51
|
+
protected _speechActivityTime: number;
|
|
52
|
+
protected _speechActivityPeriod: number;
|
|
53
|
+
protected _lastAudioTime: number;
|
|
54
|
+
protected _audioIdleTimeout: number;
|
|
55
|
+
protected _audioIdleTask: Task<unknown> | null;
|
|
56
|
+
/**
|
|
57
|
+
* Initialize the VAD controller.
|
|
58
|
+
*
|
|
59
|
+
* @param vadAnalyzer The `VADAnalyzer` instance for processing audio.
|
|
60
|
+
* @param options Speech activity period and audio idle timeout.
|
|
61
|
+
*/
|
|
62
|
+
constructor(vadAnalyzer: VADAnalyzer, options?: VADControllerOptions);
|
|
63
|
+
/**
|
|
64
|
+
* Set up the controller.
|
|
65
|
+
*
|
|
66
|
+
* @param setup Configuration object containing setup parameters.
|
|
67
|
+
*/
|
|
68
|
+
setup(setup: FrameProcessorSetup): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Process a frame and handle VAD-related events.
|
|
71
|
+
*
|
|
72
|
+
* Handles `InputAudioRawFrame` to analyze audio for voice activity, and
|
|
73
|
+
* `VADParamsUpdateFrame` to reconfigure the analyzer.
|
|
74
|
+
*
|
|
75
|
+
* @param frame The frame to process.
|
|
76
|
+
*/
|
|
77
|
+
processFrame(frame: Frame): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Announce the analyzer's params and start the idle timer.
|
|
80
|
+
*
|
|
81
|
+
* Paired with `stop()`.
|
|
82
|
+
*/
|
|
83
|
+
start(): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Stop the idle timer, leaving the analyzer alone.
|
|
86
|
+
*
|
|
87
|
+
* Called at session end so the timer can't report silence that only means
|
|
88
|
+
* the session is over. The analyzer may be shared, so releasing it waits
|
|
89
|
+
* for `cleanup()`.
|
|
90
|
+
*/
|
|
91
|
+
stop(): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Clean up resources.
|
|
94
|
+
*
|
|
95
|
+
* This method should be called when the object is no longer needed. It
|
|
96
|
+
* waits for all currently executing event handler tasks to finish before
|
|
97
|
+
* returning.
|
|
98
|
+
*/
|
|
99
|
+
cleanup(): Promise<void>;
|
|
100
|
+
/**
|
|
101
|
+
* Process an audio chunk and emit speech events as needed.
|
|
102
|
+
*
|
|
103
|
+
* Analyzes the audio for voice activity and triggers `on_speech_started`,
|
|
104
|
+
* `on_speech_stopped`, or `on_speech_activity` events based on state
|
|
105
|
+
* changes.
|
|
106
|
+
*
|
|
107
|
+
* @param frame Audio frame to process.
|
|
108
|
+
*/
|
|
109
|
+
protected _handleAudio(frame: InputAudioRawFrame): Promise<void>;
|
|
110
|
+
/** Handle Voice Activity Detection results and trigger appropriate events. */
|
|
111
|
+
protected _handleVad(audio: Uint8Array, vadState: VADState): Promise<VADState>;
|
|
112
|
+
/**
|
|
113
|
+
* Monitor for an idle audio stream while in SPEAKING state.
|
|
114
|
+
*
|
|
115
|
+
* When no audio frames arrive for `audioIdleTimeout` seconds (e.g. user
|
|
116
|
+
* mutes mic mid-speech), forces a transition to QUIET and emits
|
|
117
|
+
* `on_speech_stopped`.
|
|
118
|
+
*/
|
|
119
|
+
protected _audioIdleHandler(): Promise<void>;
|
|
120
|
+
/** Handle user speaking frame. */
|
|
121
|
+
protected _maybeSpeechActivity(): Promise<void>;
|
|
122
|
+
/**
|
|
123
|
+
* Request a frame to be pushed through the pipeline.
|
|
124
|
+
*
|
|
125
|
+
* This emits an on_push_frame event that must be handled by a processor to
|
|
126
|
+
* actually push the frame into the pipeline.
|
|
127
|
+
*
|
|
128
|
+
* @param frame The frame to push.
|
|
129
|
+
* @param direction The direction to push the frame.
|
|
130
|
+
*/
|
|
131
|
+
pushFrame(frame: Frame, direction?: FrameDirection): Promise<void>;
|
|
132
|
+
/**
|
|
133
|
+
* Request a frame to be broadcast upstream and downstream.
|
|
134
|
+
*
|
|
135
|
+
* This emits an on_broadcast_frame event that must be handled by a
|
|
136
|
+
* processor to actually broadcast the frame in the pipeline.
|
|
137
|
+
*
|
|
138
|
+
* @param frameCls The class of the frame to broadcast.
|
|
139
|
+
* @param options Arguments to pass to the frame constructor.
|
|
140
|
+
*/
|
|
141
|
+
broadcastFrame<O>(frameCls: new (options: O) => Frame, options?: O): Promise<void>;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=vad_controller.d.ts.map
|