.gitattributes
.gitignore
LICENSE
MANIFEST.in
README.md
__init__.py
debug_import.py
download_kokoro.sh
pyproject.toml
setup.py
docs/llm/anthropic.md
docs/llm/aws.md
docs/llm/azure.md
docs/llm/cerebras.md
docs/llm/deepseek.md
docs/llm/fireworks.md
docs/llm/google.md
docs/llm/grok.md
docs/llm/groq.md
docs/llm/mistral.md
docs/llm/nim.md
docs/llm/ollama.md
docs/llm/openai.md
docs/llm/openpipe.md
docs/llm/openrouter.md
docs/llm/perplexity.md
docs/llm/qwen.md
docs/llm/sambanova.md
docs/llm/together.md
docs/stt/assemblyai.md
docs/stt/aws.md
docs/stt/azure.md
docs/stt/cartesia.md
docs/stt/deepgram.md
docs/stt/fal.md
docs/stt/gladia.md
docs/stt/google.md
docs/stt/groq.md
docs/stt/openai.md
docs/stt/riva.md
docs/stt/sambanova.md
docs/stt/soniox.md
docs/stt/speechmatics.md
docs/stt/ultravox.md
docs/stt/whisper.md
docs/transport/local.md
docs/transport/telecmi.md
docs/transport/webrtc.md
docs/transport/websocket.md
docs/tts/asyncai.md
docs/tts/aws.md
docs/tts/azure.md
docs/tts/cartesia.md
docs/tts/deepgram.md
docs/tts/elevenlabs.md
docs/tts/fish.md
docs/tts/google.md
docs/tts/groq.md
docs/tts/inworld.md
docs/tts/lmnt.md
docs/tts/minimax.md
docs/tts/neuphonic.md
docs/tts/openai.md
docs/tts/piper.md
docs/tts/playht.md
docs/tts/providers.md
docs/tts/rime.md
docs/tts/riva.md
docs/tts/sarvam.md
docs/tts/xtts.md
example/README.md
example/basic.py
example/mcp_sales.py
example/switch_providers.py
example/chatterbox/README.md
example/chatterbox/chatterbox_ws.py
example/function_calling/crm.py
example/function_calling/pinecone_search_agent.py
example/function_calling/weather.py
example/kokoro/kokoro.py
example/orpheus/orpheus.py
example/ultravox/ultravox.py
script/clean.sh
script/cln.sh
script/clone.sh
src/piopiy/__init__.py
src/piopiy/agent.py
src/piopiy/config.py
src/piopiy/py.typed
src/piopiy/setup_utils.py
src/piopiy/speech_agent.py
src/piopiy/voice_agent.py
src/piopiy/adapters/__init__.py
src/piopiy/adapters/base_llm_adapter.py
src/piopiy/adapters/schemas/__init__.py
src/piopiy/adapters/schemas/direct_function.py
src/piopiy/adapters/schemas/function_schema.py
src/piopiy/adapters/schemas/tools_schema.py
src/piopiy/adapters/services/__init__.py
src/piopiy/adapters/services/anthropic_adapter.py
src/piopiy/adapters/services/aws_nova_sonic_adapter.py
src/piopiy/adapters/services/bedrock_adapter.py
src/piopiy/adapters/services/gemini_adapter.py
src/piopiy/adapters/services/open_ai_adapter.py
src/piopiy/adapters/services/open_ai_realtime_adapter.py
src/piopiy/audio/__init__.py
src/piopiy/audio/utils.py
src/piopiy/audio/dtmf/__init__.py
src/piopiy/audio/dtmf/dtmf-0.wav
src/piopiy/audio/dtmf/dtmf-1.wav
src/piopiy/audio/dtmf/dtmf-2.wav
src/piopiy/audio/dtmf/dtmf-3.wav
src/piopiy/audio/dtmf/dtmf-4.wav
src/piopiy/audio/dtmf/dtmf-5.wav
src/piopiy/audio/dtmf/dtmf-6.wav
src/piopiy/audio/dtmf/dtmf-7.wav
src/piopiy/audio/dtmf/dtmf-8.wav
src/piopiy/audio/dtmf/dtmf-9.wav
src/piopiy/audio/dtmf/dtmf-pound.wav
src/piopiy/audio/dtmf/dtmf-star.wav
src/piopiy/audio/dtmf/types.py
src/piopiy/audio/dtmf/utils.py
src/piopiy/audio/filters/__init__.py
src/piopiy/audio/filters/aic_filter.py
src/piopiy/audio/filters/base_audio_filter.py
src/piopiy/audio/filters/koala_filter.py
src/piopiy/audio/filters/krisp_filter.py
src/piopiy/audio/filters/krisp_viva_filter.py
src/piopiy/audio/filters/noisereduce_filter.py
src/piopiy/audio/interruptions/__init__.py
src/piopiy/audio/interruptions/base_interruption_strategy.py
src/piopiy/audio/interruptions/min_words_interruption_strategy.py
src/piopiy/audio/mixers/__init__.py
src/piopiy/audio/mixers/base_audio_mixer.py
src/piopiy/audio/mixers/soundfile_mixer.py
src/piopiy/audio/resamplers/__init__.py
src/piopiy/audio/resamplers/base_audio_resampler.py
src/piopiy/audio/resamplers/resampy_resampler.py
src/piopiy/audio/resamplers/soxr_resampler.py
src/piopiy/audio/resamplers/soxr_stream_resampler.py
src/piopiy/audio/turn/__init__.py
src/piopiy/audio/turn/base_turn_analyzer.py
src/piopiy/audio/turn/smart_turn/__init__.py
src/piopiy/audio/turn/smart_turn/base_smart_turn.py
src/piopiy/audio/turn/smart_turn/fal_smart_turn.py
src/piopiy/audio/turn/smart_turn/http_smart_turn.py
src/piopiy/audio/turn/smart_turn/local_coreml_smart_turn.py
src/piopiy/audio/turn/smart_turn/local_smart_turn.py
src/piopiy/audio/turn/smart_turn/local_smart_turn_v2.py
src/piopiy/audio/turn/smart_turn/local_smart_turn_v3.py
src/piopiy/audio/turn/smart_turn/data/__init__.py
src/piopiy/audio/vad/__init__.py
src/piopiy/audio/vad/aic_vad.py
src/piopiy/audio/vad/silero.py
src/piopiy/audio/vad/vad_analyzer.py
src/piopiy/audio/vad/data/__init__.py
src/piopiy/clocks/__init__.py
src/piopiy/clocks/base_clock.py
src/piopiy/clocks/system_clock.py
src/piopiy/extensions/__init__.py
src/piopiy/extensions/ivr/__init__.py
src/piopiy/extensions/ivr/ivr_navigator.py
src/piopiy/extensions/voicemail/__init__.py
src/piopiy/extensions/voicemail/voicemail_detector.py
src/piopiy/frames/__init__.py
src/piopiy/frames/frames.proto
src/piopiy/frames/frames.py
src/piopiy/frames/protobufs/frames_pb2.py
src/piopiy/metrics/__init__.py
src/piopiy/metrics/metrics.py
src/piopiy/observers/__init__.py
src/piopiy/observers/base_observer.py
src/piopiy/observers/turn_tracking_observer.py
src/piopiy/observers/loggers/__init__.py
src/piopiy/observers/loggers/debug_log_observer.py
src/piopiy/observers/loggers/llm_log_observer.py
src/piopiy/observers/loggers/metrics_log_observer.py
src/piopiy/observers/loggers/transcription_log_observer.py
src/piopiy/observers/loggers/user_bot_latency_log_observer.py
src/piopiy/pipeline/__init__.py
src/piopiy/pipeline/base_pipeline.py
src/piopiy/pipeline/base_task.py
src/piopiy/pipeline/llm_switcher.py
src/piopiy/pipeline/parallel_pipeline.py
src/piopiy/pipeline/pipeline.py
src/piopiy/pipeline/runner.py
src/piopiy/pipeline/service_switcher.py
src/piopiy/pipeline/sync_parallel_pipeline.py
src/piopiy/pipeline/task.py
src/piopiy/pipeline/task_observer.py
src/piopiy/pipeline/to_be_updated/merge_pipeline.py
src/piopiy/processors/__init__.py
src/piopiy/processors/async_generator.py
src/piopiy/processors/consumer_processor.py
src/piopiy/processors/frame_processor.py
src/piopiy/processors/idle_frame_processor.py
src/piopiy/processors/logger.py
src/piopiy/processors/producer_processor.py
src/piopiy/processors/text_transformer.py
src/piopiy/processors/transcript_processor.py
src/piopiy/processors/user_idle_processor.py
src/piopiy/processors/aggregators/__init__.py
src/piopiy/processors/aggregators/dtmf_aggregator.py
src/piopiy/processors/aggregators/gated.py
src/piopiy/processors/aggregators/gated_llm_context.py
src/piopiy/processors/aggregators/gated_open_ai_llm_context.py
src/piopiy/processors/aggregators/gated_openai_llm_context.py
src/piopiy/processors/aggregators/llm_context.py
src/piopiy/processors/aggregators/llm_response.py
src/piopiy/processors/aggregators/llm_response_universal.py
src/piopiy/processors/aggregators/openai_llm_context.py
src/piopiy/processors/aggregators/sentence.py
src/piopiy/processors/aggregators/user_response.py
src/piopiy/processors/aggregators/vision_image_frame.py
src/piopiy/processors/audio/__init__.py
src/piopiy/processors/audio/audio_buffer_processor.py
src/piopiy/processors/filters/__init__.py
src/piopiy/processors/filters/frame_filter.py
src/piopiy/processors/filters/function_filter.py
src/piopiy/processors/filters/identity_filter.py
src/piopiy/processors/filters/null_filter.py
src/piopiy/processors/filters/stt_mute_filter.py
src/piopiy/processors/filters/wake_check_filter.py
src/piopiy/processors/filters/wake_notifier_filter.py
src/piopiy/processors/frameworks/__init__.py
src/piopiy/processors/frameworks/langchain.py
src/piopiy/processors/frameworks/rtvi.py
src/piopiy/processors/frameworks/strands_agents.py
src/piopiy/processors/gstreamer/__init__.py
src/piopiy/processors/gstreamer/pipeline_source.py
src/piopiy/processors/metrics/__init__.py
src/piopiy/processors/metrics/frame_processor_metrics.py
src/piopiy/processors/metrics/sentry.py
src/piopiy/runner/__init__.py
src/piopiy/runner/daily.py
src/piopiy/runner/livekit.py
src/piopiy/runner/run.py
src/piopiy/runner/types.py
src/piopiy/runner/utils.py
src/piopiy/serializers/__init__.py
src/piopiy/serializers/base_serializer.py
src/piopiy/serializers/livekit.py
src/piopiy/serializers/protobuf.py
src/piopiy/services/__init__.py
src/piopiy/services/ai_service.py
src/piopiy/services/ai_services.py
src/piopiy/services/image_service.py
src/piopiy/services/llm_service.py
src/piopiy/services/mcp_service.py
src/piopiy/services/stt_service.py
src/piopiy/services/tts_service.py
src/piopiy/services/vision_service.py
src/piopiy/services/websocket_service.py
src/piopiy/services/anthropic/__init__.py
src/piopiy/services/anthropic/llm.py
src/piopiy/services/assemblyai/__init__.py
src/piopiy/services/assemblyai/models.py
src/piopiy/services/assemblyai/stt.py
src/piopiy/services/asyncai/__init__.py
src/piopiy/services/asyncai/tts.py
src/piopiy/services/aws/__init__.py
src/piopiy/services/aws/llm.py
src/piopiy/services/aws/stt.py
src/piopiy/services/aws/tts.py
src/piopiy/services/aws/utils.py
src/piopiy/services/aws/nova_sonic/__init__.py
src/piopiy/services/aws/nova_sonic/context.py
src/piopiy/services/aws/nova_sonic/frames.py
src/piopiy/services/aws/nova_sonic/llm.py
src/piopiy/services/aws/nova_sonic/ready.wav
src/piopiy/services/aws_nova_sonic/__init__.py
src/piopiy/services/aws_nova_sonic/aws.py
src/piopiy/services/aws_nova_sonic/context.py
src/piopiy/services/aws_nova_sonic/frames.py
src/piopiy/services/aws_nova_sonic/ready.wav
src/piopiy/services/azure/__init__.py
src/piopiy/services/azure/common.py
src/piopiy/services/azure/image.py
src/piopiy/services/azure/llm.py
src/piopiy/services/azure/stt.py
src/piopiy/services/azure/tts.py
src/piopiy/services/azure/realtime/__init__.py
src/piopiy/services/azure/realtime/llm.py
src/piopiy/services/cartesia/__init__.py
src/piopiy/services/cartesia/stt.py
src/piopiy/services/cartesia/tts.py
src/piopiy/services/cerebras/__init__.py
src/piopiy/services/cerebras/llm.py
src/piopiy/services/deepgram/__init__.py
src/piopiy/services/deepgram/stt.py
src/piopiy/services/deepgram/tts.py
src/piopiy/services/deepgram/flux/__init__.py
src/piopiy/services/deepgram/flux/stt.py
src/piopiy/services/deepseek/__init__.py
src/piopiy/services/deepseek/llm.py
src/piopiy/services/elevenlabs/__init__.py
src/piopiy/services/elevenlabs/stt.py
src/piopiy/services/elevenlabs/tts.py
src/piopiy/services/fal/__init__.py
src/piopiy/services/fal/image.py
src/piopiy/services/fal/stt.py
src/piopiy/services/fireworks/__init__.py
src/piopiy/services/fireworks/llm.py
src/piopiy/services/fish/__init__.py
src/piopiy/services/fish/tts.py
src/piopiy/services/gemini_multimodal_live/__init__.py
src/piopiy/services/gemini_multimodal_live/events.py
src/piopiy/services/gemini_multimodal_live/file_api.py
src/piopiy/services/gemini_multimodal_live/gemini.py
src/piopiy/services/gladia/__init__.py
src/piopiy/services/gladia/config.py
src/piopiy/services/gladia/stt.py
src/piopiy/services/google/__init__.py
src/piopiy/services/google/frames.py
src/piopiy/services/google/google.py
src/piopiy/services/google/image.py
src/piopiy/services/google/llm.py
src/piopiy/services/google/llm_openai.py
src/piopiy/services/google/llm_vertex.py
src/piopiy/services/google/rtvi.py
src/piopiy/services/google/stt.py
src/piopiy/services/google/tts.py
src/piopiy/services/google/gemini_live/__init__.py
src/piopiy/services/google/gemini_live/file_api.py
src/piopiy/services/google/gemini_live/llm.py
src/piopiy/services/google/gemini_live/llm_vertex.py
src/piopiy/services/grok/__init__.py
src/piopiy/services/grok/llm.py
src/piopiy/services/groq/__init__.py
src/piopiy/services/groq/llm.py
src/piopiy/services/groq/stt.py
src/piopiy/services/groq/tts.py
src/piopiy/services/heygen/__init__.py
src/piopiy/services/heygen/api.py
src/piopiy/services/heygen/client.py
src/piopiy/services/heygen/video.py
src/piopiy/services/hume/__init__.py
src/piopiy/services/hume/tts.py
src/piopiy/services/inworld/__init__.py
src/piopiy/services/inworld/tts.py
src/piopiy/services/lmnt/__init__.py
src/piopiy/services/lmnt/tts.py
src/piopiy/services/mem0/__init__.py
src/piopiy/services/mem0/memory.py
src/piopiy/services/minimax/__init__.py
src/piopiy/services/minimax/tts.py
src/piopiy/services/mistral/__init__.py
src/piopiy/services/mistral/llm.py
src/piopiy/services/moondream/__init__.py
src/piopiy/services/moondream/vision.py
src/piopiy/services/neuphonic/__init__.py
src/piopiy/services/neuphonic/tts.py
src/piopiy/services/nim/__init__.py
src/piopiy/services/nim/llm.py
src/piopiy/services/ollama/__init__.py
src/piopiy/services/ollama/llm.py
src/piopiy/services/openai/__init__.py
src/piopiy/services/openai/base_llm.py
src/piopiy/services/openai/image.py
src/piopiy/services/openai/llm.py
src/piopiy/services/openai/stt.py
src/piopiy/services/openai/tts.py
src/piopiy/services/openai/realtime/__init__.py
src/piopiy/services/openai/realtime/context.py
src/piopiy/services/openai/realtime/events.py
src/piopiy/services/openai/realtime/frames.py
src/piopiy/services/openai/realtime/llm.py
src/piopiy/services/openai_realtime/__init__.py
src/piopiy/services/openai_realtime/azure.py
src/piopiy/services/openai_realtime/context.py
src/piopiy/services/openai_realtime/events.py
src/piopiy/services/openai_realtime/frames.py
src/piopiy/services/openai_realtime_beta/__init__.py
src/piopiy/services/openai_realtime_beta/azure.py
src/piopiy/services/openai_realtime_beta/context.py
src/piopiy/services/openai_realtime_beta/events.py
src/piopiy/services/openai_realtime_beta/frames.py
src/piopiy/services/openai_realtime_beta/openai.py
src/piopiy/services/openpipe/__init__.py
src/piopiy/services/openpipe/llm.py
src/piopiy/services/openrouter/__init__.py
src/piopiy/services/openrouter/llm.py
src/piopiy/services/opensource/__init__.py
src/piopiy/services/opensource/chatterbox/__init__.py
src/piopiy/services/opensource/chatterbox/tts.py
src/piopiy/services/opensource/chatterbox/tts_lol.py
src/piopiy/services/opensource/kokoro/__init__.py
src/piopiy/services/opensource/kokoro/tts.py
src/piopiy/services/opensource/orpheus/tts.py
src/piopiy/services/opensource/orpheus/tts1.py
src/piopiy/services/opensource/ultravox/omni.py
src/piopiy/services/perplexity/__init__.py
src/piopiy/services/perplexity/llm.py
src/piopiy/services/piper/__init__.py
src/piopiy/services/piper/tts.py
src/piopiy/services/playht/__init__.py
src/piopiy/services/playht/tts.py
src/piopiy/services/qwen/__init__.py
src/piopiy/services/qwen/llm.py
src/piopiy/services/rime/__init__.py
src/piopiy/services/rime/tts.py
src/piopiy/services/riva/__init__.py
src/piopiy/services/riva/stt.py
src/piopiy/services/riva/tts.py
src/piopiy/services/sambanova/__init__.py
src/piopiy/services/sambanova/llm.py
src/piopiy/services/sambanova/stt.py
src/piopiy/services/sarvam/__init__.py
src/piopiy/services/sarvam/stt.py
src/piopiy/services/sarvam/tts.py
src/piopiy/services/simli/__init__.py
src/piopiy/services/simli/video.py
src/piopiy/services/soniox/__init__.py
src/piopiy/services/soniox/stt.py
src/piopiy/services/speechmatics/__init__.py
src/piopiy/services/speechmatics/stt.py
src/piopiy/services/speechmatics/tts.py
src/piopiy/services/tavus/__init__.py
src/piopiy/services/tavus/video.py
src/piopiy/services/together/__init__.py
src/piopiy/services/together/llm.py
src/piopiy/services/ultravox/__init__.py
src/piopiy/services/ultravox/stt.py
src/piopiy/services/whisper/__init__.py
src/piopiy/services/whisper/base_stt.py
src/piopiy/services/whisper/stt.py
src/piopiy/services/whisper/utils.py
src/piopiy/services/xtts/__init__.py
src/piopiy/services/xtts/tts.py
src/piopiy/sync/__init__.py
src/piopiy/sync/base_notifier.py
src/piopiy/sync/event_notifier.py
src/piopiy/tests/__init__.py
src/piopiy/tests/utils.py
src/piopiy/transcriptions/__init__.py
src/piopiy/transcriptions/language.py
src/piopiy/transports/__init__.py
src/piopiy/transports/base_input.py
src/piopiy/transports/base_output.py
src/piopiy/transports/base_transport.py
src/piopiy/transports/services/telecmi/__init__.py
src/piopiy/utils/__init__.py
src/piopiy/utils/base_object.py
src/piopiy/utils/network.py
src/piopiy/utils/string.py
src/piopiy/utils/time.py
src/piopiy/utils/utils.py
src/piopiy/utils/asyncio/__init__.py
src/piopiy/utils/asyncio/task_manager.py
src/piopiy/utils/asyncio/watchdog_async_iterator.py
src/piopiy/utils/asyncio/watchdog_coroutine.py
src/piopiy/utils/asyncio/watchdog_event.py
src/piopiy/utils/asyncio/watchdog_priority_queue.py
src/piopiy/utils/asyncio/watchdog_queue.py
src/piopiy/utils/text/__init__.py
src/piopiy/utils/text/base_text_aggregator.py
src/piopiy/utils/text/base_text_filter.py
src/piopiy/utils/text/markdown_text_filter.py
src/piopiy/utils/text/pattern_pair_aggregator.py
src/piopiy/utils/text/simple_text_aggregator.py
src/piopiy/utils/text/skip_tags_aggregator.py
src/piopiy/utils/tracing/__init__.py
src/piopiy/utils/tracing/class_decorators.py
src/piopiy/utils/tracing/conversation_context_provider.py
src/piopiy/utils/tracing/service_attributes.py
src/piopiy/utils/tracing/service_decorators.py
src/piopiy/utils/tracing/setup.py
src/piopiy/utils/tracing/turn_context_provider.py
src/piopiy/utils/tracing/turn_trace_observer.py
src/piopiy_ai.egg-info/PKG-INFO
src/piopiy_ai.egg-info/SOURCES.txt
src/piopiy_ai.egg-info/dependency_links.txt
src/piopiy_ai.egg-info/entry_points.txt
src/piopiy_ai.egg-info/requires.txt
src/piopiy_ai.egg-info/top_level.txt
tests/test_placeholder.py