dv-pipecat-ai 0.0.93.dev134__tar.gz → 0.0.93.dev136__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.dev134/src/dv_pipecat_ai.egg-info → dv_pipecat_ai-0.0.93.dev136}/PKG-INFO +1 -1
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136/src/dv_pipecat_ai.egg-info}/PKG-INFO +1 -1
- dv_pipecat_ai-0.0.93.dev136/src/dv_pipecat_ai.egg-info/scm_version.json +8 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/tts.py +153 -149
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/maya/tts.py +17 -2
- dv_pipecat_ai-0.0.93.dev134/src/dv_pipecat_ai.egg-info/scm_version.json +0 -8
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.dockerignore +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/1-bug_report.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/2-question.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/3-feature_request.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/4-service-issue.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/5-new-service.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/6-dependency.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/7-troubleshooting.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/build.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/coverage.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/force_push_to_pypi.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/format.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/github.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/publish.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/publish_test.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/python-compatibility.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/set-traffic-split.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/sync-quickstart.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/tests.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.gitignore +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.pre-commit-config.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.readthedocs.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/CHANGELOG.md +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/CHANGELOG.md.template +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/CLAUDE.md +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/COMMUNITY_INTEGRATIONS.md +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/CONTRIBUTING.md +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/DOCKER_BUILD_OPTIMIZATION_SUMMARY.md +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/LICENSE +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/MANIFEST.in +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/README.md +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/SECURITY.md +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/UPSTREAM_SYNC.md +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/ansible.cfg +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/ansible_deployment.sh +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/changelog/4567.fixed.md +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/cleanup_old_containers.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/codecov.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/create-new-machine/ansible.cfg +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/create-new-machine/ansible_setup.sh +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/create-new-machine/inventory.ini +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/create-new-machine/replace_env.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/create-new-machine/setup_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/create_inventory.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/delete_old_dockers.sh +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/deploy.sh +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/deploy_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/docker-compose.dev.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/dump_logs.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/env.example +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/fetch_logs.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/inventory.ini +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/.helmignore +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/Chart.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/_helpers.tpl +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/backendconfig.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/cluster-role.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/deployment.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/hpa.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/ingress.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/keda-api-key-secret.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/keda-scaledobject.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/keda-trigger-auth.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/pdb.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/service.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/values-canary.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/values-prod.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/values-stage.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/values.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/k8s/istio/destination-virtualservice.yaml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/merge-code-into-single-file.sh +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/pipecat.png +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/pyproject.toml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/restart.sh +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/restart_playbook.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/setup.cfg +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/dv_pipecat_ai.egg-info/SOURCES.txt +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/dv_pipecat_ai.egg-info/dependency_links.txt +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/dv_pipecat_ai.egg-info/requires.txt +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/dv_pipecat_ai.egg-info/scm_file_list.json +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/dv_pipecat_ai.egg-info/top_level.txt +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/base_llm_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/schemas/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/schemas/direct_function.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/schemas/function_schema.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/schemas/tools_schema.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/anthropic_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/aws_nova_sonic_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/bedrock_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/gemini_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/open_ai_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/open_ai_realtime_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/open_ai_responses_adapter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-0.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-1.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-2.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-3.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-4.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-5.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-6.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-7.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-8.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-9.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-pound.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-star.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/types.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/utils.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/aic_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/base_audio_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/koala_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/krisp_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/krisp_viva_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/noisereduce_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/pyrnn_local_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/interruptions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/interruptions/base_interruption_strategy.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/interruptions/min_words_interruption_strategy.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/mixers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/mixers/base_audio_mixer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/mixers/soundfile_mixer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/resamplers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/resamplers/base_audio_resampler.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/resamplers/resampy_resampler.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/resamplers/soxr_resampler.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/resamplers/soxr_stream_resampler.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/base_turn_analyzer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/base_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/data/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/data/smart-turn-v3.0.onnx +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/fal_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/http_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/local_coreml_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/local_smart_turn.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v2.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v3.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/utils.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/vad/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/vad/data/README.md +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/vad/data/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/vad/data/silero_vad.onnx +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/vad/data/silero_vad_v2.onnx +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/vad/silero.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/vad/vad_analyzer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/clocks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/clocks/base_clock.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/clocks/system_clock.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/extensions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/extensions/ivr/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/extensions/ivr/ivr_navigator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/extensions/voicemail/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/extensions/voicemail/voicemail_detector.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/frames/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/frames/frames.proto +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/frames/frames.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/frames/protobufs/frames_pb2.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/metrics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/metrics/connection_metrics.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/metrics/metrics.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/base_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/loggers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/loggers/debug_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/loggers/llm_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/loggers/transcription_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/turn_tracking_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/base_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/base_task.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/llm_switcher.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/parallel_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/pipeline.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/runner.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/service_switcher.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/sync_parallel_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/task.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/task_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/to_be_updated/merge_pipeline.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/tts_switcher.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/dtmf_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/gated.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/gated_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/gated_open_ai_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/llm_context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/llm_response.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/llm_response_universal.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/openai_llm_context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/sentence.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/user_response.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/vision_image_frame.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/async_generator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/audio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/audio/audio_buffer_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/consumer_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/dtmf_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/frame_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/function_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/identity_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/null_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/stt_mute_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/wake_check_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/wake_notifier_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/frame_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/frameworks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/frameworks/langchain.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/frameworks/rtvi.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/frameworks/strands_agents.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/gstreamer/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/gstreamer/pipeline_source.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/idle_frame_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/logger.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/metrics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/metrics/frame_processor_metrics.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/metrics/sentry.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/producer_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/text_transformer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/transcript_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/two_stage_user_idle_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/user_idle_processor.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/py.typed +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/runner/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/runner/daily.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/runner/livekit.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/runner/run.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/runner/types.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/runner/utils.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/asterisk.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/asterisk_chan_websocket_json.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/asterisk_chan_websocket_original.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/base_serializer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/convox.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/custom.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/exotel.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/knowlarity.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/livekit.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/maqsam.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/plivo.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/protobuf.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/tatatele.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/telnyx.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/twilio.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/vi.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/voicelink.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ai_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ai_services.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/anthropic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/anthropic/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/assemblyai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/assemblyai/models.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/assemblyai/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/asyncai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/asyncai/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/nova_sonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/nova_sonic/context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/nova_sonic/frames.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/nova_sonic/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/nova_sonic/ready.wav +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/utils.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws_nova_sonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws_nova_sonic/aws.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws_nova_sonic/context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws_nova_sonic/frames.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/common.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/image.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/realtime/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/cartesia/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/cartesia/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/cartesia/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/cerebras/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/cerebras/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/deepgram/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/deepgram/flux/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/deepgram/flux/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/deepgram/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/deepgram/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/deepseek/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/deepseek/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/elevenlabs/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/elevenlabs/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/elevenlabs/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/fal/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/fal/image.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/fal/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/fireworks/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/fireworks/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/fish/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/fish/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/gemini_multimodal_live/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/gemini_multimodal_live/events.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/gemini_multimodal_live/file_api.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/gemini_multimodal_live/gemini.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/gladia/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/gladia/config.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/gladia/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/frames.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/gemini_live/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/gemini_live/file_api.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/gemini_live/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/gemini_live/llm_vertex.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/google.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/image.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/llm_openai.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/llm_vertex.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/rtvi.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/grok/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/grok/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/groq/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/groq/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/groq/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/groq/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/hamsa/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/hamsa/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/hamsa/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/heygen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/heygen/api.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/heygen/client.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/heygen/video.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/hume/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/hume/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/image_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/inworld/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/inworld/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/llm_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/lmnt/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/lmnt/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/maya/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/mcp_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/mem0/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/mem0/memory.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/minimax/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/minimax/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/mistral/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/mistral/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/moondream/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/moondream/vision.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/neuphonic/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/neuphonic/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/nim/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/nim/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ollama/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ollama/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/base_llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/image.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/live/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/live/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/realtime/context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/realtime/events.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/realtime/frames.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/realtime/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/responses/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/responses/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime/azure.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime/context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime/events.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime/frames.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime_beta/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime_beta/azure.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime_beta/context.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime_beta/events.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime_beta/frames.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime_beta/openai.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openpipe/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openpipe/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openrouter/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openrouter/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/perplexity/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/perplexity/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/piper/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/piper/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/playht/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/playht/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/qwen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/qwen/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/rime/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/rime/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ringg/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ringg/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ringg_qwen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ringg_qwen/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/riva/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/riva/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/riva/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/salesforce/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/salesforce/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/sambanova/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/sambanova/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/sambanova/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/sarvam/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/sarvam/_sdk.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/sarvam/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/sarvam/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/simli/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/simli/video.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/soniox/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/soniox/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/speechmatics/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/speechmatics/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/stt_latency.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/stt_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/tavus/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/tavus/video.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/together/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/together/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/tts_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ultravox/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ultravox/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/vision_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/vistaar/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/vistaar/llm.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/websocket_service.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/whisper/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/whisper/base_stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/whisper/stt.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/xtts/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/xtts/tts.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/sync/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/sync/base_notifier.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/sync/event_notifier.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/tests/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/tests/utils.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transcriptions/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transcriptions/language.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/base_input.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/base_output.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/base_transport.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/daily/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/daily/transport.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/daily/utils.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/heygen/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/heygen/transport.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/livekit/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/livekit/transport.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/local/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/local/audio.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/local/tk.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/network/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/network/fastapi_websocket.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/network/small_webrtc.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/network/webrtc_connection.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/network/websocket_client.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/network/websocket_server.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/services/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/services/daily.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/services/helpers/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/services/helpers/daily_rest.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/services/livekit.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/services/tavus.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/smallwebrtc/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/smallwebrtc/connection.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/smallwebrtc/request_handler.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/smallwebrtc/transport.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/tavus/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/tavus/transport.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/websocket/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/websocket/client.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/websocket/fastapi.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/websocket/server.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/whatsapp/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/whatsapp/api.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/whatsapp/client.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/asyncio/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/asyncio/task_manager.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/base_object.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/logger_config.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/network.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/redis.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/string.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/text/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/text/base_text_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/text/base_text_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/text/markdown_text_filter.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/text/pattern_pair_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/text/simple_text_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/text/skip_tags_aggregator.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/time.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/__init__.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/class_decorators.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/conversation_context_provider.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/service_attributes.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/service_decorators.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/setup.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/turn_context_provider.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/turn_trace_observer.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/utils.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/stop_container.yml +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/test_elevenlabs_stt_segmented.py +0 -0
- {dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/uv.lock +0 -0
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/tts.py
RENAMED
|
@@ -11,7 +11,8 @@ offering both HTTP-based synthesis with SSML support and streaming synthesis
|
|
|
11
11
|
for real-time applications.
|
|
12
12
|
|
|
13
13
|
It also includes GeminiTTSService which uses Gemini's TTS-specific models
|
|
14
|
-
|
|
14
|
+
(e.g. gemini-2.5-flash-tts) over the Cloud TTS streaming API for natural
|
|
15
|
+
voice control with low-latency synthesis.
|
|
15
16
|
"""
|
|
16
17
|
|
|
17
18
|
import json
|
|
@@ -30,7 +31,6 @@ from pydantic import BaseModel
|
|
|
30
31
|
from pipecat.frames.frames import (
|
|
31
32
|
ErrorFrame,
|
|
32
33
|
Frame,
|
|
33
|
-
StartFrame,
|
|
34
34
|
TTSAudioRawFrame,
|
|
35
35
|
TTSStartedFrame,
|
|
36
36
|
TTSStoppedFrame,
|
|
@@ -51,16 +51,6 @@ except ModuleNotFoundError as e:
|
|
|
51
51
|
)
|
|
52
52
|
raise Exception(f"Missing module: {e}")
|
|
53
53
|
|
|
54
|
-
try:
|
|
55
|
-
from google import genai
|
|
56
|
-
from google.genai import types
|
|
57
|
-
|
|
58
|
-
except ModuleNotFoundError as e:
|
|
59
|
-
logger.error(f"Exception: {e}")
|
|
60
|
-
logger.error("In order to use Gemini TTS, you need to `pip install pipecat-ai[google]`.")
|
|
61
|
-
raise Exception(f"Missing module: {e}")
|
|
62
|
-
|
|
63
|
-
|
|
64
54
|
def language_to_google_tts_language(language: Language) -> Optional[str]:
|
|
65
55
|
"""Convert a Language enum to Google TTS language code.
|
|
66
56
|
|
|
@@ -681,63 +671,91 @@ class GoogleTTSService(TTSService):
|
|
|
681
671
|
yield ErrorFrame(error=error_message)
|
|
682
672
|
|
|
683
673
|
|
|
674
|
+
def language_to_gemini_tts_language(language: Language) -> Optional[str]:
|
|
675
|
+
"""Convert a Language enum to a Gemini-TTS language code.
|
|
676
|
+
|
|
677
|
+
Gemini-TTS locales mostly match Cloud TTS ones, but a few differ
|
|
678
|
+
(https://cloud.google.com/text-to-speech/docs/gemini-tts#available_languages):
|
|
679
|
+
Arabic is served as ``ar-EG`` (Cloud TTS uses the pan-Arabic ``ar-XA``,
|
|
680
|
+
which Gemini-TTS rejects) and Urdu as ``ur-PK``. Everything else falls
|
|
681
|
+
back to the Cloud TTS mapping.
|
|
682
|
+
|
|
683
|
+
Args:
|
|
684
|
+
language: The Language enum value to convert.
|
|
685
|
+
|
|
686
|
+
Returns:
|
|
687
|
+
The corresponding Gemini-TTS language code, or None if not supported.
|
|
688
|
+
"""
|
|
689
|
+
overrides = {
|
|
690
|
+
Language.AR: "ar-EG",
|
|
691
|
+
Language.UR: "ur-PK",
|
|
692
|
+
}
|
|
693
|
+
if language in overrides:
|
|
694
|
+
return overrides[language]
|
|
695
|
+
return language_to_google_tts_language(language)
|
|
696
|
+
|
|
697
|
+
|
|
684
698
|
class GeminiTTSService(TTSService):
|
|
685
|
-
"""Gemini Text-to-Speech service using Gemini TTS models.
|
|
699
|
+
"""Gemini Text-to-Speech streaming service using Gemini TTS models.
|
|
686
700
|
|
|
687
|
-
Provides text-to-speech synthesis using Gemini's TTS-specific
|
|
688
|
-
(gemini-2.5-flash-
|
|
689
|
-
|
|
701
|
+
Provides real-time text-to-speech synthesis using Gemini's TTS-specific
|
|
702
|
+
models (e.g. "gemini-2.5-flash-tts", "gemini-2.5-pro-tts") through the
|
|
703
|
+
Google Cloud Text-to-Speech streaming API for low-latency synthesis, with
|
|
704
|
+
support for style instruction prompts.
|
|
690
705
|
|
|
691
706
|
Note:
|
|
692
|
-
Requires Google
|
|
693
|
-
|
|
707
|
+
Requires Google Cloud credentials via service account JSON, file path,
|
|
708
|
+
or default application credentials (GOOGLE_APPLICATION_CREDENTIALS /
|
|
709
|
+
Workload Identity). This uses the Cloud TTS API, not the Gemini API,
|
|
710
|
+
so no Gemini API key is needed.
|
|
694
711
|
|
|
695
712
|
Example::
|
|
696
713
|
|
|
697
714
|
tts = GeminiTTSService(
|
|
698
|
-
|
|
699
|
-
model="gemini-2.5-flash-
|
|
700
|
-
voice_id="
|
|
715
|
+
credentials_path="/path/to/service-account.json",
|
|
716
|
+
model="gemini-2.5-flash-tts",
|
|
717
|
+
voice_id="Achernar",
|
|
701
718
|
params=GeminiTTSService.InputParams(
|
|
702
|
-
language=Language.
|
|
719
|
+
language=Language.HI,
|
|
720
|
+
prompt="Speak in a friendly and helpful tone",
|
|
703
721
|
)
|
|
704
722
|
)
|
|
705
723
|
"""
|
|
706
724
|
|
|
707
|
-
GOOGLE_SAMPLE_RATE = 24000 #
|
|
725
|
+
GOOGLE_SAMPLE_RATE = 24000 # Native Gemini TTS output rate
|
|
708
726
|
|
|
709
727
|
# List of available Gemini TTS voices
|
|
710
728
|
AVAILABLE_VOICES = [
|
|
711
|
-
"
|
|
712
|
-
"
|
|
713
|
-
"
|
|
714
|
-
"
|
|
715
|
-
"
|
|
716
|
-
"Leda",
|
|
717
|
-
"Orus",
|
|
729
|
+
"Achernar",
|
|
730
|
+
"Achird",
|
|
731
|
+
"Algenib",
|
|
732
|
+
"Algieba",
|
|
733
|
+
"Alnilam",
|
|
718
734
|
"Aoede",
|
|
719
|
-
"Callirhoe",
|
|
720
735
|
"Autonoe",
|
|
721
|
-
"
|
|
722
|
-
"
|
|
723
|
-
"Umbriel",
|
|
724
|
-
"Algieba",
|
|
736
|
+
"Callirrhoe",
|
|
737
|
+
"Charon",
|
|
725
738
|
"Despina",
|
|
739
|
+
"Enceladus",
|
|
726
740
|
"Erinome",
|
|
727
|
-
"
|
|
728
|
-
"Rasalgethi",
|
|
729
|
-
"Laomedeia",
|
|
730
|
-
"Achernar",
|
|
731
|
-
"Alnilam",
|
|
732
|
-
"Schedar",
|
|
741
|
+
"Fenrir",
|
|
733
742
|
"Gacrux",
|
|
743
|
+
"Iapetus",
|
|
744
|
+
"Kore",
|
|
745
|
+
"Laomedeia",
|
|
746
|
+
"Leda",
|
|
747
|
+
"Orus",
|
|
748
|
+
"Puck",
|
|
734
749
|
"Pulcherrima",
|
|
735
|
-
"
|
|
736
|
-
"Zubenelgenubi",
|
|
737
|
-
"Vindemiatrix",
|
|
750
|
+
"Rasalgethi",
|
|
738
751
|
"Sadachbia",
|
|
739
752
|
"Sadaltager",
|
|
740
|
-
"
|
|
753
|
+
"Schedar",
|
|
754
|
+
"Sulafat",
|
|
755
|
+
"Umbriel",
|
|
756
|
+
"Vindemiatrix",
|
|
757
|
+
"Zephyr",
|
|
758
|
+
"Zubenelgenubi",
|
|
741
759
|
]
|
|
742
760
|
|
|
743
761
|
class InputParams(BaseModel):
|
|
@@ -745,19 +763,19 @@ class GeminiTTSService(TTSService):
|
|
|
745
763
|
|
|
746
764
|
Parameters:
|
|
747
765
|
language: Language for synthesis. Defaults to English.
|
|
748
|
-
|
|
749
|
-
|
|
766
|
+
prompt: Optional style instructions for how to synthesize the
|
|
767
|
+
content (e.g. "Say this in a friendly tone").
|
|
750
768
|
"""
|
|
751
769
|
|
|
752
770
|
language: Optional[Language] = Language.EN
|
|
753
|
-
|
|
754
|
-
speaker_configs: Optional[List[dict]] = None
|
|
771
|
+
prompt: Optional[str] = None
|
|
755
772
|
|
|
756
773
|
def __init__(
|
|
757
774
|
self,
|
|
758
775
|
*,
|
|
759
|
-
|
|
760
|
-
|
|
776
|
+
credentials: Optional[str] = None,
|
|
777
|
+
credentials_path: Optional[str] = None,
|
|
778
|
+
model: str = "gemini-2.5-flash-tts",
|
|
761
779
|
voice_id: str = "Kore",
|
|
762
780
|
sample_rate: Optional[int] = None,
|
|
763
781
|
params: Optional[InputParams] = None,
|
|
@@ -766,19 +784,16 @@ class GeminiTTSService(TTSService):
|
|
|
766
784
|
"""Initializes the Gemini TTS service.
|
|
767
785
|
|
|
768
786
|
Args:
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
787
|
+
credentials: JSON string containing Google Cloud service account credentials.
|
|
788
|
+
credentials_path: Path to Google Cloud service account JSON file.
|
|
789
|
+
model: Gemini TTS model to use, e.g. "gemini-2.5-flash-tts" or
|
|
790
|
+
"gemini-2.5-pro-tts".
|
|
772
791
|
voice_id: Voice name from the available Gemini voices.
|
|
773
|
-
sample_rate: Audio sample rate in Hz. If None, uses
|
|
792
|
+
sample_rate: Audio sample rate in Hz. If None, uses the pipeline default;
|
|
793
|
+
the Cloud TTS API resamples server-side.
|
|
774
794
|
params: TTS configuration parameters.
|
|
775
795
|
**kwargs: Additional arguments passed to parent TTSService.
|
|
776
796
|
"""
|
|
777
|
-
if sample_rate and sample_rate != self.GOOGLE_SAMPLE_RATE:
|
|
778
|
-
logger.warning(
|
|
779
|
-
f"Google TTS only supports {self.GOOGLE_SAMPLE_RATE}Hz sample rate. "
|
|
780
|
-
f"Current rate of {sample_rate}Hz may cause issues."
|
|
781
|
-
)
|
|
782
797
|
super().__init__(sample_rate=sample_rate, **kwargs)
|
|
783
798
|
|
|
784
799
|
params = params or GeminiTTSService.InputParams()
|
|
@@ -786,18 +801,42 @@ class GeminiTTSService(TTSService):
|
|
|
786
801
|
if voice_id not in self.AVAILABLE_VOICES:
|
|
787
802
|
logger.warning(f"Voice '{voice_id}' not in known voices list. Using anyway.")
|
|
788
803
|
|
|
789
|
-
self._api_key = api_key
|
|
790
804
|
self._model = model
|
|
791
|
-
self.
|
|
805
|
+
self.set_voice(voice_id)
|
|
792
806
|
self._settings = {
|
|
793
807
|
"language": self.language_to_service_language(params.language)
|
|
794
808
|
if params.language
|
|
795
809
|
else "en-US",
|
|
796
|
-
"
|
|
797
|
-
"speaker_configs": params.speaker_configs,
|
|
810
|
+
"prompt": params.prompt,
|
|
798
811
|
}
|
|
812
|
+
self._client: texttospeech_v1.TextToSpeechAsyncClient = self._create_client(
|
|
813
|
+
credentials, credentials_path
|
|
814
|
+
)
|
|
799
815
|
|
|
800
|
-
|
|
816
|
+
def _create_client(
|
|
817
|
+
self, credentials: Optional[str], credentials_path: Optional[str]
|
|
818
|
+
) -> texttospeech_v1.TextToSpeechAsyncClient:
|
|
819
|
+
creds: Optional[service_account.Credentials] = None
|
|
820
|
+
|
|
821
|
+
if credentials:
|
|
822
|
+
# Use provided credentials JSON string
|
|
823
|
+
json_account_info = json.loads(credentials)
|
|
824
|
+
creds = service_account.Credentials.from_service_account_info(json_account_info)
|
|
825
|
+
elif credentials_path:
|
|
826
|
+
# Use service account JSON file if provided
|
|
827
|
+
creds = service_account.Credentials.from_service_account_file(credentials_path)
|
|
828
|
+
else:
|
|
829
|
+
try:
|
|
830
|
+
creds, project_id = default(
|
|
831
|
+
scopes=["https://www.googleapis.com/auth/cloud-platform"]
|
|
832
|
+
)
|
|
833
|
+
except GoogleAuthError:
|
|
834
|
+
pass
|
|
835
|
+
|
|
836
|
+
if not creds:
|
|
837
|
+
raise ValueError("No valid credentials provided.")
|
|
838
|
+
|
|
839
|
+
return texttospeech_v1.TextToSpeechAsyncClient(credentials=creds)
|
|
801
840
|
|
|
802
841
|
def can_generate_metrics(self) -> bool:
|
|
803
842
|
"""Check if this service can generate processing metrics.
|
|
@@ -816,111 +855,76 @@ class GeminiTTSService(TTSService):
|
|
|
816
855
|
Returns:
|
|
817
856
|
The Gemini TTS-specific language code, or None if not supported.
|
|
818
857
|
"""
|
|
819
|
-
return
|
|
820
|
-
|
|
821
|
-
def set_voice(self, voice_id: str):
|
|
822
|
-
"""Set the voice for TTS generation.
|
|
823
|
-
|
|
824
|
-
Args:
|
|
825
|
-
voice_id: Name of the voice to use from AVAILABLE_VOICES.
|
|
826
|
-
"""
|
|
827
|
-
if voice_id not in self.AVAILABLE_VOICES:
|
|
828
|
-
logger.warning(f"Voice '{voice_id}' not in known voices list. Using anyway.")
|
|
829
|
-
self._voice_id = voice_id
|
|
830
|
-
|
|
831
|
-
async def start(self, frame: StartFrame):
|
|
832
|
-
"""Start the Gemini TTS service.
|
|
833
|
-
|
|
834
|
-
Args:
|
|
835
|
-
frame: The start frame containing initialization parameters.
|
|
836
|
-
"""
|
|
837
|
-
await super().start(frame)
|
|
838
|
-
if self.sample_rate != self.GOOGLE_SAMPLE_RATE:
|
|
839
|
-
logger.warning(
|
|
840
|
-
f"Google TTS requires {self.GOOGLE_SAMPLE_RATE}Hz sample rate. "
|
|
841
|
-
f"Current rate of {self.sample_rate}Hz may cause issues."
|
|
842
|
-
)
|
|
858
|
+
return language_to_gemini_tts_language(language)
|
|
843
859
|
|
|
844
860
|
@traced_tts
|
|
845
861
|
async def run_tts(self, text: str) -> AsyncGenerator[Frame, None]:
|
|
846
|
-
"""Generate speech from text using Gemini TTS models.
|
|
862
|
+
"""Generate streaming speech from text using Gemini TTS models.
|
|
847
863
|
|
|
848
864
|
Args:
|
|
849
|
-
text: The text to synthesize into speech.
|
|
850
|
-
instructions for style, tone, etc.
|
|
865
|
+
text: The text to synthesize into speech.
|
|
851
866
|
|
|
852
867
|
Yields:
|
|
853
|
-
Frame: Audio frames containing the synthesized speech.
|
|
868
|
+
Frame: Audio frames containing the synthesized speech as it's generated.
|
|
854
869
|
"""
|
|
855
870
|
logger.debug(f"{self}: Generating TTS [{text}]")
|
|
856
871
|
|
|
857
872
|
try:
|
|
858
873
|
await self.start_ttfb_metrics()
|
|
859
874
|
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
for speaker_config in self._settings["speaker_configs"]:
|
|
865
|
-
speaker_voice_configs.append(
|
|
866
|
-
types.SpeakerVoiceConfig(
|
|
867
|
-
speaker=speaker_config["speaker"],
|
|
868
|
-
voice_config=types.VoiceConfig(
|
|
869
|
-
prebuilt_voice_config=types.PrebuiltVoiceConfig(
|
|
870
|
-
voice_name=speaker_config.get("voice_id", self._voice_id)
|
|
871
|
-
)
|
|
872
|
-
),
|
|
873
|
-
)
|
|
874
|
-
)
|
|
875
|
-
|
|
876
|
-
speech_config = types.SpeechConfig(
|
|
877
|
-
multi_speaker_voice_config=types.MultiSpeakerVoiceConfig(
|
|
878
|
-
speaker_voice_configs=speaker_voice_configs
|
|
879
|
-
)
|
|
880
|
-
)
|
|
881
|
-
else:
|
|
882
|
-
# Single speaker mode
|
|
883
|
-
speech_config = types.SpeechConfig(
|
|
884
|
-
voice_config=types.VoiceConfig(
|
|
885
|
-
prebuilt_voice_config=types.PrebuiltVoiceConfig(voice_name=self._voice_id)
|
|
886
|
-
)
|
|
887
|
-
)
|
|
888
|
-
|
|
889
|
-
# Create the generation config
|
|
890
|
-
generation_config = types.GenerateContentConfig(
|
|
891
|
-
response_modalities=["AUDIO"],
|
|
892
|
-
speech_config=speech_config,
|
|
875
|
+
voice = texttospeech_v1.VoiceSelectionParams(
|
|
876
|
+
language_code=self._settings["language"],
|
|
877
|
+
name=self._voice_id,
|
|
878
|
+
model_name=self._model,
|
|
893
879
|
)
|
|
894
880
|
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
881
|
+
streaming_config = texttospeech_v1.StreamingSynthesizeConfig(
|
|
882
|
+
voice=voice,
|
|
883
|
+
streaming_audio_config=texttospeech_v1.StreamingAudioConfig(
|
|
884
|
+
audio_encoding=texttospeech_v1.AudioEncoding.PCM,
|
|
885
|
+
sample_rate_hertz=self.sample_rate,
|
|
886
|
+
),
|
|
887
|
+
)
|
|
888
|
+
config_request = texttospeech_v1.StreamingSynthesizeRequest(
|
|
889
|
+
streaming_config=streaming_config
|
|
900
890
|
)
|
|
901
891
|
|
|
892
|
+
async def request_generator():
|
|
893
|
+
yield config_request
|
|
894
|
+
input_kwargs = {"text": text}
|
|
895
|
+
if self._settings["prompt"]:
|
|
896
|
+
input_kwargs["prompt"] = self._settings["prompt"]
|
|
897
|
+
yield texttospeech_v1.StreamingSynthesizeRequest(
|
|
898
|
+
input=texttospeech_v1.StreamingSynthesisInput(**input_kwargs)
|
|
899
|
+
)
|
|
900
|
+
|
|
901
|
+
streaming_responses = await self._client.streaming_synthesize(request_generator())
|
|
902
902
|
await self.start_tts_usage_metrics(text)
|
|
903
903
|
|
|
904
904
|
yield TTSStartedFrame()
|
|
905
905
|
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
906
|
+
audio_buffer = b""
|
|
907
|
+
first_chunk_for_ttfb = False
|
|
908
|
+
|
|
909
|
+
CHUNK_SIZE = self.chunk_size
|
|
910
|
+
|
|
911
|
+
async for response in streaming_responses:
|
|
912
|
+
chunk = response.audio_content
|
|
913
|
+
if not chunk:
|
|
914
|
+
continue
|
|
915
|
+
|
|
916
|
+
if not first_chunk_for_ttfb:
|
|
917
|
+
await self.stop_ttfb_metrics()
|
|
918
|
+
first_chunk_for_ttfb = True
|
|
919
|
+
|
|
920
|
+
audio_buffer += chunk
|
|
921
|
+
while len(audio_buffer) >= CHUNK_SIZE:
|
|
922
|
+
piece = audio_buffer[:CHUNK_SIZE]
|
|
923
|
+
audio_buffer = audio_buffer[CHUNK_SIZE:]
|
|
924
|
+
yield TTSAudioRawFrame(piece, self.sample_rate, 1)
|
|
925
|
+
|
|
926
|
+
if audio_buffer:
|
|
927
|
+
yield TTSAudioRawFrame(audio_buffer, self.sample_rate, 1)
|
|
924
928
|
|
|
925
929
|
yield TTSStoppedFrame()
|
|
926
930
|
|
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/maya/tts.py
RENAMED
|
@@ -125,7 +125,11 @@ class MayaTTSService(TTSService):
|
|
|
125
125
|
|
|
126
126
|
Args:
|
|
127
127
|
api_key: Maya API key for authentication (Bearer token).
|
|
128
|
-
voice_id: Maya voice name
|
|
128
|
+
voice_id: Maya voice name. The roster is per-model: "Ananya"/"Arjun"
|
|
129
|
+
on the default "Maya 2 Native", a wider set (Amit, Gargi, Rahul,
|
|
130
|
+
Riya, Sagar, ...) on "Maya Calyx".
|
|
131
|
+
model: Maya model name, e.g. "Maya Calyx". None lets Maya pick its
|
|
132
|
+
default ("Maya 2 Native"), whose roster is only Ananya/Arjun.
|
|
129
133
|
params: Additional generation parameters (language).
|
|
130
134
|
base_url: Maya API base URL.
|
|
131
135
|
aiohttp_session: Optional aiohttp session for connection pooling.
|
|
@@ -154,6 +158,7 @@ class MayaTTSService(TTSService):
|
|
|
154
158
|
*,
|
|
155
159
|
api_key: str,
|
|
156
160
|
voice_id: str,
|
|
161
|
+
model: Optional[str] = None,
|
|
157
162
|
params: Optional["MayaTTSService.InputParams"] = None,
|
|
158
163
|
base_url: str = "https://tts.mayaresearch.ai",
|
|
159
164
|
aiohttp_session: Optional[aiohttp.ClientSession] = None,
|
|
@@ -164,7 +169,11 @@ class MayaTTSService(TTSService):
|
|
|
164
169
|
|
|
165
170
|
Args:
|
|
166
171
|
api_key: Maya API key.
|
|
167
|
-
voice_id: Voice to use
|
|
172
|
+
voice_id: Voice to use. Case-sensitive, and valid only for the
|
|
173
|
+
selected model — Maya answers 400 "invalid 'voice'" (listing
|
|
174
|
+
the model's roster) when the two disagree.
|
|
175
|
+
model: Maya model name, e.g. "Maya Calyx". None omits the field
|
|
176
|
+
and lets Maya fall back to "Maya 2 Native".
|
|
168
177
|
params: Optional language/region input parameters.
|
|
169
178
|
base_url: Maya API base URL.
|
|
170
179
|
aiohttp_session: Optional shared aiohttp session.
|
|
@@ -180,6 +189,8 @@ class MayaTTSService(TTSService):
|
|
|
180
189
|
self._endpoint = f"{self._base_url}/v1/tts"
|
|
181
190
|
self._aiohttp_session = aiohttp_session
|
|
182
191
|
|
|
192
|
+
if model:
|
|
193
|
+
self.set_model_name(model)
|
|
183
194
|
self.set_voice(voice_id)
|
|
184
195
|
|
|
185
196
|
self._settings = {
|
|
@@ -223,6 +234,10 @@ class MayaTTSService(TTSService):
|
|
|
223
234
|
"text": text,
|
|
224
235
|
"language": self._settings["language"],
|
|
225
236
|
}
|
|
237
|
+
# Omitted entirely when unset: Maya then serves its own default model,
|
|
238
|
+
# which keeps pre-Calyx callers (Ananya/Arjun) byte-identical.
|
|
239
|
+
if self.model_name:
|
|
240
|
+
payload["model"] = self.model_name
|
|
226
241
|
if self._settings.get("region"):
|
|
227
242
|
payload["region"] = self._settings["region"]
|
|
228
243
|
headers = {
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/1-bug_report.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/2-question.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/5-new-service.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/6-dependency.yml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/config.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/PULL_REQUEST_TEMPLATE.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/force_push_to_pypi.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/publish_test.yaml
RENAMED
|
File without changes
|
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/set-traffic-split.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/.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.dev134 → dv_pipecat_ai-0.0.93.dev136}/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.dev134 → dv_pipecat_ai-0.0.93.dev136}/create-new-machine/ansible_setup.sh
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/create-new-machine/inventory.ini
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/create-new-machine/replace_env.yml
RENAMED
|
File without changes
|
{dv_pipecat_ai-0.0.93.dev134 → dv_pipecat_ai-0.0.93.dev136}/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
|