dv-pipecat-ai 0.0.85.dev834__tar.gz → 0.0.85.dev837__tar.gz
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.
Potentially problematic release.
This version of dv-pipecat-ai might be problematic. Click here for more details.
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/PKG-INFO +1 -1
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/dv_pipecat_ai.egg-info/PKG-INFO +1 -1
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/dv_pipecat_ai.egg-info/SOURCES.txt +1 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/serializers/__init__.py +2 -0
- dv_pipecat_ai-0.0.85.dev837/src/pipecat/serializers/vi.py +324 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.dockerignore +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/ISSUE_TEMPLATE/1-bug_report.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/ISSUE_TEMPLATE/2-question.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/ISSUE_TEMPLATE/3-feature_request.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/ISSUE_TEMPLATE/4-service-issue.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/ISSUE_TEMPLATE/5-new-service.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/ISSUE_TEMPLATE/6-dependency.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/ISSUE_TEMPLATE/7-troubleshooting.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/build.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/coverage.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/force_push_to_pypi.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/format.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/github.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/promote-prod.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/publish.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/publish_test.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/python-compatibility.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/set-traffic-split.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/sync-quickstart.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/tests.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.gitignore +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.pre-commit-config.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.readthedocs.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/CHANGELOG.md +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/CHANGELOG.md.template +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/CLAUDE.md +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/COMMUNITY_INTEGRATIONS.md +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/CONTRIBUTING.md +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/DOCKER_BUILD_OPTIMIZATION_SUMMARY.md +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/LICENSE +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/MANIFEST.in +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/README.md +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/SECURITY.md +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/ansible.cfg +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/ansible_deployment.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/cleanup_old_containers.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/codecov.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/create-new-machine/ansible.cfg +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/create-new-machine/ansible_setup.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/create-new-machine/inventory.ini +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/create-new-machine/replace_env.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/create-new-machine/setup_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/create_inventory.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/delete_old_dockers.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/deploy.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/deploy_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/docker-compose.dev.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/dump_logs.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/env.example +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/fetch_logs.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/inventory.ini +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/.helmignore +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/Chart.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/_helpers.tpl +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/backendconfig.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/cluster-role.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/deployment.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/hpa.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/ingress.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/keda-api-key-secret.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/keda-scaledobject.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/keda-trigger-auth.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/pdb.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/service.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/values-canary.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/values-prod.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/values-stage.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/values.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/istio/destination-virtualservice.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/merge-code-into-single-file.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/pipecat.png +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/pyproject.toml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/restart.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/restart_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/setup.cfg +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/dv_pipecat_ai.egg-info/dependency_links.txt +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/dv_pipecat_ai.egg-info/requires.txt +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/dv_pipecat_ai.egg-info/top_level.txt +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/base_llm_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/schemas/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/schemas/direct_function.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/schemas/function_schema.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/schemas/tools_schema.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/services/anthropic_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/services/aws_nova_sonic_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/services/bedrock_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/services/gemini_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/services/open_ai_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/services/open_ai_realtime_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-0.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-1.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-2.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-3.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-4.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-5.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-6.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-7.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-8.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-9.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-pound.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-star.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/types.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/filters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/filters/aic_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/filters/base_audio_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/filters/koala_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/filters/krisp_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/filters/krisp_viva_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/filters/noisereduce_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/filters/pyrnn_local_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/interruptions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/interruptions/base_interruption_strategy.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/interruptions/min_words_interruption_strategy.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/mixers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/mixers/base_audio_mixer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/mixers/soundfile_mixer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/resamplers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/resamplers/base_audio_resampler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/resamplers/resampy_resampler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/resamplers/soxr_resampler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/resamplers/soxr_stream_resampler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/turn/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/turn/base_turn_analyzer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/turn/smart_turn/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/turn/smart_turn/base_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/turn/smart_turn/data/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/turn/smart_turn/data/smart-turn-v3.0.onnx +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/turn/smart_turn/fal_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/turn/smart_turn/http_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/turn/smart_turn/local_coreml_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/turn/smart_turn/local_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v2.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v3.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/vad/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/vad/data/README.md +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/vad/data/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/vad/data/silero_vad.onnx +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/vad/data/silero_vad_v2.onnx +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/vad/silero.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/vad/vad_analyzer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/clocks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/clocks/base_clock.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/clocks/system_clock.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/extensions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/extensions/ivr/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/extensions/ivr/ivr_navigator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/extensions/voicemail/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/extensions/voicemail/voicemail_detector.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/frames/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/frames/frames.proto +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/frames/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/frames/protobufs/frames_pb2.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/metrics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/metrics/metrics.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/observers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/observers/base_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/observers/loggers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/observers/loggers/debug_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/observers/loggers/llm_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/observers/loggers/transcription_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/observers/turn_tracking_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/pipeline/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/pipeline/base_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/pipeline/base_task.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/pipeline/llm_switcher.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/pipeline/parallel_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/pipeline/pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/pipeline/runner.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/pipeline/service_switcher.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/pipeline/sync_parallel_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/pipeline/task.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/pipeline/task_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/pipeline/to_be_updated/merge_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/pipeline/tts_switcher.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/aggregators/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/aggregators/dtmf_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/aggregators/gated.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/aggregators/gated_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/aggregators/gated_open_ai_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/aggregators/llm_context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/aggregators/llm_response.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/aggregators/llm_response_universal.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/aggregators/openai_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/aggregators/sentence.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/aggregators/user_response.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/aggregators/vision_image_frame.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/async_generator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/audio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/audio/audio_buffer_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/consumer_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/dtmf_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/filters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/filters/frame_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/filters/function_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/filters/identity_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/filters/null_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/filters/stt_mute_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/filters/wake_check_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/filters/wake_notifier_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/frame_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/frameworks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/frameworks/langchain.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/frameworks/rtvi.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/frameworks/strands_agents.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/gstreamer/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/gstreamer/pipeline_source.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/idle_frame_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/logger.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/metrics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/metrics/frame_processor_metrics.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/metrics/sentry.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/producer_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/text_transformer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/transcript_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/two_stage_user_idle_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/processors/user_idle_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/py.typed +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/runner/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/runner/daily.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/runner/livekit.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/runner/run.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/runner/types.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/runner/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/serializers/asterisk.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/serializers/base_serializer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/serializers/convox.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/serializers/custom.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/serializers/exotel.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/serializers/livekit.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/serializers/plivo.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/serializers/protobuf.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/serializers/telnyx.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/serializers/twilio.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/ai_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/ai_services.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/anthropic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/anthropic/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/assemblyai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/assemblyai/models.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/assemblyai/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/asyncai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/asyncai/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/aws/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/aws/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/aws/nova_sonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/aws/nova_sonic/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/aws/nova_sonic/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/aws/nova_sonic/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/aws/nova_sonic/ready.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/aws/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/aws/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/aws/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/aws_nova_sonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/aws_nova_sonic/aws.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/aws_nova_sonic/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/aws_nova_sonic/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/azure/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/azure/common.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/azure/image.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/azure/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/azure/realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/azure/realtime/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/azure/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/azure/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/cartesia/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/cartesia/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/cartesia/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/cerebras/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/cerebras/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/deepgram/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/deepgram/flux/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/deepgram/flux/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/deepgram/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/deepgram/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/deepseek/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/deepseek/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/elevenlabs/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/elevenlabs/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/elevenlabs/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/fal/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/fal/image.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/fal/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/fireworks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/fireworks/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/fish/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/fish/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/gemini_multimodal_live/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/gemini_multimodal_live/events.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/gemini_multimodal_live/file_api.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/gemini_multimodal_live/gemini.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/gladia/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/gladia/config.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/gladia/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/google/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/google/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/google/gemini_live/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/google/gemini_live/file_api.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/google/gemini_live/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/google/gemini_live/llm_vertex.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/google/google.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/google/image.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/google/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/google/llm_openai.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/google/llm_vertex.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/google/rtvi.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/google/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/google/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/grok/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/grok/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/groq/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/groq/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/groq/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/groq/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/hamsa/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/hamsa/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/heygen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/heygen/api.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/heygen/client.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/heygen/video.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/hume/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/hume/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/image_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/inworld/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/inworld/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/llm_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/lmnt/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/lmnt/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/mcp_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/mem0/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/mem0/memory.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/minimax/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/minimax/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/mistral/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/mistral/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/moondream/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/moondream/vision.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/neuphonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/neuphonic/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/nim/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/nim/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/ollama/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/ollama/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai/base_llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai/image.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai/realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai/realtime/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai/realtime/events.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai/realtime/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai/realtime/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai_realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai_realtime/azure.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai_realtime/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai_realtime/events.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai_realtime/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai_realtime_beta/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai_realtime_beta/azure.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai_realtime_beta/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai_realtime_beta/events.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai_realtime_beta/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openai_realtime_beta/openai.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openpipe/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openpipe/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openrouter/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/openrouter/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/perplexity/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/perplexity/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/piper/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/piper/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/playht/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/playht/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/qwen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/qwen/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/rime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/rime/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/riva/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/riva/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/riva/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/salesforce/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/salesforce/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/sambanova/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/sambanova/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/sambanova/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/sarvam/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/sarvam/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/sarvam/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/simli/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/simli/video.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/soniox/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/soniox/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/speechmatics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/speechmatics/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/stt_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/tavus/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/tavus/video.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/together/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/together/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/tts_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/ultravox/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/ultravox/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/vision_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/vistaar/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/vistaar/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/websocket_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/whisper/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/whisper/base_stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/whisper/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/xtts/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/services/xtts/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/sync/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/sync/base_notifier.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/sync/event_notifier.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/tests/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/tests/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transcriptions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transcriptions/language.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/base_input.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/base_output.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/base_transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/daily/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/daily/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/daily/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/heygen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/heygen/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/livekit/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/livekit/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/local/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/local/audio.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/local/tk.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/network/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/network/fastapi_websocket.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/network/small_webrtc.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/network/webrtc_connection.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/network/websocket_client.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/network/websocket_server.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/services/daily.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/services/helpers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/services/helpers/daily_rest.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/services/livekit.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/services/tavus.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/smallwebrtc/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/smallwebrtc/connection.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/smallwebrtc/request_handler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/smallwebrtc/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/tavus/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/tavus/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/websocket/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/websocket/client.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/websocket/fastapi.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/websocket/server.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/whatsapp/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/whatsapp/api.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/transports/whatsapp/client.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/asyncio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/asyncio/task_manager.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/base_object.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/logger_config.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/network.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/redis.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/string.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/text/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/text/base_text_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/text/base_text_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/text/markdown_text_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/text/pattern_pair_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/text/simple_text_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/text/skip_tags_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/time.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/tracing/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/tracing/class_decorators.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/tracing/conversation_context_provider.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/tracing/service_attributes.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/tracing/service_decorators.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/tracing/setup.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/tracing/turn_context_provider.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/tracing/turn_trace_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/utils/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/stop_container.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/test_elevenlabs_stt_segmented.py +0 -0
- {dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/uv.lock +0 -0
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/dv_pipecat_ai.egg-info/SOURCES.txt
RENAMED
|
@@ -247,6 +247,7 @@ src/pipecat/serializers/plivo.py
|
|
|
247
247
|
src/pipecat/serializers/protobuf.py
|
|
248
248
|
src/pipecat/serializers/telnyx.py
|
|
249
249
|
src/pipecat/serializers/twilio.py
|
|
250
|
+
src/pipecat/serializers/vi.py
|
|
250
251
|
src/pipecat/services/__init__.py
|
|
251
252
|
src/pipecat/services/ai_service.py
|
|
252
253
|
src/pipecat/services/ai_services.py
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/serializers/__init__.py
RENAMED
|
@@ -5,6 +5,7 @@ from .exotel import ExotelFrameSerializer
|
|
|
5
5
|
from .plivo import PlivoFrameSerializer
|
|
6
6
|
from .telnyx import TelnyxFrameSerializer
|
|
7
7
|
from .twilio import TwilioFrameSerializer
|
|
8
|
+
from .vi import VIFrameSerializer
|
|
8
9
|
|
|
9
10
|
__all__ = [
|
|
10
11
|
"FrameSerializer",
|
|
@@ -15,6 +16,7 @@ __all__ = [
|
|
|
15
16
|
"PlivoFrameSerializer",
|
|
16
17
|
"TelnyxFrameSerializer",
|
|
17
18
|
"TwilioFrameSerializer",
|
|
19
|
+
"VIFrameSerializer",
|
|
18
20
|
]
|
|
19
21
|
|
|
20
22
|
# Optional imports
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2024–2025, Daily
|
|
3
|
+
#
|
|
4
|
+
# SPDX-License-Identifier: BSD 2-Clause License
|
|
5
|
+
#
|
|
6
|
+
|
|
7
|
+
"""Vodafone Idea (VI) WebSocket frame serializer for audio streaming and call management."""
|
|
8
|
+
|
|
9
|
+
import base64
|
|
10
|
+
import json
|
|
11
|
+
from datetime import datetime, timezone
|
|
12
|
+
from typing import Optional
|
|
13
|
+
|
|
14
|
+
from loguru import logger
|
|
15
|
+
from pydantic import BaseModel
|
|
16
|
+
|
|
17
|
+
from pipecat.audio.utils import create_default_resampler
|
|
18
|
+
from pipecat.frames.frames import (
|
|
19
|
+
AudioRawFrame,
|
|
20
|
+
CancelFrame,
|
|
21
|
+
EndFrame,
|
|
22
|
+
Frame,
|
|
23
|
+
InputAudioRawFrame,
|
|
24
|
+
InputDTMFFrame,
|
|
25
|
+
KeypadEntry,
|
|
26
|
+
StartFrame,
|
|
27
|
+
StartInterruptionFrame,
|
|
28
|
+
TransportMessageFrame,
|
|
29
|
+
TransportMessageUrgentFrame,
|
|
30
|
+
)
|
|
31
|
+
from pipecat.serializers.base_serializer import FrameSerializer, FrameSerializerType
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
class VIFrameSerializer(FrameSerializer):
|
|
35
|
+
"""Serializer for Vodafone Idea (VI) WebSocket protocol.
|
|
36
|
+
|
|
37
|
+
This serializer handles converting between Pipecat frames and VI's WebSocket
|
|
38
|
+
protocol for bidirectional audio streaming. It supports audio conversion, DTMF events,
|
|
39
|
+
and real-time communication with VI telephony systems.
|
|
40
|
+
|
|
41
|
+
VI WebSocket protocol requirements:
|
|
42
|
+
- PCM audio format at 8kHz sample rate
|
|
43
|
+
- 16-bit Linear PCM encoding
|
|
44
|
+
- Base64 encoded audio payloads
|
|
45
|
+
- JSON message format for control and media events
|
|
46
|
+
- Bitrate: 128 Kbps
|
|
47
|
+
|
|
48
|
+
Events (VI → Endpoint):
|
|
49
|
+
- connected: WebSocket connection established
|
|
50
|
+
- start: Stream session started with call/stream IDs
|
|
51
|
+
- media: Audio data in Base64-encoded PCM
|
|
52
|
+
- dtmf: Keypad digit pressed
|
|
53
|
+
- stop: Stream ended
|
|
54
|
+
- mark: Audio playback checkpoint confirmation
|
|
55
|
+
|
|
56
|
+
Events (Endpoint → VI):
|
|
57
|
+
- media: Send audio back to VI
|
|
58
|
+
- mark: Request acknowledgment for audio playback
|
|
59
|
+
- clear: Clear queued audio (interruption)
|
|
60
|
+
- exit: Terminate session gracefully
|
|
61
|
+
"""
|
|
62
|
+
|
|
63
|
+
class InputParams(BaseModel):
|
|
64
|
+
"""Configuration parameters for VIFrameSerializer.
|
|
65
|
+
|
|
66
|
+
Attributes:
|
|
67
|
+
vi_sample_rate: Sample rate used by VI, defaults to 8000 Hz (telephony standard).
|
|
68
|
+
sample_rate: Optional override for pipeline input sample rate.
|
|
69
|
+
auto_hang_up: Whether to automatically terminate call on EndFrame.
|
|
70
|
+
"""
|
|
71
|
+
|
|
72
|
+
vi_sample_rate: int = 8000
|
|
73
|
+
sample_rate: Optional[int] = None
|
|
74
|
+
auto_hang_up: bool = False
|
|
75
|
+
|
|
76
|
+
def __init__(
|
|
77
|
+
self,
|
|
78
|
+
stream_id: str,
|
|
79
|
+
call_id: Optional[str] = None,
|
|
80
|
+
params: Optional[InputParams] = None,
|
|
81
|
+
):
|
|
82
|
+
"""Initialize the VIFrameSerializer.
|
|
83
|
+
|
|
84
|
+
Args:
|
|
85
|
+
stream_id: The VI stream identifier.
|
|
86
|
+
call_id: The associated VI call identifier.
|
|
87
|
+
params: Configuration parameters.
|
|
88
|
+
"""
|
|
89
|
+
self._stream_id = stream_id
|
|
90
|
+
self._call_id = call_id
|
|
91
|
+
self._params = params or VIFrameSerializer.InputParams()
|
|
92
|
+
|
|
93
|
+
self._vi_sample_rate = self._params.vi_sample_rate
|
|
94
|
+
self._sample_rate = 0 # Pipeline input rate
|
|
95
|
+
self._call_ended = False
|
|
96
|
+
|
|
97
|
+
self._resampler = create_default_resampler()
|
|
98
|
+
|
|
99
|
+
@property
|
|
100
|
+
def type(self) -> FrameSerializerType:
|
|
101
|
+
"""Gets the serializer type.
|
|
102
|
+
|
|
103
|
+
Returns:
|
|
104
|
+
The serializer type as TEXT for JSON WebSocket messages.
|
|
105
|
+
"""
|
|
106
|
+
return FrameSerializerType.TEXT
|
|
107
|
+
|
|
108
|
+
async def setup(self, frame: StartFrame):
|
|
109
|
+
"""Sets up the serializer with pipeline configuration.
|
|
110
|
+
|
|
111
|
+
Args:
|
|
112
|
+
frame: The StartFrame containing pipeline configuration.
|
|
113
|
+
"""
|
|
114
|
+
self._sample_rate = self._params.sample_rate or frame.audio_in_sample_rate
|
|
115
|
+
|
|
116
|
+
async def serialize(self, frame: Frame) -> str | bytes | None:
|
|
117
|
+
"""Serializes a Pipecat frame to VI WebSocket format.
|
|
118
|
+
|
|
119
|
+
Handles conversion of various frame types to VI WebSocket messages.
|
|
120
|
+
For EndFrames, initiates call termination if auto_hang_up is enabled.
|
|
121
|
+
|
|
122
|
+
Args:
|
|
123
|
+
frame: The Pipecat frame to serialize.
|
|
124
|
+
|
|
125
|
+
Returns:
|
|
126
|
+
Serialized data as JSON string, or None if the frame isn't handled.
|
|
127
|
+
"""
|
|
128
|
+
if (
|
|
129
|
+
self._params.auto_hang_up
|
|
130
|
+
and not self._call_ended
|
|
131
|
+
and isinstance(frame, (EndFrame, CancelFrame))
|
|
132
|
+
):
|
|
133
|
+
self._call_ended = True
|
|
134
|
+
# Return the exit event to terminate the VI session
|
|
135
|
+
return await self._send_exit_event()
|
|
136
|
+
|
|
137
|
+
elif isinstance(frame, StartInterruptionFrame):
|
|
138
|
+
# Clear/interrupt command for VI - clears queued audio
|
|
139
|
+
message = {
|
|
140
|
+
"event": "clear",
|
|
141
|
+
"stream_id": self._stream_id,
|
|
142
|
+
"call_id": self._call_id,
|
|
143
|
+
}
|
|
144
|
+
logger.debug(f"VI: Sending clear event for stream_id: {self._stream_id}")
|
|
145
|
+
return json.dumps(message)
|
|
146
|
+
|
|
147
|
+
elif isinstance(frame, AudioRawFrame):
|
|
148
|
+
if self._call_ended:
|
|
149
|
+
logger.debug("VI SERIALIZE: Skipping audio - call has ended")
|
|
150
|
+
return None
|
|
151
|
+
|
|
152
|
+
# Convert PCM audio to VI format
|
|
153
|
+
data = frame.audio
|
|
154
|
+
|
|
155
|
+
# Resample to VI sample rate (8kHz)
|
|
156
|
+
serialized_data = await self._resampler.resample(
|
|
157
|
+
data, frame.sample_rate, self._vi_sample_rate
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
# Encode as base64 for transmission
|
|
161
|
+
payload = base64.b64encode(serialized_data).decode("ascii")
|
|
162
|
+
|
|
163
|
+
# VI expects media event format with Base64-encoded PCM audio
|
|
164
|
+
timestamp = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
|
|
165
|
+
|
|
166
|
+
message = {
|
|
167
|
+
"event": "media",
|
|
168
|
+
"stream_id": self._stream_id,
|
|
169
|
+
"media": {
|
|
170
|
+
"timestamp": timestamp,
|
|
171
|
+
"chunk": len(serialized_data), # Chunk size in bytes
|
|
172
|
+
"payload": payload,
|
|
173
|
+
},
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
return json.dumps(message)
|
|
177
|
+
|
|
178
|
+
elif isinstance(frame, (TransportMessageFrame, TransportMessageUrgentFrame)):
|
|
179
|
+
# Pass through transport messages (for mark events, etc.)
|
|
180
|
+
return json.dumps(frame.message)
|
|
181
|
+
|
|
182
|
+
return None
|
|
183
|
+
|
|
184
|
+
async def _send_exit_event(self):
|
|
185
|
+
"""Send an exit event to VI to terminate the session gracefully.
|
|
186
|
+
|
|
187
|
+
This method is called when auto_hang_up is enabled and an EndFrame or
|
|
188
|
+
CancelFrame is received. The exit event allows IVR logic to continue
|
|
189
|
+
after the WebSocket session ends.
|
|
190
|
+
"""
|
|
191
|
+
try:
|
|
192
|
+
exit_event = {
|
|
193
|
+
"event": "exit",
|
|
194
|
+
"stream_id": self._stream_id,
|
|
195
|
+
"call_id": self._call_id,
|
|
196
|
+
"timestamp": datetime.now(timezone.utc).isoformat().replace("+00:00", "Z"),
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
logger.info(
|
|
200
|
+
f"VI auto_hang_up: Sending exit event for stream_id: {self._stream_id}, call_id: {self._call_id}"
|
|
201
|
+
)
|
|
202
|
+
return json.dumps(exit_event)
|
|
203
|
+
except Exception as e:
|
|
204
|
+
logger.error(f"VI auto_hang_up: Failed to create exit event: {e}")
|
|
205
|
+
return None
|
|
206
|
+
|
|
207
|
+
async def deserialize(self, data: str | bytes) -> Frame | None:
|
|
208
|
+
"""Deserializes VI WebSocket data to Pipecat frames.
|
|
209
|
+
|
|
210
|
+
Handles conversion of VI media events to appropriate Pipecat frames.
|
|
211
|
+
|
|
212
|
+
Args:
|
|
213
|
+
data: The raw WebSocket data from VI.
|
|
214
|
+
|
|
215
|
+
Returns:
|
|
216
|
+
A Pipecat frame corresponding to the VI event, or None if unhandled.
|
|
217
|
+
"""
|
|
218
|
+
try:
|
|
219
|
+
message = json.loads(data)
|
|
220
|
+
except json.JSONDecodeError:
|
|
221
|
+
logger.error(f"Invalid JSON received from VI: {data}")
|
|
222
|
+
return None
|
|
223
|
+
|
|
224
|
+
# Log all incoming events for debugging and monitoring
|
|
225
|
+
event = message.get("event")
|
|
226
|
+
logger.debug(
|
|
227
|
+
f"VI INCOMING EVENT: {event} - stream_id: {self._stream_id}, call_id: {self._call_id}"
|
|
228
|
+
)
|
|
229
|
+
|
|
230
|
+
if event == "media":
|
|
231
|
+
# Handle incoming audio data from VI
|
|
232
|
+
media = message.get("media", {})
|
|
233
|
+
payload_base64 = media.get("payload")
|
|
234
|
+
|
|
235
|
+
if not payload_base64:
|
|
236
|
+
logger.warning("VI DESERIALIZE: No payload in VI media message")
|
|
237
|
+
return None
|
|
238
|
+
|
|
239
|
+
try:
|
|
240
|
+
payload = base64.b64decode(payload_base64)
|
|
241
|
+
chunk_size = len(payload)
|
|
242
|
+
|
|
243
|
+
# Log chunk info (optional)
|
|
244
|
+
logger.debug(
|
|
245
|
+
f"VI DESERIALIZE: Received audio from VI - {chunk_size} bytes at {self._vi_sample_rate}Hz"
|
|
246
|
+
)
|
|
247
|
+
|
|
248
|
+
except Exception as e:
|
|
249
|
+
logger.error(f"VI DESERIALIZE: Error decoding VI audio payload: {e}")
|
|
250
|
+
return None
|
|
251
|
+
|
|
252
|
+
# Convert from VI sample rate (8kHz) to pipeline sample rate
|
|
253
|
+
deserialized_data = await self._resampler.resample(
|
|
254
|
+
payload,
|
|
255
|
+
self._vi_sample_rate,
|
|
256
|
+
self._sample_rate,
|
|
257
|
+
)
|
|
258
|
+
|
|
259
|
+
audio_frame = InputAudioRawFrame(
|
|
260
|
+
audio=deserialized_data,
|
|
261
|
+
num_channels=1, # VI uses mono audio
|
|
262
|
+
sample_rate=self._sample_rate,
|
|
263
|
+
)
|
|
264
|
+
return audio_frame
|
|
265
|
+
|
|
266
|
+
elif event == "dtmf":
|
|
267
|
+
# Handle DTMF events
|
|
268
|
+
dtmf_data = message.get("dtmf", {})
|
|
269
|
+
digit = dtmf_data.get("digit")
|
|
270
|
+
|
|
271
|
+
if digit:
|
|
272
|
+
try:
|
|
273
|
+
logger.info(f"VI: Received DTMF digit: {digit}")
|
|
274
|
+
return InputDTMFFrame(KeypadEntry(digit))
|
|
275
|
+
except ValueError:
|
|
276
|
+
logger.warning(f"Invalid DTMF digit from VI: {digit}")
|
|
277
|
+
return None
|
|
278
|
+
|
|
279
|
+
elif event == "connected":
|
|
280
|
+
# Handle connection event
|
|
281
|
+
logger.info(f"VI connection established: {message}")
|
|
282
|
+
return None
|
|
283
|
+
|
|
284
|
+
elif event == "start":
|
|
285
|
+
# Handle stream start event
|
|
286
|
+
logger.info(f"VI stream started: {message}")
|
|
287
|
+
return None
|
|
288
|
+
|
|
289
|
+
elif event == "stop":
|
|
290
|
+
# Handle stream stop event
|
|
291
|
+
logger.info(f"VI stream stopped: {message}")
|
|
292
|
+
# Don't end the call here, wait for explicit exit or call end
|
|
293
|
+
return None
|
|
294
|
+
|
|
295
|
+
elif event == "mark":
|
|
296
|
+
# Handle mark event - checkpoint confirming audio playback completion
|
|
297
|
+
mark_data = message.get("mark", {})
|
|
298
|
+
mark_name = mark_data.get("name", "unknown")
|
|
299
|
+
logger.info(f"VI mark event received: {mark_name}")
|
|
300
|
+
# Mark events are informational, no frame to return
|
|
301
|
+
return None
|
|
302
|
+
|
|
303
|
+
elif event == "error":
|
|
304
|
+
# Handle error events
|
|
305
|
+
error_msg = message.get("error", "Unknown error")
|
|
306
|
+
logger.error(f"VI error: {error_msg}")
|
|
307
|
+
return None
|
|
308
|
+
|
|
309
|
+
elif event == "exit":
|
|
310
|
+
# Handle exit event from VI
|
|
311
|
+
logger.info("VI exit event received - terminating session")
|
|
312
|
+
self._call_ended = True
|
|
313
|
+
return CancelFrame()
|
|
314
|
+
|
|
315
|
+
elif event == "call_end" or event == "callEnd":
|
|
316
|
+
# Handle call end event (if VI sends this)
|
|
317
|
+
logger.info("VI call end event received")
|
|
318
|
+
self._call_ended = True
|
|
319
|
+
return CancelFrame()
|
|
320
|
+
|
|
321
|
+
else:
|
|
322
|
+
logger.debug(f"VI UNHANDLED EVENT: {event}")
|
|
323
|
+
|
|
324
|
+
return None
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/ISSUE_TEMPLATE/1-bug_report.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/ISSUE_TEMPLATE/2-question.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/ISSUE_TEMPLATE/5-new-service.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/ISSUE_TEMPLATE/6-dependency.yml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/ISSUE_TEMPLATE/config.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/PULL_REQUEST_TEMPLATE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/force_push_to_pypi.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/promote-prod.yml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/publish_test.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/set-traffic-split.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/.github/workflows/sync-quickstart.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/DOCKER_BUILD_OPTIMIZATION_SUMMARY.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/create-new-machine/ansible_setup.sh
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/create-new-machine/inventory.ini
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/create-new-machine/replace_env.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/create-new-machine/setup_playbook.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/_helpers.tpl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/deployment.yaml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/hpa.yaml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/ingress.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/pdb.yaml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/templates/service.yaml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/values-canary.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/k8s/dv-pipecat/values-stage.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/dv_pipecat_ai.egg-info/requires.txt
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/dv_pipecat_ai.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/__init__.py
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/base_llm_adapter.py
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/adapters/schemas/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/__init__.py
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-0.wav
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-1.wav
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-2.wav
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-3.wav
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-4.wav
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-5.wav
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-6.wav
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-7.wav
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev834 → dv_pipecat_ai-0.0.85.dev837}/src/pipecat/audio/dtmf/dtmf-8.wav
RENAMED
|
File without changes
|