dv-pipecat-ai 0.0.85.dev832__tar.gz → 0.0.85.dev834__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.dev832 → dv_pipecat_ai-0.0.85.dev834}/PKG-INFO +1 -1
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/dv_pipecat_ai.egg-info/PKG-INFO +1 -1
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/llm_response.py +3 -8
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/dtmf_aggregator.py +17 -21
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/asterisk.py +16 -2
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/convox.py +2 -2
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/custom.py +2 -2
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/sarvam/tts.py +0 -1
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/vistaar/llm.py +4 -4
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/base_output.py +26 -3
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.dockerignore +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/1-bug_report.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/2-question.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/3-feature_request.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/4-service-issue.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/5-new-service.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/6-dependency.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/7-troubleshooting.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/build.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/coverage.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/force_push_to_pypi.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/format.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/github.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/promote-prod.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/publish.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/publish_test.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/python-compatibility.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/set-traffic-split.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/sync-quickstart.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/tests.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.gitignore +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.pre-commit-config.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.readthedocs.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/CHANGELOG.md +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/CHANGELOG.md.template +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/CLAUDE.md +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/COMMUNITY_INTEGRATIONS.md +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/CONTRIBUTING.md +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/DOCKER_BUILD_OPTIMIZATION_SUMMARY.md +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/LICENSE +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/MANIFEST.in +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/README.md +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/SECURITY.md +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/ansible.cfg +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/ansible_deployment.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/cleanup_old_containers.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/codecov.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/create-new-machine/ansible.cfg +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/create-new-machine/ansible_setup.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/create-new-machine/inventory.ini +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/create-new-machine/replace_env.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/create-new-machine/setup_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/create_inventory.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/delete_old_dockers.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/deploy.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/deploy_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/docker-compose.dev.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/dump_logs.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/env.example +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/fetch_logs.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/inventory.ini +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/.helmignore +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/Chart.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/_helpers.tpl +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/backendconfig.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/cluster-role.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/deployment.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/hpa.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/ingress.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/keda-api-key-secret.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/keda-scaledobject.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/keda-trigger-auth.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/pdb.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/service.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/values-canary.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/values-prod.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/values-stage.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/values.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/istio/destination-virtualservice.yaml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/merge-code-into-single-file.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/pipecat.png +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/pyproject.toml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/restart.sh +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/restart_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/setup.cfg +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/dv_pipecat_ai.egg-info/SOURCES.txt +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/dv_pipecat_ai.egg-info/dependency_links.txt +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/dv_pipecat_ai.egg-info/requires.txt +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/dv_pipecat_ai.egg-info/top_level.txt +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/base_llm_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/schemas/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/schemas/direct_function.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/schemas/function_schema.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/schemas/tools_schema.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/services/anthropic_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/services/aws_nova_sonic_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/services/bedrock_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/services/gemini_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/services/open_ai_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/services/open_ai_realtime_adapter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-0.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-1.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-2.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-3.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-4.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-5.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-6.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-7.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-8.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-9.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-pound.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-star.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/types.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/aic_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/base_audio_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/koala_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/krisp_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/krisp_viva_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/noisereduce_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/pyrnn_local_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/interruptions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/interruptions/base_interruption_strategy.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/interruptions/min_words_interruption_strategy.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/mixers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/mixers/base_audio_mixer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/mixers/soundfile_mixer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/resamplers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/resamplers/base_audio_resampler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/resamplers/resampy_resampler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/resamplers/soxr_resampler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/resamplers/soxr_stream_resampler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/base_turn_analyzer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/base_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/data/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/data/smart-turn-v3.0.onnx +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/fal_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/http_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/local_coreml_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/local_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v2.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v3.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/vad/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/vad/data/README.md +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/vad/data/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/vad/data/silero_vad.onnx +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/vad/data/silero_vad_v2.onnx +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/vad/silero.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/vad/vad_analyzer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/clocks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/clocks/base_clock.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/clocks/system_clock.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/extensions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/extensions/ivr/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/extensions/ivr/ivr_navigator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/extensions/voicemail/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/extensions/voicemail/voicemail_detector.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/frames/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/frames/frames.proto +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/frames/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/frames/protobufs/frames_pb2.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/metrics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/metrics/metrics.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/base_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/loggers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/loggers/debug_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/loggers/llm_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/loggers/transcription_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/turn_tracking_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/base_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/base_task.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/llm_switcher.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/parallel_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/runner.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/service_switcher.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/sync_parallel_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/task.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/task_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/to_be_updated/merge_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/tts_switcher.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/dtmf_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/gated.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/gated_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/gated_open_ai_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/llm_context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/llm_response_universal.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/openai_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/sentence.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/user_response.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/vision_image_frame.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/async_generator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/audio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/audio/audio_buffer_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/consumer_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/frame_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/function_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/identity_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/null_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/stt_mute_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/wake_check_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/wake_notifier_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/frame_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/frameworks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/frameworks/langchain.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/frameworks/rtvi.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/frameworks/strands_agents.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/gstreamer/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/gstreamer/pipeline_source.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/idle_frame_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/logger.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/metrics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/metrics/frame_processor_metrics.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/metrics/sentry.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/producer_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/text_transformer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/transcript_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/two_stage_user_idle_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/user_idle_processor.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/py.typed +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/runner/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/runner/daily.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/runner/livekit.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/runner/run.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/runner/types.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/runner/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/base_serializer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/exotel.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/livekit.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/plivo.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/protobuf.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/telnyx.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/twilio.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/ai_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/ai_services.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/anthropic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/anthropic/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/assemblyai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/assemblyai/models.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/assemblyai/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/asyncai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/asyncai/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/nova_sonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/nova_sonic/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/nova_sonic/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/nova_sonic/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/nova_sonic/ready.wav +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws_nova_sonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws_nova_sonic/aws.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws_nova_sonic/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws_nova_sonic/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/common.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/image.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/realtime/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/cartesia/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/cartesia/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/cartesia/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/cerebras/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/cerebras/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/deepgram/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/deepgram/flux/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/deepgram/flux/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/deepgram/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/deepgram/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/deepseek/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/deepseek/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/elevenlabs/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/elevenlabs/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/elevenlabs/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/fal/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/fal/image.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/fal/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/fireworks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/fireworks/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/fish/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/fish/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/gemini_multimodal_live/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/gemini_multimodal_live/events.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/gemini_multimodal_live/file_api.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/gemini_multimodal_live/gemini.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/gladia/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/gladia/config.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/gladia/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/gemini_live/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/gemini_live/file_api.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/gemini_live/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/gemini_live/llm_vertex.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/google.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/image.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/llm_openai.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/llm_vertex.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/rtvi.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/grok/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/grok/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/groq/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/groq/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/groq/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/groq/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/hamsa/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/hamsa/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/heygen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/heygen/api.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/heygen/client.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/heygen/video.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/hume/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/hume/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/image_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/inworld/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/inworld/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/llm_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/lmnt/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/lmnt/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/mcp_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/mem0/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/mem0/memory.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/minimax/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/minimax/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/mistral/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/mistral/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/moondream/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/moondream/vision.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/neuphonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/neuphonic/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/nim/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/nim/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/ollama/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/ollama/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/base_llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/image.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/realtime/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/realtime/events.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/realtime/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/realtime/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime/azure.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime/events.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime_beta/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime_beta/azure.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime_beta/context.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime_beta/events.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime_beta/frames.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime_beta/openai.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openpipe/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openpipe/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openrouter/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openrouter/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/perplexity/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/perplexity/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/piper/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/piper/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/playht/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/playht/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/qwen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/qwen/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/rime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/rime/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/riva/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/riva/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/riva/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/salesforce/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/salesforce/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/sambanova/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/sambanova/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/sambanova/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/sarvam/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/sarvam/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/simli/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/simli/video.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/soniox/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/soniox/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/speechmatics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/speechmatics/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/stt_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/tavus/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/tavus/video.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/together/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/together/llm.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/tts_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/ultravox/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/ultravox/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/vision_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/vistaar/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/websocket_service.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/whisper/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/whisper/base_stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/whisper/stt.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/xtts/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/xtts/tts.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/sync/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/sync/base_notifier.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/sync/event_notifier.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/tests/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/tests/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transcriptions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transcriptions/language.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/base_input.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/base_transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/daily/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/daily/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/daily/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/heygen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/heygen/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/livekit/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/livekit/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/local/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/local/audio.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/local/tk.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/network/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/network/fastapi_websocket.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/network/small_webrtc.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/network/webrtc_connection.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/network/websocket_client.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/network/websocket_server.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/services/daily.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/services/helpers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/services/helpers/daily_rest.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/services/livekit.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/services/tavus.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/smallwebrtc/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/smallwebrtc/connection.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/smallwebrtc/request_handler.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/smallwebrtc/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/tavus/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/tavus/transport.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/websocket/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/websocket/client.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/websocket/fastapi.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/websocket/server.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/whatsapp/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/whatsapp/api.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/whatsapp/client.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/asyncio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/asyncio/task_manager.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/base_object.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/logger_config.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/network.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/redis.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/string.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/text/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/text/base_text_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/text/base_text_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/text/markdown_text_filter.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/text/pattern_pair_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/text/simple_text_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/text/skip_tags_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/time.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/__init__.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/class_decorators.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/conversation_context_provider.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/service_attributes.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/service_decorators.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/setup.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/turn_context_provider.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/turn_trace_observer.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/utils.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/stop_container.yml +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/test_elevenlabs_stt_segmented.py +0 -0
- {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/uv.lock +0 -0
|
@@ -49,7 +49,6 @@ from pipecat.frames.frames import (
|
|
|
49
49
|
OpenAILLMContextAssistantTimestampFrame,
|
|
50
50
|
SpeechControlParamsFrame,
|
|
51
51
|
StartFrame,
|
|
52
|
-
StartInterruptionFrame,
|
|
53
52
|
TextFrame,
|
|
54
53
|
TranscriptDropFrame,
|
|
55
54
|
TranscriptionFrame,
|
|
@@ -473,8 +472,8 @@ class LLMUserContextAggregator(LLMContextResponseAggregator):
|
|
|
473
472
|
frame: The frame to process.
|
|
474
473
|
direction: The direction of frame flow in the pipeline.
|
|
475
474
|
"""
|
|
476
|
-
if isinstance(frame,
|
|
477
|
-
self.logger.debug("Received
|
|
475
|
+
if isinstance(frame, InterruptionFrame):
|
|
476
|
+
self.logger.debug("Received InterruptionFrame")
|
|
478
477
|
await super().process_frame(frame, direction)
|
|
479
478
|
|
|
480
479
|
if isinstance(frame, StartFrame):
|
|
@@ -560,7 +559,7 @@ class LLMUserContextAggregator(LLMContextResponseAggregator):
|
|
|
560
559
|
"Triggering interruption - pushing BotInterruptionFrame and aggregation"
|
|
561
560
|
)
|
|
562
561
|
# await self.push_frame(BotInterruptionFrame(), FrameDirection.UPSTREAM)
|
|
563
|
-
await self.push_frame(
|
|
562
|
+
await self.push_frame(InterruptionFrame(), FrameDirection.DOWNSTREAM)
|
|
564
563
|
self.logger.debug("Pushed BotInterruptionFrame")
|
|
565
564
|
# No interruption config - normal behavior (always push aggregation)
|
|
566
565
|
await self._process_aggregation()
|
|
@@ -596,12 +595,8 @@ class LLMUserContextAggregator(LLMContextResponseAggregator):
|
|
|
596
595
|
"""Notify upstream processors that pending transcripts should be dropped."""
|
|
597
596
|
if self._pending_transcription_ids:
|
|
598
597
|
drop_frame = TranscriptDropFrame(transcript_ids=list(self._pending_transcription_ids))
|
|
599
|
-
self.logger.debug(
|
|
600
|
-
f"Dropping {len(self._pending_transcription_ids)} transcript chunk(s) due to {reason}"
|
|
601
|
-
)
|
|
602
598
|
await self.push_frame(drop_frame, FrameDirection.UPSTREAM)
|
|
603
599
|
self._pending_transcription_ids.clear()
|
|
604
|
-
self._aggregation = ""
|
|
605
600
|
|
|
606
601
|
async def _start(self, frame: StartFrame):
|
|
607
602
|
self._create_aggregation_task()
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
"""DTMF aggregator processor for collecting and flushing DTMF input digits."""
|
|
2
|
+
|
|
1
3
|
import asyncio
|
|
2
4
|
|
|
3
5
|
from pipecat.frames.frames import (
|
|
@@ -8,8 +10,8 @@ from pipecat.frames.frames import (
|
|
|
8
10
|
EndFrame,
|
|
9
11
|
Frame,
|
|
10
12
|
InputDTMFFrame,
|
|
13
|
+
InterruptionFrame,
|
|
11
14
|
StartDTMFCaptureFrame,
|
|
12
|
-
StartInterruptionFrame,
|
|
13
15
|
TranscriptionFrame,
|
|
14
16
|
WaitForDTMFFrame,
|
|
15
17
|
)
|
|
@@ -19,10 +21,11 @@ from pipecat.utils.time import time_now_iso8601
|
|
|
19
21
|
|
|
20
22
|
class DTMFAggregator(FrameProcessor):
|
|
21
23
|
"""Aggregates DTMF frames using idle wait logic.
|
|
24
|
+
|
|
22
25
|
The aggregator accumulates digits from incoming InputDTMFFrame instances.
|
|
23
26
|
It flushes the aggregated digits by emitting a TranscriptionFrame when:
|
|
24
27
|
- No new digit arrives within the specified timeout period,
|
|
25
|
-
- The termination digit (
|
|
28
|
+
- The termination digit ("#") is received, or
|
|
26
29
|
- The number of digits aggregated equals the configured 'digits' value.
|
|
27
30
|
"""
|
|
28
31
|
|
|
@@ -34,7 +37,9 @@ class DTMFAggregator(FrameProcessor):
|
|
|
34
37
|
digits: int = None,
|
|
35
38
|
**kwargs,
|
|
36
39
|
):
|
|
37
|
-
"""
|
|
40
|
+
"""Initialize the DTMF aggregator.
|
|
41
|
+
|
|
42
|
+
:param timeout: Idle timeout in seconds before flushing the aggregated digits.
|
|
38
43
|
:param digits: Number of digits to aggregate before flushing.
|
|
39
44
|
"""
|
|
40
45
|
super().__init__(**kwargs)
|
|
@@ -48,6 +53,7 @@ class DTMFAggregator(FrameProcessor):
|
|
|
48
53
|
self._dtmf_capture_active = False
|
|
49
54
|
|
|
50
55
|
async def process_frame(self, frame: Frame, direction: FrameDirection) -> None:
|
|
56
|
+
"""Process incoming frames and handle DTMF input aggregation."""
|
|
51
57
|
# Handle DTMF frames.
|
|
52
58
|
await super().process_frame(frame, direction)
|
|
53
59
|
|
|
@@ -69,8 +75,8 @@ class DTMFAggregator(FrameProcessor):
|
|
|
69
75
|
self._digit_event.set() # Trigger the timeout handler
|
|
70
76
|
await self._start_dtmf_capture()
|
|
71
77
|
await self.push_frame(frame, direction)
|
|
72
|
-
elif isinstance(frame,
|
|
73
|
-
self.logger.debug("Received
|
|
78
|
+
elif isinstance(frame, InterruptionFrame):
|
|
79
|
+
self.logger.debug("Received InterruptionFrame")
|
|
74
80
|
if self._aggregation:
|
|
75
81
|
await self.flush_aggregation()
|
|
76
82
|
await self._end_dtmf_capture()
|
|
@@ -108,9 +114,7 @@ class DTMFAggregator(FrameProcessor):
|
|
|
108
114
|
if "digits" in settings:
|
|
109
115
|
new_digits = settings["digits"]
|
|
110
116
|
if new_digits != self._digits:
|
|
111
|
-
self.logger.debug(
|
|
112
|
-
f"Updating DTMF digits from {self._digits} to {new_digits}"
|
|
113
|
-
)
|
|
117
|
+
self.logger.debug(f"Updating DTMF digits from {self._digits} to {new_digits}")
|
|
114
118
|
self._digits = new_digits
|
|
115
119
|
settings_changed = True
|
|
116
120
|
|
|
@@ -125,9 +129,7 @@ class DTMFAggregator(FrameProcessor):
|
|
|
125
129
|
new_end_on = set(end_value)
|
|
126
130
|
|
|
127
131
|
if new_end_on != self._end_on:
|
|
128
|
-
self.logger.debug(
|
|
129
|
-
f"Updating DTMF end_on from {self._end_on} to {new_end_on}"
|
|
130
|
-
)
|
|
132
|
+
self.logger.debug(f"Updating DTMF end_on from {self._end_on} to {new_end_on}")
|
|
131
133
|
self._end_on = new_end_on
|
|
132
134
|
settings_changed = True
|
|
133
135
|
|
|
@@ -142,9 +144,7 @@ class DTMFAggregator(FrameProcessor):
|
|
|
142
144
|
new_reset_on = set(reset_value)
|
|
143
145
|
|
|
144
146
|
if new_reset_on != self._reset_on:
|
|
145
|
-
self.logger.debug(
|
|
146
|
-
f"Updating DTMF reset_on from {self._reset_on} to {new_reset_on}"
|
|
147
|
-
)
|
|
147
|
+
self.logger.debug(f"Updating DTMF reset_on from {self._reset_on} to {new_reset_on}")
|
|
148
148
|
self._reset_on = new_reset_on
|
|
149
149
|
settings_changed = True
|
|
150
150
|
|
|
@@ -183,9 +183,7 @@ class DTMFAggregator(FrameProcessor):
|
|
|
183
183
|
def _create_aggregation_task(self, raise_timeout: bool = False) -> None:
|
|
184
184
|
"""Creates the aggregation task if it hasn't been created yet."""
|
|
185
185
|
if not self._aggregation_task:
|
|
186
|
-
self._aggregation_task = self.create_task(
|
|
187
|
-
self._aggregation_task_handler(raise_timeout)
|
|
188
|
-
)
|
|
186
|
+
self._aggregation_task = self.create_task(self._aggregation_task_handler(raise_timeout))
|
|
189
187
|
|
|
190
188
|
async def _stop_aggregation_task(self) -> None:
|
|
191
189
|
"""Stops the aggregation task."""
|
|
@@ -198,9 +196,7 @@ class DTMFAggregator(FrameProcessor):
|
|
|
198
196
|
while True:
|
|
199
197
|
try:
|
|
200
198
|
# Wait for a new digit signal with a timeout.
|
|
201
|
-
await asyncio.wait_for(
|
|
202
|
-
self._digit_event.wait(), timeout=self._idle_timeout
|
|
203
|
-
)
|
|
199
|
+
await asyncio.wait_for(self._digit_event.wait(), timeout=self._idle_timeout)
|
|
204
200
|
self._digit_event.clear()
|
|
205
201
|
except asyncio.TimeoutError:
|
|
206
202
|
# No new digit arrived within the timeout period; flush if needed
|
|
@@ -216,7 +212,7 @@ class DTMFAggregator(FrameProcessor):
|
|
|
216
212
|
aggregated_frame.metadata["push_aggregation"] = True
|
|
217
213
|
|
|
218
214
|
# Send interruption frame (as per original design)
|
|
219
|
-
await self.push_frame(
|
|
215
|
+
await self.push_frame(InterruptionFrame(), FrameDirection.DOWNSTREAM)
|
|
220
216
|
|
|
221
217
|
# Push the transcription frame
|
|
222
218
|
await self.push_frame(aggregated_frame, FrameDirection.DOWNSTREAM)
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/asterisk.py
RENAMED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
# asterisk_ws_serializer.py
|
|
2
|
+
"""Frame serializer for Asterisk WebSocket communication."""
|
|
3
|
+
|
|
2
4
|
import base64
|
|
3
5
|
import json
|
|
4
6
|
from typing import Literal, Optional
|
|
@@ -12,8 +14,8 @@ from pipecat.frames.frames import (
|
|
|
12
14
|
EndFrame,
|
|
13
15
|
Frame,
|
|
14
16
|
InputAudioRawFrame,
|
|
17
|
+
InterruptionFrame,
|
|
15
18
|
StartFrame,
|
|
16
|
-
StartInterruptionFrame,
|
|
17
19
|
TransportMessageFrame,
|
|
18
20
|
TransportMessageUrgentFrame,
|
|
19
21
|
)
|
|
@@ -21,6 +23,8 @@ from pipecat.serializers.base_serializer import FrameSerializer, FrameSerializer
|
|
|
21
23
|
|
|
22
24
|
|
|
23
25
|
class AsteriskFrameSerializer(FrameSerializer):
|
|
26
|
+
"""Serializes Pipecat frames to/from Asterisk WebSocket JSON messages."""
|
|
27
|
+
|
|
24
28
|
class InputParams(BaseModel):
|
|
25
29
|
"""Configuration parameters for AsteriskFrameSerializer.
|
|
26
30
|
|
|
@@ -39,6 +43,12 @@ class AsteriskFrameSerializer(FrameSerializer):
|
|
|
39
43
|
auto_hang_up: bool = False # no-op here; adapter handles hangup
|
|
40
44
|
|
|
41
45
|
def __init__(self, stream_id: str, params: Optional[InputParams] = None):
|
|
46
|
+
"""Initialize the Asterisk frame serializer.
|
|
47
|
+
|
|
48
|
+
Args:
|
|
49
|
+
stream_id: Unique identifier for the media stream.
|
|
50
|
+
params: Configuration parameters for the serializer.
|
|
51
|
+
"""
|
|
42
52
|
self._stream_id = stream_id
|
|
43
53
|
self._params = params or AsteriskFrameSerializer.InputParams()
|
|
44
54
|
self._tel_rate = self._params.telephony_sample_rate
|
|
@@ -49,13 +59,16 @@ class AsteriskFrameSerializer(FrameSerializer):
|
|
|
49
59
|
|
|
50
60
|
@property
|
|
51
61
|
def type(self) -> FrameSerializerType:
|
|
62
|
+
"""Return the serializer type (TEXT for JSON messages)."""
|
|
52
63
|
return FrameSerializerType.TEXT # we send/recv JSON strings
|
|
53
64
|
|
|
54
65
|
async def setup(self, frame: StartFrame):
|
|
66
|
+
"""Setup the serializer with audio parameters from the StartFrame."""
|
|
55
67
|
self._sample_rate = self._params.sample_rate or frame.audio_in_sample_rate
|
|
56
68
|
|
|
57
69
|
# Pipecat -> Adapter (play to caller)
|
|
58
70
|
async def serialize(self, frame: Frame) -> str | bytes | None:
|
|
71
|
+
"""Serialize Pipecat frames to Asterisk WebSocket JSON messages."""
|
|
59
72
|
# On pipeline end, ask bridge to hang up
|
|
60
73
|
if (
|
|
61
74
|
self._params.auto_hang_up
|
|
@@ -64,7 +77,7 @@ class AsteriskFrameSerializer(FrameSerializer):
|
|
|
64
77
|
):
|
|
65
78
|
self._hangup_sent = True
|
|
66
79
|
return json.dumps({"event": "hangup"})
|
|
67
|
-
if isinstance(frame,
|
|
80
|
+
if isinstance(frame, InterruptionFrame):
|
|
68
81
|
return json.dumps({"event": "clear", "streamId": self._stream_id})
|
|
69
82
|
if isinstance(frame, AudioRawFrame):
|
|
70
83
|
pcm = frame.audio
|
|
@@ -114,6 +127,7 @@ class AsteriskFrameSerializer(FrameSerializer):
|
|
|
114
127
|
|
|
115
128
|
# Adapter -> Pipecat (audio from caller)
|
|
116
129
|
async def deserialize(self, data: str | bytes) -> Frame | None:
|
|
130
|
+
"""Deserialize Asterisk WebSocket JSON messages to Pipecat frames."""
|
|
117
131
|
try:
|
|
118
132
|
msg = json.loads(data)
|
|
119
133
|
except Exception:
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/convox.py
RENAMED
|
@@ -22,9 +22,9 @@ from pipecat.frames.frames import (
|
|
|
22
22
|
Frame,
|
|
23
23
|
InputAudioRawFrame,
|
|
24
24
|
InputDTMFFrame,
|
|
25
|
+
InterruptionFrame,
|
|
25
26
|
KeypadEntry,
|
|
26
27
|
StartFrame,
|
|
27
|
-
StartInterruptionFrame,
|
|
28
28
|
TransportMessageFrame,
|
|
29
29
|
TransportMessageUrgentFrame,
|
|
30
30
|
)
|
|
@@ -117,7 +117,7 @@ class ConVoxFrameSerializer(FrameSerializer):
|
|
|
117
117
|
self._call_ended = True
|
|
118
118
|
# Return the callEnd event to be sent via the WebSocket
|
|
119
119
|
return await self._send_call_end_event()
|
|
120
|
-
elif isinstance(frame,
|
|
120
|
+
elif isinstance(frame, InterruptionFrame):
|
|
121
121
|
# Clear/interrupt command for ConVox
|
|
122
122
|
message = {
|
|
123
123
|
"event": "clear",
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/custom.py
RENAMED
|
@@ -28,8 +28,8 @@ from pipecat.frames.frames import (
|
|
|
28
28
|
EndFrame,
|
|
29
29
|
Frame,
|
|
30
30
|
InputAudioRawFrame,
|
|
31
|
+
InterruptionFrame,
|
|
31
32
|
StartFrame,
|
|
32
|
-
StartInterruptionFrame,
|
|
33
33
|
TransportMessageFrame,
|
|
34
34
|
TransportMessageUrgentFrame,
|
|
35
35
|
)
|
|
@@ -121,7 +121,7 @@ class CustomFrameSerializer(FrameSerializer):
|
|
|
121
121
|
Returns:
|
|
122
122
|
Serialized data as JSON string, or None if the frame isn't handled.
|
|
123
123
|
"""
|
|
124
|
-
if isinstance(frame,
|
|
124
|
+
if isinstance(frame, InterruptionFrame):
|
|
125
125
|
# Send clear event to instruct client to discard buffered audio
|
|
126
126
|
answer = {"event": "clear", "stream_sid": self._stream_sid}
|
|
127
127
|
return json.dumps(answer)
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/vistaar/llm.py
RENAMED
|
@@ -14,15 +14,15 @@ from loguru import logger
|
|
|
14
14
|
from pydantic import BaseModel, Field
|
|
15
15
|
|
|
16
16
|
from pipecat.frames.frames import (
|
|
17
|
-
EndFrame,
|
|
18
17
|
CancelFrame,
|
|
18
|
+
EndFrame,
|
|
19
19
|
Frame,
|
|
20
|
+
InterruptionFrame,
|
|
20
21
|
LLMFullResponseEndFrame,
|
|
21
22
|
LLMFullResponseStartFrame,
|
|
22
23
|
LLMMessagesFrame,
|
|
23
24
|
LLMTextFrame,
|
|
24
25
|
LLMUpdateSettingsFrame,
|
|
25
|
-
StartInterruptionFrame,
|
|
26
26
|
)
|
|
27
27
|
from pipecat.processors.aggregators.llm_response import (
|
|
28
28
|
LLMAssistantAggregatorParams,
|
|
@@ -391,7 +391,7 @@ class VistaarLLMService(LLMService):
|
|
|
391
391
|
)
|
|
392
392
|
await self.push_frame(frame, direction)
|
|
393
393
|
return
|
|
394
|
-
elif isinstance(frame,
|
|
394
|
+
elif isinstance(frame, InterruptionFrame):
|
|
395
395
|
await self._handle_interruption()
|
|
396
396
|
await self.push_frame(frame, direction)
|
|
397
397
|
return
|
|
@@ -467,4 +467,4 @@ class VistaarLLMService(LLMService):
|
|
|
467
467
|
|
|
468
468
|
def can_generate_metrics(self) -> bool:
|
|
469
469
|
"""Check if this service can generate processing metrics."""
|
|
470
|
-
return True
|
|
470
|
+
return True
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/base_output.py
RENAMED
|
@@ -50,6 +50,11 @@ from pipecat.utils.time import nanoseconds_to_seconds
|
|
|
50
50
|
|
|
51
51
|
# TODO: When we use GeminiMultimodalLiveLLMService, we need to change this to 0.35 but that creates issue for faster TTS.
|
|
52
52
|
BOT_VAD_STOP_SECS = 0.30
|
|
53
|
+
# For the very first bot utterance (e.g., intro), we can safely
|
|
54
|
+
# detect end-of-speech sooner to improve responsiveness for the
|
|
55
|
+
# user’s first short reply. Keep conservative to avoid mid-utterance
|
|
56
|
+
# false stops when TTS streams quickly.
|
|
57
|
+
FIRST_BOT_VAD_STOP_SECS = 0.08
|
|
53
58
|
|
|
54
59
|
|
|
55
60
|
class BaseOutputTransport(FrameProcessor):
|
|
@@ -406,6 +411,9 @@ class BaseOutputTransport(FrameProcessor):
|
|
|
406
411
|
self._bot_speaking_frame_period = 0.2
|
|
407
412
|
# Last time the bot actually spoke.
|
|
408
413
|
self._bot_speech_last_time = 0
|
|
414
|
+
# Before the first stop event, we use a shorter silence
|
|
415
|
+
# threshold to make the first turn more responsive.
|
|
416
|
+
self._first_stop_pending = True
|
|
409
417
|
|
|
410
418
|
self._audio_task: Optional[asyncio.Task] = None
|
|
411
419
|
self._video_task: Optional[asyncio.Task] = None
|
|
@@ -631,6 +639,10 @@ class BaseOutputTransport(FrameProcessor):
|
|
|
631
639
|
|
|
632
640
|
self._bot_speaking = False
|
|
633
641
|
|
|
642
|
+
# Mark that the first stop has been completed so subsequent
|
|
643
|
+
# stops use the regular (longer) VAD stop threshold.
|
|
644
|
+
self._first_stop_pending = False
|
|
645
|
+
|
|
634
646
|
# Clean audio buffer (there could be tiny left overs if not multiple
|
|
635
647
|
# to our output chunk size).
|
|
636
648
|
self._audio_buffer = bytearray()
|
|
@@ -690,9 +702,14 @@ class BaseOutputTransport(FrameProcessor):
|
|
|
690
702
|
async def without_mixer(vad_stop_secs: float) -> AsyncGenerator[Frame, None]:
|
|
691
703
|
while True:
|
|
692
704
|
try:
|
|
693
|
-
|
|
694
|
-
|
|
705
|
+
# Use a shorter timeout only for the first bot stop to
|
|
706
|
+
# accelerate the initial turn handoff right after the intro.
|
|
707
|
+
timeout = (
|
|
708
|
+
FIRST_BOT_VAD_STOP_SECS
|
|
709
|
+
if getattr(self, "_first_stop_pending", True)
|
|
710
|
+
else BOT_VAD_STOP_SECS
|
|
695
711
|
)
|
|
712
|
+
frame = await asyncio.wait_for(self._audio_queue.get(), timeout=timeout)
|
|
696
713
|
yield frame
|
|
697
714
|
self._audio_queue.task_done()
|
|
698
715
|
except asyncio.TimeoutError:
|
|
@@ -713,7 +730,13 @@ class BaseOutputTransport(FrameProcessor):
|
|
|
713
730
|
except asyncio.QueueEmpty:
|
|
714
731
|
# Notify the bot stopped speaking upstream if necessary.
|
|
715
732
|
diff_time = time.time() - last_frame_time
|
|
716
|
-
|
|
733
|
+
# Use a shorter threshold for the first stop only.
|
|
734
|
+
current_stop_secs = (
|
|
735
|
+
FIRST_BOT_VAD_STOP_SECS
|
|
736
|
+
if getattr(self, "_first_stop_pending", True)
|
|
737
|
+
else BOT_VAD_STOP_SECS
|
|
738
|
+
)
|
|
739
|
+
if diff_time > current_stop_secs:
|
|
717
740
|
await self._bot_stopped_speaking()
|
|
718
741
|
# Generate an audio frame with only the mixer's part.
|
|
719
742
|
frame = OutputAudioRawFrame(
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/1-bug_report.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/2-question.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/5-new-service.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/6-dependency.yml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/config.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/PULL_REQUEST_TEMPLATE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/force_push_to_pypi.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/promote-prod.yml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/publish_test.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/set-traffic-split.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.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.dev832 → dv_pipecat_ai-0.0.85.dev834}/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.dev832 → dv_pipecat_ai-0.0.85.dev834}/create-new-machine/ansible_setup.sh
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/create-new-machine/inventory.ini
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/create-new-machine/replace_env.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/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.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/_helpers.tpl
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/deployment.yaml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/hpa.yaml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/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.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/pdb.yaml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/service.yaml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/values-canary.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/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
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/dv_pipecat_ai.egg-info/SOURCES.txt
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/dv_pipecat_ai.egg-info/requires.txt
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/dv_pipecat_ai.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/__init__.py
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/base_llm_adapter.py
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/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
|