@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,95 @@
|
|
|
1
|
+
/** Version triple reported by the Krisp SDK. */
|
|
2
|
+
export interface KrispSdkVersion {
|
|
3
|
+
major: number;
|
|
4
|
+
minor: number;
|
|
5
|
+
patch: number;
|
|
6
|
+
}
|
|
7
|
+
/** The subset of the `krisp_audio` SDK surface this module uses. */
|
|
8
|
+
export interface KrispAudioSdk {
|
|
9
|
+
SamplingRate: Record<string, unknown>;
|
|
10
|
+
FrameDuration: Record<string, unknown>;
|
|
11
|
+
LogLevel: {
|
|
12
|
+
Off: unknown;
|
|
13
|
+
} & Record<string, unknown>;
|
|
14
|
+
getVersion(): KrispSdkVersion;
|
|
15
|
+
globalInit(...args: unknown[]): void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Install the Krisp SDK binding used by this module.
|
|
19
|
+
*
|
|
20
|
+
* STUB SUPPORT: there is no bundled binding; until one is installed every
|
|
21
|
+
* SDK call throws.
|
|
22
|
+
*/
|
|
23
|
+
export declare function setKrispAudioSdk(sdk: KrispAudioSdk): void;
|
|
24
|
+
export declare const KRISP_SAMPLE_RATES: ReadonlyMap<number, unknown>;
|
|
25
|
+
export declare const KRISP_FRAME_DURATIONS: ReadonlyMap<number, unknown>;
|
|
26
|
+
/**
|
|
27
|
+
* Convert integer sample rate to Krisp SDK enum value.
|
|
28
|
+
*
|
|
29
|
+
* @param sampleRate Sample rate in Hz (e.g., 16000, 24000, 48000).
|
|
30
|
+
* @returns Corresponding Krisp SDK SampleRate enum value.
|
|
31
|
+
* @throws Error if the sample rate is not supported by Krisp SDK.
|
|
32
|
+
*/
|
|
33
|
+
export declare function intToKrispSampleRate(sampleRate: number): unknown;
|
|
34
|
+
/**
|
|
35
|
+
* Convert integer frame duration to Krisp SDK enum value.
|
|
36
|
+
*
|
|
37
|
+
* @param frameDurationMs Frame duration in milliseconds (e.g., 10, 20, 30).
|
|
38
|
+
* @returns Corresponding Krisp SDK FrameDuration enum value.
|
|
39
|
+
* @throws Error if the frame duration is not supported by Krisp SDK.
|
|
40
|
+
*/
|
|
41
|
+
export declare function intToKrispFrameDuration(frameDurationMs: number): unknown;
|
|
42
|
+
/** Whether the installed krisp_audio build uses nanobind bindings (>= 1.11.0). */
|
|
43
|
+
export declare function krispSdkUsesNanobindBindings(): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* Singleton manager for Krisp VIVA SDK with reference counting.
|
|
46
|
+
*
|
|
47
|
+
* The SDK's global state is shared by every Krisp session in the process, so
|
|
48
|
+
* it is initialized once, on first use, and left up for the life of the
|
|
49
|
+
* process: destroying it while any session is still alive leaves that session
|
|
50
|
+
* reading freed memory, and there is no point in the process where every
|
|
51
|
+
* session is known to be gone. The reference count tracks how many components
|
|
52
|
+
* hold the SDK; it does not decide when to tear it down.
|
|
53
|
+
*
|
|
54
|
+
* (Upstream guards the state with a threading lock; JavaScript runs these
|
|
55
|
+
* synchronous methods atomically, so no lock is needed.)
|
|
56
|
+
*/
|
|
57
|
+
export declare class KrispVivaSDKManager {
|
|
58
|
+
protected static _initialized: boolean;
|
|
59
|
+
protected static _referenceCount: number;
|
|
60
|
+
/** Callback for Krisp SDK licensing errors. */
|
|
61
|
+
protected static _licenseCallback(error: unknown, errorMessage: unknown): void;
|
|
62
|
+
/** Callback for Krisp SDK logging. */
|
|
63
|
+
protected static _logCallback(logMessage: unknown, logLevel: unknown): void;
|
|
64
|
+
/**
|
|
65
|
+
* Acquire a reference to the SDK (initializes if needed).
|
|
66
|
+
*
|
|
67
|
+
* Call this before creating Krisp sessions.
|
|
68
|
+
*
|
|
69
|
+
* @param apiKey Krisp SDK API key. If empty, falls back to the
|
|
70
|
+
* KRISP_VIVA_API_KEY environment variable. Only the key of the caller that
|
|
71
|
+
* initializes the SDK is used.
|
|
72
|
+
* @throws If SDK initialization fails (propagated from krisp_audio).
|
|
73
|
+
*/
|
|
74
|
+
static acquire(apiKey?: string): void;
|
|
75
|
+
/**
|
|
76
|
+
* Release a reference to the SDK.
|
|
77
|
+
*
|
|
78
|
+
* Call this once the caller's Krisp sessions are gone. Releasing the last
|
|
79
|
+
* reference does not tear the SDK down; see the class docs.
|
|
80
|
+
*/
|
|
81
|
+
static release(): void;
|
|
82
|
+
/**
|
|
83
|
+
* Get the current reference count.
|
|
84
|
+
*
|
|
85
|
+
* @returns Current number of active references to the SDK.
|
|
86
|
+
*/
|
|
87
|
+
static getReferenceCount(): number;
|
|
88
|
+
/**
|
|
89
|
+
* Check if the SDK is currently initialized.
|
|
90
|
+
*
|
|
91
|
+
* @returns True if SDK is initialized, false otherwise.
|
|
92
|
+
*/
|
|
93
|
+
static isInitialized(): boolean;
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=krisp_instance.d.ts.map
|
|
@@ -0,0 +1,229 @@
|
|
|
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/krisp_instance.py
|
|
6
|
+
/**
|
|
7
|
+
* Krisp Instance manager for pipecat audio.
|
|
8
|
+
*
|
|
9
|
+
* PORTING NOTE: the Krisp VIVA SDK (`krisp_audio`) has no edge-compatible
|
|
10
|
+
* JavaScript binding. The module's logic is ported against the
|
|
11
|
+
* `KrispAudioSdk` interface below, but the default SDK is a stub whose calls
|
|
12
|
+
* throw "not ported yet". A runtime-specific package can provide the real
|
|
13
|
+
* binding with `setKrispAudioSdk()`.
|
|
14
|
+
*/
|
|
15
|
+
import { logger } from "../utils/logger.js";
|
|
16
|
+
function notPorted() {
|
|
17
|
+
throw new Error("krisp_audio is not ported yet");
|
|
18
|
+
}
|
|
19
|
+
// Placeholder SDK: the enum members are their own names, every call throws.
|
|
20
|
+
const STUB_KRISP_AUDIO = {
|
|
21
|
+
SamplingRate: {
|
|
22
|
+
Sr8000Hz: "Sr8000Hz",
|
|
23
|
+
Sr16000Hz: "Sr16000Hz",
|
|
24
|
+
Sr24000Hz: "Sr24000Hz",
|
|
25
|
+
Sr32000Hz: "Sr32000Hz",
|
|
26
|
+
Sr44100Hz: "Sr44100Hz",
|
|
27
|
+
Sr48000Hz: "Sr48000Hz",
|
|
28
|
+
},
|
|
29
|
+
FrameDuration: {
|
|
30
|
+
Fd10ms: "Fd10ms",
|
|
31
|
+
Fd15ms: "Fd15ms",
|
|
32
|
+
Fd20ms: "Fd20ms",
|
|
33
|
+
Fd30ms: "Fd30ms",
|
|
34
|
+
Fd32ms: "Fd32ms",
|
|
35
|
+
},
|
|
36
|
+
LogLevel: { Off: "Off" },
|
|
37
|
+
getVersion: notPorted,
|
|
38
|
+
globalInit: notPorted,
|
|
39
|
+
};
|
|
40
|
+
let krispAudio = STUB_KRISP_AUDIO;
|
|
41
|
+
// Krisp SDK SamplingRate enum member for each sample rate (Hz)
|
|
42
|
+
const SAMPLE_RATE_MEMBERS = [
|
|
43
|
+
[8000, "Sr8000Hz"],
|
|
44
|
+
[16000, "Sr16000Hz"],
|
|
45
|
+
[24000, "Sr24000Hz"],
|
|
46
|
+
[32000, "Sr32000Hz"],
|
|
47
|
+
[44100, "Sr44100Hz"],
|
|
48
|
+
[48000, "Sr48000Hz"],
|
|
49
|
+
];
|
|
50
|
+
// Krisp SDK FrameDuration enum member for each frame duration (ms)
|
|
51
|
+
const FRAME_DURATION_MEMBERS = [
|
|
52
|
+
[10, "Fd10ms"],
|
|
53
|
+
[15, "Fd15ms"],
|
|
54
|
+
[20, "Fd20ms"],
|
|
55
|
+
[30, "Fd30ms"],
|
|
56
|
+
[32, "Fd32ms"],
|
|
57
|
+
];
|
|
58
|
+
const sampleRates = new Map();
|
|
59
|
+
const frameDurations = new Map();
|
|
60
|
+
// Upstream builds these maps from the krisp_audio enums at import time; here
|
|
61
|
+
// they are rebuilt whenever an SDK binding is installed.
|
|
62
|
+
function buildKrispMaps() {
|
|
63
|
+
sampleRates.clear();
|
|
64
|
+
for (const [rate, member] of SAMPLE_RATE_MEMBERS) {
|
|
65
|
+
sampleRates.set(rate, krispAudio.SamplingRate[member]);
|
|
66
|
+
}
|
|
67
|
+
frameDurations.clear();
|
|
68
|
+
for (const [duration, member] of FRAME_DURATION_MEMBERS) {
|
|
69
|
+
frameDurations.set(duration, krispAudio.FrameDuration[member]);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
buildKrispMaps();
|
|
73
|
+
/**
|
|
74
|
+
* Install the Krisp SDK binding used by this module.
|
|
75
|
+
*
|
|
76
|
+
* STUB SUPPORT: there is no bundled binding; until one is installed every
|
|
77
|
+
* SDK call throws.
|
|
78
|
+
*/
|
|
79
|
+
export function setKrispAudioSdk(sdk) {
|
|
80
|
+
krispAudio = sdk;
|
|
81
|
+
buildKrispMaps();
|
|
82
|
+
}
|
|
83
|
+
// Mapping of sample rates (Hz) to Krisp SDK SamplingRate enums
|
|
84
|
+
export const KRISP_SAMPLE_RATES = sampleRates;
|
|
85
|
+
// Mapping of frame durations (ms) to Krisp SDK FrameDuration enums
|
|
86
|
+
export const KRISP_FRAME_DURATIONS = frameDurations;
|
|
87
|
+
/**
|
|
88
|
+
* Convert integer sample rate to Krisp SDK enum value.
|
|
89
|
+
*
|
|
90
|
+
* @param sampleRate Sample rate in Hz (e.g., 16000, 24000, 48000).
|
|
91
|
+
* @returns Corresponding Krisp SDK SampleRate enum value.
|
|
92
|
+
* @throws Error if the sample rate is not supported by Krisp SDK.
|
|
93
|
+
*/
|
|
94
|
+
export function intToKrispSampleRate(sampleRate) {
|
|
95
|
+
if (!KRISP_SAMPLE_RATES.has(sampleRate)) {
|
|
96
|
+
const supportedRates = [...KRISP_SAMPLE_RATES.keys()].sort((a, b) => a - b).join(", ");
|
|
97
|
+
throw new Error(`Unsupported sample rate: ${sampleRate} Hz. Supported rates: ${supportedRates} Hz`);
|
|
98
|
+
}
|
|
99
|
+
return KRISP_SAMPLE_RATES.get(sampleRate);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Convert integer frame duration to Krisp SDK enum value.
|
|
103
|
+
*
|
|
104
|
+
* @param frameDurationMs Frame duration in milliseconds (e.g., 10, 20, 30).
|
|
105
|
+
* @returns Corresponding Krisp SDK FrameDuration enum value.
|
|
106
|
+
* @throws Error if the frame duration is not supported by Krisp SDK.
|
|
107
|
+
*/
|
|
108
|
+
export function intToKrispFrameDuration(frameDurationMs) {
|
|
109
|
+
if (!KRISP_FRAME_DURATIONS.has(frameDurationMs)) {
|
|
110
|
+
const supportedDurations = [...KRISP_FRAME_DURATIONS.keys()].sort((a, b) => a - b).join(", ");
|
|
111
|
+
throw new Error(`Unsupported frame duration: ${frameDurationMs} ms. ` +
|
|
112
|
+
`Supported durations: ${supportedDurations} ms`);
|
|
113
|
+
}
|
|
114
|
+
return KRISP_FRAME_DURATIONS.get(frameDurationMs);
|
|
115
|
+
}
|
|
116
|
+
// Krisp SDK switched its Python bindings from pybind11 to nanobind starting in
|
|
117
|
+
// 1.11.0. Among other things, this changed the noise suppression level
|
|
118
|
+
// argument from int to float and requires writable (not just readable) ndarray
|
|
119
|
+
// input.
|
|
120
|
+
const NANOBIND_SDK_VERSION = [1, 11, 0];
|
|
121
|
+
/** Whether the installed krisp_audio build uses nanobind bindings (>= 1.11.0). */
|
|
122
|
+
export function krispSdkUsesNanobindBindings() {
|
|
123
|
+
const version = krispAudio.getVersion();
|
|
124
|
+
const v = [version.major, version.minor, version.patch];
|
|
125
|
+
for (let i = 0; i < 3; i++) {
|
|
126
|
+
if (v[i] !== NANOBIND_SDK_VERSION[i]) {
|
|
127
|
+
return v[i] > NANOBIND_SDK_VERSION[i];
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return true;
|
|
131
|
+
}
|
|
132
|
+
function getEnv(name) {
|
|
133
|
+
return globalThis.process?.env?.[name];
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Singleton manager for Krisp VIVA SDK with reference counting.
|
|
137
|
+
*
|
|
138
|
+
* The SDK's global state is shared by every Krisp session in the process, so
|
|
139
|
+
* it is initialized once, on first use, and left up for the life of the
|
|
140
|
+
* process: destroying it while any session is still alive leaves that session
|
|
141
|
+
* reading freed memory, and there is no point in the process where every
|
|
142
|
+
* session is known to be gone. The reference count tracks how many components
|
|
143
|
+
* hold the SDK; it does not decide when to tear it down.
|
|
144
|
+
*
|
|
145
|
+
* (Upstream guards the state with a threading lock; JavaScript runs these
|
|
146
|
+
* synchronous methods atomically, so no lock is needed.)
|
|
147
|
+
*/
|
|
148
|
+
export class KrispVivaSDKManager {
|
|
149
|
+
static _initialized = false;
|
|
150
|
+
static _referenceCount = 0;
|
|
151
|
+
/** Callback for Krisp SDK licensing errors. */
|
|
152
|
+
static _licenseCallback(error, errorMessage) {
|
|
153
|
+
logger.error(`Krisp licensing error: ${error} - ${errorMessage}`);
|
|
154
|
+
}
|
|
155
|
+
/** Callback for Krisp SDK logging. */
|
|
156
|
+
static _logCallback(logMessage, logLevel) {
|
|
157
|
+
logger.info(`[${logLevel}] ${logMessage}`);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Acquire a reference to the SDK (initializes if needed).
|
|
161
|
+
*
|
|
162
|
+
* Call this before creating Krisp sessions.
|
|
163
|
+
*
|
|
164
|
+
* @param apiKey Krisp SDK API key. If empty, falls back to the
|
|
165
|
+
* KRISP_VIVA_API_KEY environment variable. Only the key of the caller that
|
|
166
|
+
* initializes the SDK is used.
|
|
167
|
+
* @throws If SDK initialization fails (propagated from krisp_audio).
|
|
168
|
+
*/
|
|
169
|
+
static acquire(apiKey = "") {
|
|
170
|
+
// Initialize the SDK once per process.
|
|
171
|
+
if (!KrispVivaSDKManager._initialized) {
|
|
172
|
+
try {
|
|
173
|
+
const key = apiKey || getEnv("KRISP_VIVA_API_KEY") || "";
|
|
174
|
+
try {
|
|
175
|
+
// New SDK signature (requires license key)
|
|
176
|
+
krispAudio.globalInit("", key, KrispVivaSDKManager._licenseCallback, KrispVivaSDKManager._logCallback, krispAudio.LogLevel.Off);
|
|
177
|
+
}
|
|
178
|
+
catch (e) {
|
|
179
|
+
if (!(e instanceof TypeError))
|
|
180
|
+
throw e;
|
|
181
|
+
// Old SDK signature (no license key)
|
|
182
|
+
krispAudio.globalInit("", KrispVivaSDKManager._logCallback, krispAudio.LogLevel.Off);
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
catch (e) {
|
|
186
|
+
logger.error(`Krisp SDK initialization failed: ${e}`);
|
|
187
|
+
throw e;
|
|
188
|
+
}
|
|
189
|
+
// Set before anything else that could fail: a flag that claims the SDK
|
|
190
|
+
// is down while it is up would let a second globalInit() re-seat global
|
|
191
|
+
// state that live sessions still point at.
|
|
192
|
+
KrispVivaSDKManager._initialized = true;
|
|
193
|
+
const SDK_VERSION = krispAudio.getVersion();
|
|
194
|
+
logger.debug(`Krisp Audio Python SDK initialized - Version: ` +
|
|
195
|
+
`${SDK_VERSION.major}.${SDK_VERSION.minor}.${SDK_VERSION.patch}`);
|
|
196
|
+
}
|
|
197
|
+
KrispVivaSDKManager._referenceCount += 1;
|
|
198
|
+
logger.debug(`Krisp SDK reference count: ${KrispVivaSDKManager._referenceCount}`);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Release a reference to the SDK.
|
|
202
|
+
*
|
|
203
|
+
* Call this once the caller's Krisp sessions are gone. Releasing the last
|
|
204
|
+
* reference does not tear the SDK down; see the class docs.
|
|
205
|
+
*/
|
|
206
|
+
static release() {
|
|
207
|
+
if (KrispVivaSDKManager._referenceCount > 0) {
|
|
208
|
+
KrispVivaSDKManager._referenceCount -= 1;
|
|
209
|
+
logger.debug(`Krisp SDK reference count: ${KrispVivaSDKManager._referenceCount}`);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Get the current reference count.
|
|
214
|
+
*
|
|
215
|
+
* @returns Current number of active references to the SDK.
|
|
216
|
+
*/
|
|
217
|
+
static getReferenceCount() {
|
|
218
|
+
return KrispVivaSDKManager._referenceCount;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Check if the SDK is currently initialized.
|
|
222
|
+
*
|
|
223
|
+
* @returns True if SDK is initialized, false otherwise.
|
|
224
|
+
*/
|
|
225
|
+
static isInitialized() {
|
|
226
|
+
return KrispVivaSDKManager._initialized;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
//# sourceMappingURL=krisp_instance.js.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base audio mixer for output transport integration.
|
|
3
|
+
*
|
|
4
|
+
* Provides the abstract base class for audio mixers that can be integrated
|
|
5
|
+
* with output transports to mix incoming audio with generated audio from the
|
|
6
|
+
* mixer.
|
|
7
|
+
*/
|
|
8
|
+
import type { MixerControlFrame } from "../../frames/frames.ts";
|
|
9
|
+
/**
|
|
10
|
+
* Base class for output transport audio mixers.
|
|
11
|
+
*
|
|
12
|
+
* If an audio mixer is provided to the output transport it will be used to
|
|
13
|
+
* mix the audio frames coming into to the transport with the audio generated
|
|
14
|
+
* from the mixer. There are control frames to update mixer settings or to
|
|
15
|
+
* enable or disable the mixer at runtime.
|
|
16
|
+
*/
|
|
17
|
+
export declare abstract class BaseAudioMixer {
|
|
18
|
+
/**
|
|
19
|
+
* Initialize the mixer when the output transport starts.
|
|
20
|
+
*
|
|
21
|
+
* This will be called from the output transport when the transport is
|
|
22
|
+
* started. It can be used to initialize the mixer. The output transport
|
|
23
|
+
* sample rate is provided so the mixer can adjust to that sample rate.
|
|
24
|
+
*
|
|
25
|
+
* @param sampleRate The sample rate of the output transport in Hz.
|
|
26
|
+
*/
|
|
27
|
+
abstract start(sampleRate: number): Promise<void>;
|
|
28
|
+
/**
|
|
29
|
+
* Clean up the mixer when the output transport stops.
|
|
30
|
+
*
|
|
31
|
+
* This will be called from the output transport when the transport is
|
|
32
|
+
* stopping.
|
|
33
|
+
*/
|
|
34
|
+
abstract stop(): Promise<void>;
|
|
35
|
+
/**
|
|
36
|
+
* Process mixer control frames from the transport.
|
|
37
|
+
*
|
|
38
|
+
* This will be called when the output transport receives a
|
|
39
|
+
* MixerControlFrame.
|
|
40
|
+
*
|
|
41
|
+
* @param frame The mixer control frame to process.
|
|
42
|
+
*/
|
|
43
|
+
abstract processFrame(frame: MixerControlFrame): Promise<void>;
|
|
44
|
+
/**
|
|
45
|
+
* Mix transport audio with mixer-generated audio.
|
|
46
|
+
*
|
|
47
|
+
* This is called with the audio that is about to be sent from the output
|
|
48
|
+
* transport and that should be mixed with the mixer audio if the mixer is
|
|
49
|
+
* enabled.
|
|
50
|
+
*
|
|
51
|
+
* @param audio Raw audio bytes from the transport to mix.
|
|
52
|
+
* @returns Mixed audio bytes combining transport and mixer audio.
|
|
53
|
+
*/
|
|
54
|
+
abstract mix(audio: Uint8Array): Promise<Uint8Array>;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=base_audio_mixer.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
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/mixers/base_audio_mixer.py
|
|
6
|
+
/**
|
|
7
|
+
* Base class for output transport audio mixers.
|
|
8
|
+
*
|
|
9
|
+
* If an audio mixer is provided to the output transport it will be used to
|
|
10
|
+
* mix the audio frames coming into to the transport with the audio generated
|
|
11
|
+
* from the mixer. There are control frames to update mixer settings or to
|
|
12
|
+
* enable or disable the mixer at runtime.
|
|
13
|
+
*/
|
|
14
|
+
export class BaseAudioMixer {
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=base_audio_mixer.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
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/mixers/__init__.py
|
|
6
|
+
// Upstream's `__init__.py` is empty: import the package's modules directly.
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Base audio resampler interface for Pipecat.
|
|
3
|
+
*
|
|
4
|
+
* Defines the abstract base class for audio resampling implementations,
|
|
5
|
+
* providing a common interface for converting audio between different sample
|
|
6
|
+
* rates.
|
|
7
|
+
*/
|
|
8
|
+
/** SOXR resampling quality presets, from fastest (QQ) to highest quality (VHQ). */
|
|
9
|
+
export type SoxrQuality = "QQ" | "LQ" | "MQ" | "HQ" | "VHQ";
|
|
10
|
+
/**
|
|
11
|
+
* Abstract base class for audio resampling implementations.
|
|
12
|
+
*
|
|
13
|
+
* Defines the interface that all audio resampling implementations must
|
|
14
|
+
* follow, providing a standardized way to convert audio data between
|
|
15
|
+
* different sample rates.
|
|
16
|
+
*/
|
|
17
|
+
export declare abstract class BaseAudioResampler {
|
|
18
|
+
/**
|
|
19
|
+
* Resamples the given audio data to a different sample rate.
|
|
20
|
+
*
|
|
21
|
+
* @param audio The audio data to be resampled, as raw bytes.
|
|
22
|
+
* @param inRate The original sample rate of the audio data in Hz.
|
|
23
|
+
* @param outRate The desired sample rate for the output audio in Hz.
|
|
24
|
+
* @returns The resampled audio data as raw bytes.
|
|
25
|
+
*/
|
|
26
|
+
abstract resample(audio: Uint8Array, inRate: number, outRate: number): Promise<Uint8Array>;
|
|
27
|
+
/**
|
|
28
|
+
* Emit any audio still held internally and reset the resampler.
|
|
29
|
+
*
|
|
30
|
+
* Streaming resamplers keep recently seen input in their filter, so the
|
|
31
|
+
* tail of a stream is only emitted once more audio arrives. Call this at
|
|
32
|
+
* the end of a continuous stream to collect that tail and start clean.
|
|
33
|
+
*
|
|
34
|
+
* @returns The remaining resampled audio as raw bytes, empty if the
|
|
35
|
+
* resampler holds nothing.
|
|
36
|
+
*/
|
|
37
|
+
flush(): Promise<Uint8Array>;
|
|
38
|
+
/**
|
|
39
|
+
* Discard any audio still held internally and reset the resampler.
|
|
40
|
+
*
|
|
41
|
+
* Use this when a stream is abandoned rather than finished (e.g. after an
|
|
42
|
+
* interruption), so its leftover tail doesn't leak into the next stream.
|
|
43
|
+
*/
|
|
44
|
+
reset(): Promise<void>;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=base_audio_resampler.d.ts.map
|
|
@@ -0,0 +1,35 @@
|
|
|
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/resamplers/base_audio_resampler.py
|
|
6
|
+
/**
|
|
7
|
+
* Abstract base class for audio resampling implementations.
|
|
8
|
+
*
|
|
9
|
+
* Defines the interface that all audio resampling implementations must
|
|
10
|
+
* follow, providing a standardized way to convert audio data between
|
|
11
|
+
* different sample rates.
|
|
12
|
+
*/
|
|
13
|
+
export class BaseAudioResampler {
|
|
14
|
+
/**
|
|
15
|
+
* Emit any audio still held internally and reset the resampler.
|
|
16
|
+
*
|
|
17
|
+
* Streaming resamplers keep recently seen input in their filter, so the
|
|
18
|
+
* tail of a stream is only emitted once more audio arrives. Call this at
|
|
19
|
+
* the end of a continuous stream to collect that tail and start clean.
|
|
20
|
+
*
|
|
21
|
+
* @returns The remaining resampled audio as raw bytes, empty if the
|
|
22
|
+
* resampler holds nothing.
|
|
23
|
+
*/
|
|
24
|
+
async flush() {
|
|
25
|
+
return new Uint8Array(0);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Discard any audio still held internally and reset the resampler.
|
|
29
|
+
*
|
|
30
|
+
* Use this when a stream is abandoned rather than finished (e.g. after an
|
|
31
|
+
* interruption), so its leftover tail doesn't leak into the next stream.
|
|
32
|
+
*/
|
|
33
|
+
async reset() { }
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=base_audio_resampler.js.map
|
|
@@ -0,0 +1,8 @@
|
|
|
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/resamplers/__init__.py
|
|
6
|
+
// Upstream's `__init__.py` is empty: import the package's modules directly.
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resampy-based audio resampler implementation.
|
|
3
|
+
*
|
|
4
|
+
* PORTING NOTE: upstream's only export, `ResampyResampler`, is deprecated
|
|
5
|
+
* (since 1.2.0, removed in 2.0.0) and is not ported. Use
|
|
6
|
+
* `SOXRAudioResampler`, `createFileResampler()` or `createStreamResampler()`
|
|
7
|
+
* instead.
|
|
8
|
+
*/
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=resampy_resampler.d.ts.map
|
|
@@ -0,0 +1,15 @@
|
|
|
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/resamplers/resampy_resampler.py
|
|
6
|
+
/**
|
|
7
|
+
* Resampy-based audio resampler implementation.
|
|
8
|
+
*
|
|
9
|
+
* PORTING NOTE: upstream's only export, `ResampyResampler`, is deprecated
|
|
10
|
+
* (since 1.2.0, removed in 2.0.0) and is not ported. Use
|
|
11
|
+
* `SOXRAudioResampler`, `createFileResampler()` or `createStreamResampler()`
|
|
12
|
+
* instead.
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=resampy_resampler.js.map
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SoX-based audio resampler implementation.
|
|
3
|
+
*
|
|
4
|
+
* Provides an audio resampler that uses the SoX resampler library for very
|
|
5
|
+
* high-quality audio sample rate conversion.
|
|
6
|
+
*
|
|
7
|
+
* When to use the SOXRAudioResampler:
|
|
8
|
+
* 1. For batch processing of complete audio files
|
|
9
|
+
* 2. When you have all the audio data available at once
|
|
10
|
+
*
|
|
11
|
+
* PORTING NOTE: libsoxr has no edge-compatible JavaScript equivalent yet. The
|
|
12
|
+
* class logic is ported, but the actual resampling (`soxrResample`) is a stub
|
|
13
|
+
* that throws "not ported yet". A WASM build of libsoxr, injected at runtime,
|
|
14
|
+
* is the intended replacement.
|
|
15
|
+
*/
|
|
16
|
+
import { BaseAudioResampler, type SoxrQuality } from "./base_audio_resampler.ts";
|
|
17
|
+
/**
|
|
18
|
+
* Stand-in for `soxr.resample()`: resample a whole mono signal.
|
|
19
|
+
*
|
|
20
|
+
* STUB: libsoxr is not available in JavaScript yet; always throws.
|
|
21
|
+
*
|
|
22
|
+
* @internal
|
|
23
|
+
*/
|
|
24
|
+
export declare function soxrResample<T extends Int16Array | Float32Array>(_audio: T, _inRate: number, _outRate: number, _quality: SoxrQuality): T;
|
|
25
|
+
export interface SOXRAudioResamplerOptions {
|
|
26
|
+
/**
|
|
27
|
+
* SOXR quality preset. Higher quality means higher CPU cost. One of "VHQ"
|
|
28
|
+
* (default, very high quality), "HQ", "MQ", "LQ", or "QQ" (quick, lowest
|
|
29
|
+
* latency).
|
|
30
|
+
*/
|
|
31
|
+
quality?: SoxrQuality;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Audio resampler implementation using the SoX resampler library.
|
|
35
|
+
*
|
|
36
|
+
* Configured for very high quality (VHQ) resampling by default, providing
|
|
37
|
+
* excellent audio quality at the cost of additional computational overhead.
|
|
38
|
+
*/
|
|
39
|
+
export declare class SOXRAudioResampler extends BaseAudioResampler {
|
|
40
|
+
protected _quality: SoxrQuality;
|
|
41
|
+
constructor(options?: SOXRAudioResamplerOptions);
|
|
42
|
+
/**
|
|
43
|
+
* Resample audio data using SoX resampler library.
|
|
44
|
+
*
|
|
45
|
+
* @param audio Input audio data as raw bytes (16-bit signed integers).
|
|
46
|
+
* @param inRate Original sample rate in Hz.
|
|
47
|
+
* @param outRate Target sample rate in Hz.
|
|
48
|
+
* @returns Resampled audio data as raw bytes (16-bit signed integers).
|
|
49
|
+
*/
|
|
50
|
+
resample(audio: Uint8Array, inRate: number, outRate: number): Promise<Uint8Array>;
|
|
51
|
+
}
|
|
52
|
+
/** View (or copy, if unaligned) 16-bit PCM bytes as samples. @internal */
|
|
53
|
+
export declare function bytesToInt16(audio: Uint8Array): Int16Array;
|
|
54
|
+
//# sourceMappingURL=soxr_resampler.d.ts.map
|
|
@@ -0,0 +1,69 @@
|
|
|
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/resamplers/soxr_resampler.py
|
|
6
|
+
/**
|
|
7
|
+
* SoX-based audio resampler implementation.
|
|
8
|
+
*
|
|
9
|
+
* Provides an audio resampler that uses the SoX resampler library for very
|
|
10
|
+
* high-quality audio sample rate conversion.
|
|
11
|
+
*
|
|
12
|
+
* When to use the SOXRAudioResampler:
|
|
13
|
+
* 1. For batch processing of complete audio files
|
|
14
|
+
* 2. When you have all the audio data available at once
|
|
15
|
+
*
|
|
16
|
+
* PORTING NOTE: libsoxr has no edge-compatible JavaScript equivalent yet. The
|
|
17
|
+
* class logic is ported, but the actual resampling (`soxrResample`) is a stub
|
|
18
|
+
* that throws "not ported yet". A WASM build of libsoxr, injected at runtime,
|
|
19
|
+
* is the intended replacement.
|
|
20
|
+
*/
|
|
21
|
+
import { BaseAudioResampler } from "./base_audio_resampler.js";
|
|
22
|
+
/**
|
|
23
|
+
* Stand-in for `soxr.resample()`: resample a whole mono signal.
|
|
24
|
+
*
|
|
25
|
+
* STUB: libsoxr is not available in JavaScript yet; always throws.
|
|
26
|
+
*
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
export function soxrResample(_audio, _inRate, _outRate, _quality) {
|
|
30
|
+
throw new Error("soxr resampling is not ported yet");
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Audio resampler implementation using the SoX resampler library.
|
|
34
|
+
*
|
|
35
|
+
* Configured for very high quality (VHQ) resampling by default, providing
|
|
36
|
+
* excellent audio quality at the cost of additional computational overhead.
|
|
37
|
+
*/
|
|
38
|
+
export class SOXRAudioResampler extends BaseAudioResampler {
|
|
39
|
+
_quality;
|
|
40
|
+
constructor(options = {}) {
|
|
41
|
+
super();
|
|
42
|
+
this._quality = options.quality ?? "VHQ";
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Resample audio data using SoX resampler library.
|
|
46
|
+
*
|
|
47
|
+
* @param audio Input audio data as raw bytes (16-bit signed integers).
|
|
48
|
+
* @param inRate Original sample rate in Hz.
|
|
49
|
+
* @param outRate Target sample rate in Hz.
|
|
50
|
+
* @returns Resampled audio data as raw bytes (16-bit signed integers).
|
|
51
|
+
*/
|
|
52
|
+
async resample(audio, inRate, outRate) {
|
|
53
|
+
if (inRate === outRate) {
|
|
54
|
+
return audio;
|
|
55
|
+
}
|
|
56
|
+
const audioData = bytesToInt16(audio);
|
|
57
|
+
const resampledAudio = soxrResample(audioData, inRate, outRate, this._quality);
|
|
58
|
+
return new Uint8Array(resampledAudio.buffer, resampledAudio.byteOffset, resampledAudio.byteLength);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/** View (or copy, if unaligned) 16-bit PCM bytes as samples. @internal */
|
|
62
|
+
export function bytesToInt16(audio) {
|
|
63
|
+
const length = audio.length >> 1;
|
|
64
|
+
if (audio.byteOffset % 2 !== 0) {
|
|
65
|
+
return new Int16Array(audio.slice(0, length * 2).buffer);
|
|
66
|
+
}
|
|
67
|
+
return new Int16Array(audio.buffer, audio.byteOffset, length);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=soxr_resampler.js.map
|