dv-pipecat-ai 0.0.93.dev92__tar.gz → 0.0.93.dev97__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.
- {dv_pipecat_ai-0.0.93.dev92/src/dv_pipecat_ai.egg-info → dv_pipecat_ai-0.0.93.dev97}/PKG-INFO +1 -1
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97/src/dv_pipecat_ai.egg-info}/PKG-INFO +1 -1
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/dv_pipecat_ai.egg-info/SOURCES.txt +1 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/dv_pipecat_ai.egg-info/scm_file_list.json +1 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/dv_pipecat_ai.egg-info/scm_version.json +2 -2
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/aggregators/llm_response.py +0 -30
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/__init__.py +2 -0
- dv_pipecat_ai-0.0.93.dev97/src/pipecat/serializers/maqsam.py +130 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai/llm.py +15 -57
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.dockerignore +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/ISSUE_TEMPLATE/1-bug_report.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/ISSUE_TEMPLATE/2-question.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/ISSUE_TEMPLATE/3-feature_request.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/ISSUE_TEMPLATE/4-service-issue.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/ISSUE_TEMPLATE/5-new-service.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/ISSUE_TEMPLATE/6-dependency.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/ISSUE_TEMPLATE/7-troubleshooting.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/build.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/coverage.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/force_push_to_pypi.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/format.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/github.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/promote-prod.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/publish.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/publish_test.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/python-compatibility.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/set-traffic-split.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/sync-quickstart.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/tests.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.gitignore +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.pre-commit-config.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.readthedocs.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/CHANGELOG.md +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/CHANGELOG.md.template +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/CLAUDE.md +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/COMMUNITY_INTEGRATIONS.md +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/CONTRIBUTING.md +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/DOCKER_BUILD_OPTIMIZATION_SUMMARY.md +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/LICENSE +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/MANIFEST.in +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/README.md +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/SECURITY.md +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/UPSTREAM_SYNC.md +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/ansible.cfg +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/ansible_deployment.sh +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/changelog/4567.fixed.md +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/cleanup_old_containers.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/codecov.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/create-new-machine/ansible.cfg +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/create-new-machine/ansible_setup.sh +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/create-new-machine/inventory.ini +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/create-new-machine/replace_env.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/create-new-machine/setup_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/create_inventory.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/delete_old_dockers.sh +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/deploy.sh +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/deploy_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/docker-compose.dev.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/dump_logs.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/env.example +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/fetch_logs.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/inventory.ini +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/.helmignore +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/Chart.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/_helpers.tpl +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/backendconfig.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/cluster-role.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/deployment.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/hpa.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/ingress.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/keda-api-key-secret.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/keda-scaledobject.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/keda-trigger-auth.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/pdb.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/service.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/values-canary.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/values-prod.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/values-stage.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/values.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/istio/destination-virtualservice.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/merge-code-into-single-file.sh +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/pipecat.png +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/pyproject.toml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/restart.sh +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/restart_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/setup.cfg +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/dv_pipecat_ai.egg-info/dependency_links.txt +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/dv_pipecat_ai.egg-info/requires.txt +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/dv_pipecat_ai.egg-info/top_level.txt +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/base_llm_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/schemas/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/schemas/direct_function.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/schemas/function_schema.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/schemas/tools_schema.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/services/anthropic_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/services/aws_nova_sonic_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/services/bedrock_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/services/gemini_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/services/open_ai_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/services/open_ai_realtime_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/services/open_ai_responses_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/dtmf-0.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/dtmf-1.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/dtmf-2.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/dtmf-3.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/dtmf-4.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/dtmf-5.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/dtmf-6.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/dtmf-7.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/dtmf-8.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/dtmf-9.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/dtmf-pound.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/dtmf-star.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/types.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/utils.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/filters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/filters/aic_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/filters/base_audio_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/filters/koala_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/filters/krisp_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/filters/krisp_viva_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/filters/noisereduce_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/filters/pyrnn_local_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/interruptions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/interruptions/base_interruption_strategy.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/interruptions/min_words_interruption_strategy.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/mixers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/mixers/base_audio_mixer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/mixers/soundfile_mixer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/resamplers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/resamplers/base_audio_resampler.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/resamplers/resampy_resampler.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/resamplers/soxr_resampler.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/resamplers/soxr_stream_resampler.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/turn/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/turn/base_turn_analyzer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/turn/smart_turn/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/turn/smart_turn/base_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/turn/smart_turn/data/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/turn/smart_turn/data/smart-turn-v3.0.onnx +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/turn/smart_turn/fal_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/turn/smart_turn/http_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/turn/smart_turn/local_coreml_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/turn/smart_turn/local_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v2.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v3.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/utils.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/vad/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/vad/data/README.md +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/vad/data/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/vad/data/silero_vad.onnx +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/vad/data/silero_vad_v2.onnx +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/vad/silero.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/vad/vad_analyzer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/clocks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/clocks/base_clock.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/clocks/system_clock.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/extensions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/extensions/ivr/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/extensions/ivr/ivr_navigator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/extensions/voicemail/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/extensions/voicemail/voicemail_detector.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/frames/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/frames/frames.proto +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/frames/frames.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/frames/protobufs/frames_pb2.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/metrics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/metrics/connection_metrics.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/metrics/metrics.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/observers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/observers/base_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/observers/loggers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/observers/loggers/debug_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/observers/loggers/llm_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/observers/loggers/transcription_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/observers/turn_tracking_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/pipeline/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/pipeline/base_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/pipeline/base_task.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/pipeline/llm_switcher.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/pipeline/parallel_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/pipeline/pipeline.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/pipeline/runner.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/pipeline/service_switcher.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/pipeline/sync_parallel_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/pipeline/task.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/pipeline/task_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/pipeline/to_be_updated/merge_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/pipeline/tts_switcher.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/aggregators/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/aggregators/dtmf_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/aggregators/gated.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/aggregators/gated_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/aggregators/gated_open_ai_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/aggregators/llm_context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/aggregators/llm_response_universal.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/aggregators/openai_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/aggregators/sentence.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/aggregators/user_response.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/aggregators/vision_image_frame.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/async_generator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/audio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/audio/audio_buffer_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/consumer_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/dtmf_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/filters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/filters/frame_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/filters/function_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/filters/identity_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/filters/null_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/filters/stt_mute_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/filters/wake_check_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/filters/wake_notifier_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/frame_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/frameworks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/frameworks/langchain.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/frameworks/rtvi.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/frameworks/strands_agents.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/gstreamer/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/gstreamer/pipeline_source.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/idle_frame_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/logger.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/metrics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/metrics/frame_processor_metrics.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/metrics/sentry.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/producer_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/text_transformer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/transcript_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/two_stage_user_idle_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/processors/user_idle_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/py.typed +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/runner/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/runner/daily.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/runner/livekit.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/runner/run.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/runner/types.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/runner/utils.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/asterisk.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/asterisk_chan_websocket_json.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/asterisk_chan_websocket_original.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/base_serializer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/convox.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/custom.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/exotel.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/knowlarity.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/livekit.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/plivo.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/protobuf.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/tatatele.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/telnyx.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/twilio.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/vi.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/voicelink.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/ai_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/ai_services.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/anthropic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/anthropic/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/assemblyai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/assemblyai/models.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/assemblyai/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/asyncai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/asyncai/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/aws/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/aws/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/aws/nova_sonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/aws/nova_sonic/context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/aws/nova_sonic/frames.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/aws/nova_sonic/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/aws/nova_sonic/ready.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/aws/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/aws/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/aws/utils.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/aws_nova_sonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/aws_nova_sonic/aws.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/aws_nova_sonic/context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/aws_nova_sonic/frames.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/azure/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/azure/common.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/azure/image.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/azure/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/azure/realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/azure/realtime/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/azure/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/azure/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/cartesia/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/cartesia/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/cartesia/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/cerebras/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/cerebras/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/deepgram/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/deepgram/flux/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/deepgram/flux/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/deepgram/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/deepgram/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/deepseek/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/deepseek/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/elevenlabs/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/elevenlabs/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/elevenlabs/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/fal/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/fal/image.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/fal/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/fireworks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/fireworks/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/fish/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/fish/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/gemini_multimodal_live/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/gemini_multimodal_live/events.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/gemini_multimodal_live/file_api.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/gemini_multimodal_live/gemini.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/gladia/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/gladia/config.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/gladia/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/google/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/google/frames.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/google/gemini_live/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/google/gemini_live/file_api.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/google/gemini_live/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/google/gemini_live/llm_vertex.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/google/google.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/google/image.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/google/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/google/llm_openai.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/google/llm_vertex.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/google/rtvi.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/google/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/google/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/grok/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/grok/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/groq/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/groq/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/groq/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/groq/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/hamsa/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/hamsa/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/hamsa/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/heygen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/heygen/api.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/heygen/client.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/heygen/video.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/hume/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/hume/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/image_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/inworld/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/inworld/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/llm_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/lmnt/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/lmnt/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/mcp_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/mem0/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/mem0/memory.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/minimax/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/minimax/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/mistral/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/mistral/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/moondream/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/moondream/vision.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/neuphonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/neuphonic/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/nim/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/nim/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/ollama/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/ollama/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai/base_llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai/image.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai/realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai/realtime/context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai/realtime/events.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai/realtime/frames.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai/realtime/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai/responses/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai/responses/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai_realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai_realtime/azure.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai_realtime/context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai_realtime/events.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai_realtime/frames.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai_realtime_beta/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai_realtime_beta/azure.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai_realtime_beta/context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai_realtime_beta/events.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai_realtime_beta/frames.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai_realtime_beta/openai.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openpipe/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openpipe/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openrouter/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openrouter/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/perplexity/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/perplexity/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/piper/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/piper/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/playht/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/playht/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/qwen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/qwen/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/rime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/rime/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/ringg/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/ringg/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/ringg_qwen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/ringg_qwen/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/riva/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/riva/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/riva/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/salesforce/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/salesforce/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/sambanova/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/sambanova/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/sambanova/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/sarvam/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/sarvam/_sdk.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/sarvam/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/sarvam/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/simli/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/simli/video.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/soniox/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/soniox/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/speechmatics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/speechmatics/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/stt_latency.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/stt_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/tavus/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/tavus/video.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/together/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/together/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/tts_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/ultravox/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/ultravox/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/vision_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/vistaar/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/vistaar/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/websocket_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/whisper/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/whisper/base_stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/whisper/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/xtts/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/xtts/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/sync/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/sync/base_notifier.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/sync/event_notifier.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/tests/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/tests/utils.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transcriptions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transcriptions/language.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/base_input.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/base_output.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/base_transport.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/daily/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/daily/transport.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/daily/utils.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/heygen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/heygen/transport.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/livekit/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/livekit/transport.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/local/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/local/audio.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/local/tk.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/network/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/network/fastapi_websocket.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/network/small_webrtc.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/network/webrtc_connection.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/network/websocket_client.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/network/websocket_server.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/services/daily.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/services/helpers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/services/helpers/daily_rest.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/services/livekit.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/services/tavus.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/smallwebrtc/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/smallwebrtc/connection.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/smallwebrtc/request_handler.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/smallwebrtc/transport.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/tavus/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/tavus/transport.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/websocket/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/websocket/client.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/websocket/fastapi.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/websocket/server.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/whatsapp/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/whatsapp/api.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/transports/whatsapp/client.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/asyncio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/asyncio/task_manager.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/base_object.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/logger_config.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/network.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/redis.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/string.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/text/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/text/base_text_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/text/base_text_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/text/markdown_text_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/text/pattern_pair_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/text/simple_text_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/text/skip_tags_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/time.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/tracing/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/tracing/class_decorators.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/tracing/conversation_context_provider.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/tracing/service_attributes.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/tracing/service_decorators.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/tracing/setup.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/tracing/turn_context_provider.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/tracing/turn_trace_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/utils/utils.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/stop_container.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/test_elevenlabs_stt_segmented.py +0 -0
- {dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/uv.lock +0 -0
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/dv_pipecat_ai.egg-info/SOURCES.txt
RENAMED
|
@@ -252,6 +252,7 @@ src/pipecat/serializers/custom.py
|
|
|
252
252
|
src/pipecat/serializers/exotel.py
|
|
253
253
|
src/pipecat/serializers/knowlarity.py
|
|
254
254
|
src/pipecat/serializers/livekit.py
|
|
255
|
+
src/pipecat/serializers/maqsam.py
|
|
255
256
|
src/pipecat/serializers/plivo.py
|
|
256
257
|
src/pipecat/serializers/protobuf.py
|
|
257
258
|
src/pipecat/serializers/tatatele.py
|
|
@@ -299,6 +299,7 @@
|
|
|
299
299
|
"src/pipecat/serializers/voicelink.py",
|
|
300
300
|
"src/pipecat/serializers/convox.py",
|
|
301
301
|
"src/pipecat/serializers/exotel.py",
|
|
302
|
+
"src/pipecat/serializers/maqsam.py",
|
|
302
303
|
"src/pipecat/serializers/protobuf.py",
|
|
303
304
|
"src/pipecat/services/tts_service.py",
|
|
304
305
|
"src/pipecat/services/mcp_service.py",
|
|
@@ -872,20 +872,6 @@ class LLMAssistantContextAggregator(LLMContextResponseAggregator):
|
|
|
872
872
|
self._function_calls_in_progress: Dict[str, Optional[FunctionCallInProgressFrame]] = {}
|
|
873
873
|
self._context_updated_tasks: Set[asyncio.Task] = set()
|
|
874
874
|
|
|
875
|
-
# Monotonic id of the current LLM response cycle, bumped on every
|
|
876
|
-
# LLMFullResponseStartFrame. Used to tell whether spoken text was
|
|
877
|
-
# produced in the SAME completion that issued a tool call (so it should
|
|
878
|
-
# be folded into that tool-call message) versus a later continuation
|
|
879
|
-
# response (which must remain a separate message). See
|
|
880
|
-
# `handle_function_call_in_progress` / `handle_aggregation` in the
|
|
881
|
-
# OpenAI subclass.
|
|
882
|
-
self._response_seq = 0
|
|
883
|
-
# Response-seq stamped onto the current text aggregation when it starts.
|
|
884
|
-
self._aggregation_seq: Optional[int] = None
|
|
885
|
-
# (message, response_seq) of a content-less tool-call message that may
|
|
886
|
-
# still absorb same-turn spoken text; consumed by `handle_aggregation`.
|
|
887
|
-
self._pending_tool_call_merge: Optional[tuple] = None
|
|
888
|
-
|
|
889
875
|
@property
|
|
890
876
|
def has_function_calls_in_progress(self) -> bool:
|
|
891
877
|
"""Check if there are any function calls currently in progress.
|
|
@@ -1100,7 +1086,6 @@ class LLMAssistantContextAggregator(LLMContextResponseAggregator):
|
|
|
1100
1086
|
|
|
1101
1087
|
async def _handle_llm_start(self, _: LLMFullResponseStartFrame):
|
|
1102
1088
|
self._started += 1
|
|
1103
|
-
self._response_seq += 1
|
|
1104
1089
|
|
|
1105
1090
|
async def _handle_llm_end(self, _: LLMFullResponseEndFrame):
|
|
1106
1091
|
self._started -= 1
|
|
@@ -1112,21 +1097,6 @@ class LLMAssistantContextAggregator(LLMContextResponseAggregator):
|
|
|
1112
1097
|
if isinstance(frame, TTSTextFrame) and not frame.add_to_llm_context:
|
|
1113
1098
|
return
|
|
1114
1099
|
|
|
1115
|
-
if not self._aggregation:
|
|
1116
|
-
# First text frame of a new aggregation: remember which response
|
|
1117
|
-
# cycle it belongs to, so we can later decide whether it should be
|
|
1118
|
-
# folded into a same-turn tool-call message.
|
|
1119
|
-
self._aggregation_seq = self._response_seq
|
|
1120
|
-
elif self._aggregation_seq != self._response_seq:
|
|
1121
|
-
# A newer response cycle produced text before the previous
|
|
1122
|
-
# aggregation was flushed — e.g. a tool-result continuation (the
|
|
1123
|
-
# FunctionCallResultFrame is a SystemFrame) racing a long TTS
|
|
1124
|
-
# playback that is still holding the response-end / bot-stopped
|
|
1125
|
-
# frames. The buffer now mixes two response cycles, so it must NOT
|
|
1126
|
-
# be folded into the earlier turn's tool-call message; mark it
|
|
1127
|
-
# un-mergeable.
|
|
1128
|
-
self._aggregation_seq = None
|
|
1129
|
-
|
|
1130
1100
|
if self._params.expect_stripped_words:
|
|
1131
1101
|
self._aggregation += f" {frame.text}" if self._aggregation else frame.text
|
|
1132
1102
|
else:
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/serializers/__init__.py
RENAMED
|
@@ -6,6 +6,7 @@ from .convox import ConVoxFrameSerializer
|
|
|
6
6
|
from .custom import CustomFrameSerializer
|
|
7
7
|
from .exotel import ExotelFrameSerializer
|
|
8
8
|
from .knowlarity import KnowlarityFrameSerializer
|
|
9
|
+
from .maqsam import MaqsamFrameSerializer
|
|
9
10
|
from .plivo import PlivoFrameSerializer
|
|
10
11
|
from .telnyx import TelnyxFrameSerializer
|
|
11
12
|
from .tatatele import TataTeleFrameSerializer
|
|
@@ -23,6 +24,7 @@ __all__ = [
|
|
|
23
24
|
"CustomFrameSerializer",
|
|
24
25
|
"ExotelFrameSerializer",
|
|
25
26
|
"KnowlarityFrameSerializer",
|
|
27
|
+
"MaqsamFrameSerializer",
|
|
26
28
|
"PlivoFrameSerializer",
|
|
27
29
|
"TataTeleFrameSerializer",
|
|
28
30
|
"TelnyxFrameSerializer",
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"""Maqsam Voice Agent WebSocket protocol serializer for Pipecat."""
|
|
2
|
+
|
|
3
|
+
import base64
|
|
4
|
+
import json
|
|
5
|
+
from typing import Optional
|
|
6
|
+
|
|
7
|
+
from loguru import logger
|
|
8
|
+
from pydantic import BaseModel
|
|
9
|
+
|
|
10
|
+
from pipecat.audio.dtmf.types import KeypadEntry
|
|
11
|
+
from pipecat.audio.utils import create_stream_resampler, pcm_to_ulaw, ulaw_to_pcm
|
|
12
|
+
from pipecat.frames.frames import (
|
|
13
|
+
AudioRawFrame,
|
|
14
|
+
CancelFrame,
|
|
15
|
+
EndFrame,
|
|
16
|
+
Frame,
|
|
17
|
+
InputAudioRawFrame,
|
|
18
|
+
InputDTMFFrame,
|
|
19
|
+
InterruptionFrame,
|
|
20
|
+
OutputTransportMessageFrame,
|
|
21
|
+
OutputTransportMessageUrgentFrame,
|
|
22
|
+
StartFrame,
|
|
23
|
+
)
|
|
24
|
+
from pipecat.serializers.base_serializer import FrameSerializer, FrameSerializerType
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
class MaqsamFrameSerializer(FrameSerializer):
|
|
28
|
+
"""Serializer for the Maqsam Voice Agent WebSocket protocol.
|
|
29
|
+
|
|
30
|
+
Converts between Pipecat frames and Maqsam's JSON messages. Every Maqsam message carries a
|
|
31
|
+
``type`` key (no Twilio-style ``event`` field) and audio is Base64-encoded G.711 mu-law at
|
|
32
|
+
8000 Hz, mono.
|
|
33
|
+
|
|
34
|
+
Key differences from Twilio/VoiceLink:
|
|
35
|
+
- Messages are keyed by ``type`` (``audio.input`` / ``response.stream``), not ``event``.
|
|
36
|
+
- Audio: mu-law (PCMU), 8000 Hz (VoiceLink is A-law).
|
|
37
|
+
- Barge-in is signalled by ``speech.started`` (Maqsam then flushes already-sent bot audio),
|
|
38
|
+
which is the analog of Twilio's ``clear``.
|
|
39
|
+
- Audio messages carry no stream id; ``stream_sid`` is accepted for factory parity only.
|
|
40
|
+
|
|
41
|
+
The ``session.setup`` -> ``session.ready`` handshake and ``call.event`` (started) are handled
|
|
42
|
+
in the WebSocket connection handler before the Pipecat pipeline runs, not here.
|
|
43
|
+
"""
|
|
44
|
+
|
|
45
|
+
class InputParams(BaseModel):
|
|
46
|
+
"""Configuration for MaqsamFrameSerializer.
|
|
47
|
+
|
|
48
|
+
Parameters:
|
|
49
|
+
maqsam_sample_rate: Sample rate used by Maqsam, defaults to 8000 Hz.
|
|
50
|
+
sample_rate: Optional override for the pipeline input sample rate.
|
|
51
|
+
auto_hang_up: Send ``call.hangup`` to Maqsam on EndFrame/CancelFrame.
|
|
52
|
+
"""
|
|
53
|
+
|
|
54
|
+
maqsam_sample_rate: int = 8000
|
|
55
|
+
sample_rate: Optional[int] = None
|
|
56
|
+
auto_hang_up: bool = True
|
|
57
|
+
|
|
58
|
+
def __init__(self, stream_sid: Optional[str] = None, params: Optional[InputParams] = None):
|
|
59
|
+
self._params = params or MaqsamFrameSerializer.InputParams()
|
|
60
|
+
self._stream_sid = stream_sid # unused on the wire; kept for factory signature parity
|
|
61
|
+
self._maqsam_sample_rate = self._params.maqsam_sample_rate
|
|
62
|
+
self._sample_rate = 0 # pipeline input rate, resolved in setup()
|
|
63
|
+
self._input_resampler = create_stream_resampler()
|
|
64
|
+
self._output_resampler = create_stream_resampler()
|
|
65
|
+
self._hangup_attempted = False
|
|
66
|
+
|
|
67
|
+
@property
|
|
68
|
+
def type(self) -> FrameSerializerType:
|
|
69
|
+
return FrameSerializerType.TEXT
|
|
70
|
+
|
|
71
|
+
async def setup(self, frame: StartFrame):
|
|
72
|
+
self._sample_rate = self._params.sample_rate or frame.audio_in_sample_rate
|
|
73
|
+
|
|
74
|
+
async def serialize(self, frame: Frame) -> str | bytes | None:
|
|
75
|
+
if (
|
|
76
|
+
self._params.auto_hang_up
|
|
77
|
+
and not self._hangup_attempted
|
|
78
|
+
and isinstance(frame, (EndFrame, CancelFrame))
|
|
79
|
+
):
|
|
80
|
+
# Normal end: tell Maqsam to hang up. Behaves like closing the socket, but explicit.
|
|
81
|
+
self._hangup_attempted = True
|
|
82
|
+
return json.dumps({"type": "call.hangup"})
|
|
83
|
+
elif isinstance(frame, InterruptionFrame):
|
|
84
|
+
# Customer barge-in: flush bot audio already buffered on Maqsam's side.
|
|
85
|
+
return json.dumps({"type": "speech.started"})
|
|
86
|
+
elif isinstance(frame, AudioRawFrame):
|
|
87
|
+
# Output: PCM at the frame's rate -> 8kHz mu-law for Maqsam.
|
|
88
|
+
serialized_data = await pcm_to_ulaw(
|
|
89
|
+
frame.audio, frame.sample_rate, self._maqsam_sample_rate, self._output_resampler
|
|
90
|
+
)
|
|
91
|
+
if serialized_data is None or len(serialized_data) == 0:
|
|
92
|
+
return None
|
|
93
|
+
payload = base64.b64encode(serialized_data).decode("utf-8")
|
|
94
|
+
return json.dumps({"type": "response.stream", "data": {"audio": payload}})
|
|
95
|
+
elif isinstance(frame, (OutputTransportMessageFrame, OutputTransportMessageUrgentFrame)):
|
|
96
|
+
# Lets the handler emit raw Maqsam control messages (call.mark, call.redirect, ...).
|
|
97
|
+
return json.dumps(frame.message)
|
|
98
|
+
|
|
99
|
+
return None
|
|
100
|
+
|
|
101
|
+
async def deserialize(self, data: str | bytes) -> Frame | None:
|
|
102
|
+
message = json.loads(data)
|
|
103
|
+
message_type = message.get("type")
|
|
104
|
+
|
|
105
|
+
if message_type == "audio.input":
|
|
106
|
+
payload_base64 = (message.get("data") or {}).get("audio")
|
|
107
|
+
if not payload_base64:
|
|
108
|
+
return None
|
|
109
|
+
payload = base64.b64decode(payload_base64)
|
|
110
|
+
# Input: Maqsam's 8kHz mu-law -> PCM at the pipeline input rate.
|
|
111
|
+
deserialized_data = await ulaw_to_pcm(
|
|
112
|
+
payload, self._maqsam_sample_rate, self._sample_rate, self._input_resampler
|
|
113
|
+
)
|
|
114
|
+
if deserialized_data is None or len(deserialized_data) == 0:
|
|
115
|
+
return None
|
|
116
|
+
return InputAudioRawFrame(
|
|
117
|
+
audio=deserialized_data, num_channels=1, sample_rate=self._sample_rate
|
|
118
|
+
)
|
|
119
|
+
elif message_type == "call.dtmf":
|
|
120
|
+
digit = (message.get("data") or {}).get("digit")
|
|
121
|
+
if digit is None:
|
|
122
|
+
return None
|
|
123
|
+
try:
|
|
124
|
+
return InputDTMFFrame(KeypadEntry(str(digit)))
|
|
125
|
+
except ValueError:
|
|
126
|
+
logger.warning(f"Invalid Maqsam DTMF digit received: {digit}")
|
|
127
|
+
return None
|
|
128
|
+
|
|
129
|
+
# call.mark echoes and any other control messages are handled outside the serializer.
|
|
130
|
+
return None
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/services/openai/llm.py
RENAMED
|
@@ -126,38 +126,6 @@ class OpenAIAssistantContextAggregator(LLMAssistantContextAggregator):
|
|
|
126
126
|
tool usage tracking, and image message handling.
|
|
127
127
|
"""
|
|
128
128
|
|
|
129
|
-
async def handle_aggregation(self, aggregation: str):
|
|
130
|
-
"""Add the aggregated assistant text to the context.
|
|
131
|
-
|
|
132
|
-
When the assistant speaks text AND issues a tool call in the same LLM
|
|
133
|
-
completion, the tool-call message (and its result) are written to the
|
|
134
|
-
context immediately, while this spoken-text aggregation is only flushed
|
|
135
|
-
when the bot stops speaking — i.e. after the tool result is already in
|
|
136
|
-
the context. Appending the text as a trailing message then produces a
|
|
137
|
-
scrambled order (assistant{tool_calls} -> tool{result} ->
|
|
138
|
-
assistant{text}) that makes the post-function continuation re-speak the
|
|
139
|
-
same line.
|
|
140
|
-
|
|
141
|
-
To keep OpenAI's canonical ordering (assistant{content, tool_calls} ->
|
|
142
|
-
tool{result}), fold the text into that content-less tool-call message
|
|
143
|
-
instead. Only do so when the text was produced in the SAME response
|
|
144
|
-
cycle that issued the call (``_aggregation_seq`` matches the seq stamped
|
|
145
|
-
on the pending tool call); text from a later continuation response is a
|
|
146
|
-
genuine reply to the result and is appended normally.
|
|
147
|
-
"""
|
|
148
|
-
pending = self._pending_tool_call_merge
|
|
149
|
-
self._pending_tool_call_merge = None
|
|
150
|
-
if (
|
|
151
|
-
pending is not None
|
|
152
|
-
and pending[1] == self._aggregation_seq
|
|
153
|
-
and not pending[0].get("content")
|
|
154
|
-
and pending[0] in self._context.messages
|
|
155
|
-
):
|
|
156
|
-
pending[0]["content"] = aggregation
|
|
157
|
-
return
|
|
158
|
-
|
|
159
|
-
self._context.add_message({"role": "assistant", "content": aggregation})
|
|
160
|
-
|
|
161
129
|
async def handle_function_call_in_progress(self, frame: FunctionCallInProgressFrame):
|
|
162
130
|
"""Handle a function call in progress.
|
|
163
131
|
|
|
@@ -167,20 +135,21 @@ class OpenAIAssistantContextAggregator(LLMAssistantContextAggregator):
|
|
|
167
135
|
Args:
|
|
168
136
|
frame: Frame containing function call progress information.
|
|
169
137
|
"""
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
"
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
138
|
+
self._context.add_message(
|
|
139
|
+
{
|
|
140
|
+
"role": "assistant",
|
|
141
|
+
"tool_calls": [
|
|
142
|
+
{
|
|
143
|
+
"id": frame.tool_call_id,
|
|
144
|
+
"function": {
|
|
145
|
+
"name": frame.function_name,
|
|
146
|
+
"arguments": json.dumps(frame.arguments),
|
|
147
|
+
},
|
|
148
|
+
"type": "function",
|
|
149
|
+
}
|
|
150
|
+
],
|
|
151
|
+
}
|
|
152
|
+
)
|
|
184
153
|
self._context.add_message(
|
|
185
154
|
{
|
|
186
155
|
"role": "tool",
|
|
@@ -189,17 +158,6 @@ class OpenAIAssistantContextAggregator(LLMAssistantContextAggregator):
|
|
|
189
158
|
}
|
|
190
159
|
)
|
|
191
160
|
|
|
192
|
-
# If the assistant also speaks text in this same response cycle, that
|
|
193
|
-
# text is committed only once the bot stops speaking — after this
|
|
194
|
-
# content-less tool-call message. Remember the first such call of the
|
|
195
|
-
# cycle so `handle_aggregation` can fold the spoken text into it instead
|
|
196
|
-
# of letting it land after the tool result. (See `handle_aggregation`.)
|
|
197
|
-
if (
|
|
198
|
-
self._pending_tool_call_merge is None
|
|
199
|
-
or self._pending_tool_call_merge[1] != self._response_seq
|
|
200
|
-
):
|
|
201
|
-
self._pending_tool_call_merge = (tool_call_message, self._response_seq)
|
|
202
|
-
|
|
203
161
|
async def handle_function_call_result(self, frame: FunctionCallResultFrame):
|
|
204
162
|
"""Handle the result of a function call.
|
|
205
163
|
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/ISSUE_TEMPLATE/1-bug_report.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/ISSUE_TEMPLATE/2-question.yml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/ISSUE_TEMPLATE/4-service-issue.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/ISSUE_TEMPLATE/5-new-service.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/ISSUE_TEMPLATE/6-dependency.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/force_push_to_pypi.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/promote-prod.yml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/publish_test.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.github/workflows/set-traffic-split.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/.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.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/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
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/create-new-machine/ansible_setup.sh
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/create-new-machine/replace_env.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/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.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/_helpers.tpl
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/cluster-role.yaml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/deployment.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/ingress.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/dv-pipecat/templates/service.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/k8s/istio/destination-virtualservice.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
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/dv_pipecat_ai.egg-info/requires.txt
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/dv_pipecat_ai.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/base_llm_adapter.py
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/schemas/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/adapters/services/__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
|
{dv_pipecat_ai-0.0.93.dev92 → dv_pipecat_ai-0.0.93.dev97}/src/pipecat/audio/dtmf/__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
|