dv-pipecat-ai 0.0.93.dev135__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.
Files changed (528) hide show
  1. {dv_pipecat_ai-0.0.93.dev135/src/dv_pipecat_ai.egg-info → dv_pipecat_ai-0.0.93.dev136}/PKG-INFO +1 -1
  2. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136/src/dv_pipecat_ai.egg-info}/PKG-INFO +1 -1
  3. dv_pipecat_ai-0.0.93.dev136/src/dv_pipecat_ai.egg-info/scm_version.json +8 -0
  4. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/tts.py +153 -149
  5. dv_pipecat_ai-0.0.93.dev135/src/dv_pipecat_ai.egg-info/scm_version.json +0 -8
  6. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.dockerignore +0 -0
  7. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/1-bug_report.yml +0 -0
  8. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/2-question.yml +0 -0
  9. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/3-feature_request.yml +0 -0
  10. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/4-service-issue.yml +0 -0
  11. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/5-new-service.yml +0 -0
  12. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/6-dependency.yml +0 -0
  13. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/7-troubleshooting.yml +0 -0
  14. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  15. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  16. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/build.yaml +0 -0
  17. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/coverage.yaml +0 -0
  18. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/force_push_to_pypi.yml +0 -0
  19. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/format.yaml +0 -0
  20. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/github.yml +0 -0
  21. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/publish.yaml +0 -0
  22. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/publish_test.yaml +0 -0
  23. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/python-compatibility.yaml +0 -0
  24. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/set-traffic-split.yml +0 -0
  25. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/sync-quickstart.yaml +0 -0
  26. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.github/workflows/tests.yaml +0 -0
  27. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.gitignore +0 -0
  28. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.pre-commit-config.yaml +0 -0
  29. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/.readthedocs.yaml +0 -0
  30. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/CHANGELOG.md +0 -0
  31. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/CHANGELOG.md.template +0 -0
  32. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/CLAUDE.md +0 -0
  33. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/COMMUNITY_INTEGRATIONS.md +0 -0
  34. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/CONTRIBUTING.md +0 -0
  35. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/DOCKER_BUILD_OPTIMIZATION_SUMMARY.md +0 -0
  36. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/LICENSE +0 -0
  37. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/MANIFEST.in +0 -0
  38. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/README.md +0 -0
  39. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/SECURITY.md +0 -0
  40. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/UPSTREAM_SYNC.md +0 -0
  41. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/ansible.cfg +0 -0
  42. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/ansible_deployment.sh +0 -0
  43. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/changelog/4567.fixed.md +0 -0
  44. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/cleanup_old_containers.yml +0 -0
  45. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/codecov.yml +0 -0
  46. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/create-new-machine/ansible.cfg +0 -0
  47. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/create-new-machine/ansible_setup.sh +0 -0
  48. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/create-new-machine/inventory.ini +0 -0
  49. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/create-new-machine/replace_env.yml +0 -0
  50. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/create-new-machine/setup_playbook.yml +0 -0
  51. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/create_inventory.py +0 -0
  52. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/delete_old_dockers.sh +0 -0
  53. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/deploy.sh +0 -0
  54. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/deploy_playbook.yml +0 -0
  55. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/docker-compose.dev.yml +0 -0
  56. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/dump_logs.yml +0 -0
  57. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/env.example +0 -0
  58. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/fetch_logs.yml +0 -0
  59. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/inventory.ini +0 -0
  60. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/.helmignore +0 -0
  61. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/Chart.yaml +0 -0
  62. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/_helpers.tpl +0 -0
  63. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/backendconfig.yaml +0 -0
  64. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/cluster-role.yaml +0 -0
  65. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/deployment.yaml +0 -0
  66. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/hpa.yaml +0 -0
  67. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/ingress.yaml +0 -0
  68. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/keda-api-key-secret.yaml +0 -0
  69. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/keda-scaledobject.yaml +0 -0
  70. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/keda-trigger-auth.yaml +0 -0
  71. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/pdb.yaml +0 -0
  72. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/templates/service.yaml +0 -0
  73. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/values-canary.yaml +0 -0
  74. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/values-prod.yaml +0 -0
  75. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/values-stage.yaml +0 -0
  76. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/dv-pipecat/values.yaml +0 -0
  77. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/k8s/istio/destination-virtualservice.yaml +0 -0
  78. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/merge-code-into-single-file.sh +0 -0
  79. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/pipecat.png +0 -0
  80. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/pyproject.toml +0 -0
  81. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/restart.sh +0 -0
  82. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/restart_playbook.yml +0 -0
  83. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/setup.cfg +0 -0
  84. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/dv_pipecat_ai.egg-info/SOURCES.txt +0 -0
  85. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/dv_pipecat_ai.egg-info/dependency_links.txt +0 -0
  86. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/dv_pipecat_ai.egg-info/requires.txt +0 -0
  87. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/dv_pipecat_ai.egg-info/scm_file_list.json +0 -0
  88. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/dv_pipecat_ai.egg-info/top_level.txt +0 -0
  89. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/__init__.py +0 -0
  90. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/__init__.py +0 -0
  91. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/base_llm_adapter.py +0 -0
  92. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/schemas/__init__.py +0 -0
  93. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/schemas/direct_function.py +0 -0
  94. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/schemas/function_schema.py +0 -0
  95. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/schemas/tools_schema.py +0 -0
  96. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/__init__.py +0 -0
  97. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/anthropic_adapter.py +0 -0
  98. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/aws_nova_sonic_adapter.py +0 -0
  99. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/bedrock_adapter.py +0 -0
  100. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/gemini_adapter.py +0 -0
  101. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/open_ai_adapter.py +0 -0
  102. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/open_ai_realtime_adapter.py +0 -0
  103. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/adapters/services/open_ai_responses_adapter.py +0 -0
  104. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/__init__.py +0 -0
  105. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/__init__.py +0 -0
  106. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-0.wav +0 -0
  107. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-1.wav +0 -0
  108. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-2.wav +0 -0
  109. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-3.wav +0 -0
  110. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-4.wav +0 -0
  111. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-5.wav +0 -0
  112. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-6.wav +0 -0
  113. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-7.wav +0 -0
  114. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-8.wav +0 -0
  115. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-9.wav +0 -0
  116. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-pound.wav +0 -0
  117. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/dtmf-star.wav +0 -0
  118. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/types.py +0 -0
  119. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/dtmf/utils.py +0 -0
  120. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/__init__.py +0 -0
  121. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/aic_filter.py +0 -0
  122. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/base_audio_filter.py +0 -0
  123. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/koala_filter.py +0 -0
  124. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/krisp_filter.py +0 -0
  125. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/krisp_viva_filter.py +0 -0
  126. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/noisereduce_filter.py +0 -0
  127. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/filters/pyrnn_local_filter.py +0 -0
  128. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/interruptions/__init__.py +0 -0
  129. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/interruptions/base_interruption_strategy.py +0 -0
  130. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/interruptions/min_words_interruption_strategy.py +0 -0
  131. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/mixers/__init__.py +0 -0
  132. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/mixers/base_audio_mixer.py +0 -0
  133. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/mixers/soundfile_mixer.py +0 -0
  134. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/resamplers/__init__.py +0 -0
  135. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/resamplers/base_audio_resampler.py +0 -0
  136. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/resamplers/resampy_resampler.py +0 -0
  137. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/resamplers/soxr_resampler.py +0 -0
  138. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/resamplers/soxr_stream_resampler.py +0 -0
  139. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/__init__.py +0 -0
  140. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/base_turn_analyzer.py +0 -0
  141. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/__init__.py +0 -0
  142. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/base_smart_turn.py +0 -0
  143. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/data/__init__.py +0 -0
  144. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/data/smart-turn-v3.0.onnx +0 -0
  145. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/fal_smart_turn.py +0 -0
  146. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/http_smart_turn.py +0 -0
  147. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/local_coreml_smart_turn.py +0 -0
  148. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/local_smart_turn.py +0 -0
  149. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v2.py +0 -0
  150. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v3.py +0 -0
  151. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/utils.py +0 -0
  152. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/vad/__init__.py +0 -0
  153. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/vad/data/README.md +0 -0
  154. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/vad/data/__init__.py +0 -0
  155. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/vad/data/silero_vad.onnx +0 -0
  156. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/vad/data/silero_vad_v2.onnx +0 -0
  157. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/vad/silero.py +0 -0
  158. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/audio/vad/vad_analyzer.py +0 -0
  159. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/clocks/__init__.py +0 -0
  160. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/clocks/base_clock.py +0 -0
  161. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/clocks/system_clock.py +0 -0
  162. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/extensions/__init__.py +0 -0
  163. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/extensions/ivr/__init__.py +0 -0
  164. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/extensions/ivr/ivr_navigator.py +0 -0
  165. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/extensions/voicemail/__init__.py +0 -0
  166. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/extensions/voicemail/voicemail_detector.py +0 -0
  167. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/frames/__init__.py +0 -0
  168. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/frames/frames.proto +0 -0
  169. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/frames/frames.py +0 -0
  170. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/frames/protobufs/frames_pb2.py +0 -0
  171. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/metrics/__init__.py +0 -0
  172. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/metrics/connection_metrics.py +0 -0
  173. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/metrics/metrics.py +0 -0
  174. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/__init__.py +0 -0
  175. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/base_observer.py +0 -0
  176. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/loggers/__init__.py +0 -0
  177. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/loggers/debug_log_observer.py +0 -0
  178. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/loggers/llm_log_observer.py +0 -0
  179. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/loggers/transcription_log_observer.py +0 -0
  180. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +0 -0
  181. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/observers/turn_tracking_observer.py +0 -0
  182. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/__init__.py +0 -0
  183. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/base_pipeline.py +0 -0
  184. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/base_task.py +0 -0
  185. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/llm_switcher.py +0 -0
  186. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/parallel_pipeline.py +0 -0
  187. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/pipeline.py +0 -0
  188. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/runner.py +0 -0
  189. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/service_switcher.py +0 -0
  190. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/sync_parallel_pipeline.py +0 -0
  191. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/task.py +0 -0
  192. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/task_observer.py +0 -0
  193. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/to_be_updated/merge_pipeline.py +0 -0
  194. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/pipeline/tts_switcher.py +0 -0
  195. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/__init__.py +0 -0
  196. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/__init__.py +0 -0
  197. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/dtmf_aggregator.py +0 -0
  198. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/gated.py +0 -0
  199. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/gated_llm_context.py +0 -0
  200. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/gated_open_ai_llm_context.py +0 -0
  201. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/llm_context.py +0 -0
  202. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/llm_response.py +0 -0
  203. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/llm_response_universal.py +0 -0
  204. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/openai_llm_context.py +0 -0
  205. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/sentence.py +0 -0
  206. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/user_response.py +0 -0
  207. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/aggregators/vision_image_frame.py +0 -0
  208. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/async_generator.py +0 -0
  209. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/audio/__init__.py +0 -0
  210. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/audio/audio_buffer_processor.py +0 -0
  211. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/consumer_processor.py +0 -0
  212. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/dtmf_aggregator.py +0 -0
  213. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/__init__.py +0 -0
  214. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/frame_filter.py +0 -0
  215. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/function_filter.py +0 -0
  216. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/identity_filter.py +0 -0
  217. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/null_filter.py +0 -0
  218. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/stt_mute_filter.py +0 -0
  219. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/wake_check_filter.py +0 -0
  220. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/filters/wake_notifier_filter.py +0 -0
  221. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/frame_processor.py +0 -0
  222. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/frameworks/__init__.py +0 -0
  223. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/frameworks/langchain.py +0 -0
  224. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/frameworks/rtvi.py +0 -0
  225. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/frameworks/strands_agents.py +0 -0
  226. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/gstreamer/__init__.py +0 -0
  227. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/gstreamer/pipeline_source.py +0 -0
  228. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/idle_frame_processor.py +0 -0
  229. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/logger.py +0 -0
  230. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/metrics/__init__.py +0 -0
  231. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/metrics/frame_processor_metrics.py +0 -0
  232. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/metrics/sentry.py +0 -0
  233. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/producer_processor.py +0 -0
  234. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/text_transformer.py +0 -0
  235. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/transcript_processor.py +0 -0
  236. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/two_stage_user_idle_processor.py +0 -0
  237. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/processors/user_idle_processor.py +0 -0
  238. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/py.typed +0 -0
  239. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/runner/__init__.py +0 -0
  240. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/runner/daily.py +0 -0
  241. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/runner/livekit.py +0 -0
  242. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/runner/run.py +0 -0
  243. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/runner/types.py +0 -0
  244. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/runner/utils.py +0 -0
  245. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/__init__.py +0 -0
  246. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/asterisk.py +0 -0
  247. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/asterisk_chan_websocket_json.py +0 -0
  248. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/asterisk_chan_websocket_original.py +0 -0
  249. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/base_serializer.py +0 -0
  250. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/convox.py +0 -0
  251. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/custom.py +0 -0
  252. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/exotel.py +0 -0
  253. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/knowlarity.py +0 -0
  254. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/livekit.py +0 -0
  255. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/maqsam.py +0 -0
  256. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/plivo.py +0 -0
  257. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/protobuf.py +0 -0
  258. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/tatatele.py +0 -0
  259. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/telnyx.py +0 -0
  260. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/twilio.py +0 -0
  261. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/vi.py +0 -0
  262. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/serializers/voicelink.py +0 -0
  263. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/__init__.py +0 -0
  264. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ai_service.py +0 -0
  265. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ai_services.py +0 -0
  266. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/anthropic/__init__.py +0 -0
  267. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/anthropic/llm.py +0 -0
  268. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/assemblyai/__init__.py +0 -0
  269. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/assemblyai/models.py +0 -0
  270. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/assemblyai/stt.py +0 -0
  271. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/asyncai/__init__.py +0 -0
  272. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/asyncai/tts.py +0 -0
  273. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/__init__.py +0 -0
  274. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/llm.py +0 -0
  275. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/nova_sonic/__init__.py +0 -0
  276. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/nova_sonic/context.py +0 -0
  277. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/nova_sonic/frames.py +0 -0
  278. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/nova_sonic/llm.py +0 -0
  279. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/nova_sonic/ready.wav +0 -0
  280. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/stt.py +0 -0
  281. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/tts.py +0 -0
  282. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws/utils.py +0 -0
  283. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws_nova_sonic/__init__.py +0 -0
  284. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws_nova_sonic/aws.py +0 -0
  285. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws_nova_sonic/context.py +0 -0
  286. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/aws_nova_sonic/frames.py +0 -0
  287. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/__init__.py +0 -0
  288. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/common.py +0 -0
  289. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/image.py +0 -0
  290. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/llm.py +0 -0
  291. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/realtime/__init__.py +0 -0
  292. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/realtime/llm.py +0 -0
  293. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/stt.py +0 -0
  294. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/azure/tts.py +0 -0
  295. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/cartesia/__init__.py +0 -0
  296. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/cartesia/stt.py +0 -0
  297. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/cartesia/tts.py +0 -0
  298. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/cerebras/__init__.py +0 -0
  299. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/cerebras/llm.py +0 -0
  300. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/deepgram/__init__.py +0 -0
  301. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/deepgram/flux/__init__.py +0 -0
  302. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/deepgram/flux/stt.py +0 -0
  303. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/deepgram/stt.py +0 -0
  304. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/deepgram/tts.py +0 -0
  305. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/deepseek/__init__.py +0 -0
  306. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/deepseek/llm.py +0 -0
  307. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/elevenlabs/__init__.py +0 -0
  308. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/elevenlabs/stt.py +0 -0
  309. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/elevenlabs/tts.py +0 -0
  310. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/fal/__init__.py +0 -0
  311. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/fal/image.py +0 -0
  312. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/fal/stt.py +0 -0
  313. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/fireworks/__init__.py +0 -0
  314. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/fireworks/llm.py +0 -0
  315. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/fish/__init__.py +0 -0
  316. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/fish/tts.py +0 -0
  317. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/gemini_multimodal_live/__init__.py +0 -0
  318. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/gemini_multimodal_live/events.py +0 -0
  319. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/gemini_multimodal_live/file_api.py +0 -0
  320. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/gemini_multimodal_live/gemini.py +0 -0
  321. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/gladia/__init__.py +0 -0
  322. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/gladia/config.py +0 -0
  323. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/gladia/stt.py +0 -0
  324. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/__init__.py +0 -0
  325. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/frames.py +0 -0
  326. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/gemini_live/__init__.py +0 -0
  327. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/gemini_live/file_api.py +0 -0
  328. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/gemini_live/llm.py +0 -0
  329. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/gemini_live/llm_vertex.py +0 -0
  330. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/google.py +0 -0
  331. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/image.py +0 -0
  332. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/llm.py +0 -0
  333. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/llm_openai.py +0 -0
  334. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/llm_vertex.py +0 -0
  335. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/rtvi.py +0 -0
  336. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/google/stt.py +0 -0
  337. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/grok/__init__.py +0 -0
  338. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/grok/llm.py +0 -0
  339. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/groq/__init__.py +0 -0
  340. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/groq/llm.py +0 -0
  341. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/groq/stt.py +0 -0
  342. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/groq/tts.py +0 -0
  343. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/hamsa/__init__.py +0 -0
  344. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/hamsa/stt.py +0 -0
  345. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/hamsa/tts.py +0 -0
  346. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/heygen/__init__.py +0 -0
  347. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/heygen/api.py +0 -0
  348. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/heygen/client.py +0 -0
  349. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/heygen/video.py +0 -0
  350. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/hume/__init__.py +0 -0
  351. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/hume/tts.py +0 -0
  352. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/image_service.py +0 -0
  353. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/inworld/__init__.py +0 -0
  354. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/inworld/tts.py +0 -0
  355. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/llm_service.py +0 -0
  356. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/lmnt/__init__.py +0 -0
  357. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/lmnt/tts.py +0 -0
  358. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/maya/__init__.py +0 -0
  359. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/maya/tts.py +0 -0
  360. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/mcp_service.py +0 -0
  361. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/mem0/__init__.py +0 -0
  362. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/mem0/memory.py +0 -0
  363. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/minimax/__init__.py +0 -0
  364. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/minimax/tts.py +0 -0
  365. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/mistral/__init__.py +0 -0
  366. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/mistral/llm.py +0 -0
  367. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/moondream/__init__.py +0 -0
  368. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/moondream/vision.py +0 -0
  369. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/neuphonic/__init__.py +0 -0
  370. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/neuphonic/tts.py +0 -0
  371. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/nim/__init__.py +0 -0
  372. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/nim/llm.py +0 -0
  373. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ollama/__init__.py +0 -0
  374. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ollama/llm.py +0 -0
  375. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/__init__.py +0 -0
  376. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/base_llm.py +0 -0
  377. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/image.py +0 -0
  378. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/live/__init__.py +0 -0
  379. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/live/llm.py +0 -0
  380. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/llm.py +0 -0
  381. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/realtime/__init__.py +0 -0
  382. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/realtime/context.py +0 -0
  383. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/realtime/events.py +0 -0
  384. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/realtime/frames.py +0 -0
  385. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/realtime/llm.py +0 -0
  386. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/responses/__init__.py +0 -0
  387. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/responses/llm.py +0 -0
  388. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/stt.py +0 -0
  389. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai/tts.py +0 -0
  390. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime/__init__.py +0 -0
  391. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime/azure.py +0 -0
  392. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime/context.py +0 -0
  393. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime/events.py +0 -0
  394. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime/frames.py +0 -0
  395. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime_beta/__init__.py +0 -0
  396. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime_beta/azure.py +0 -0
  397. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime_beta/context.py +0 -0
  398. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime_beta/events.py +0 -0
  399. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime_beta/frames.py +0 -0
  400. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openai_realtime_beta/openai.py +0 -0
  401. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openpipe/__init__.py +0 -0
  402. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openpipe/llm.py +0 -0
  403. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openrouter/__init__.py +0 -0
  404. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/openrouter/llm.py +0 -0
  405. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/perplexity/__init__.py +0 -0
  406. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/perplexity/llm.py +0 -0
  407. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/piper/__init__.py +0 -0
  408. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/piper/tts.py +0 -0
  409. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/playht/__init__.py +0 -0
  410. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/playht/tts.py +0 -0
  411. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/qwen/__init__.py +0 -0
  412. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/qwen/llm.py +0 -0
  413. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/rime/__init__.py +0 -0
  414. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/rime/tts.py +0 -0
  415. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ringg/__init__.py +0 -0
  416. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ringg/stt.py +0 -0
  417. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ringg_qwen/__init__.py +0 -0
  418. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ringg_qwen/llm.py +0 -0
  419. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/riva/__init__.py +0 -0
  420. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/riva/stt.py +0 -0
  421. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/riva/tts.py +0 -0
  422. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/salesforce/__init__.py +0 -0
  423. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/salesforce/llm.py +0 -0
  424. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/sambanova/__init__.py +0 -0
  425. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/sambanova/llm.py +0 -0
  426. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/sambanova/stt.py +0 -0
  427. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/sarvam/__init__.py +0 -0
  428. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/sarvam/_sdk.py +0 -0
  429. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/sarvam/stt.py +0 -0
  430. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/sarvam/tts.py +0 -0
  431. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/simli/__init__.py +0 -0
  432. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/simli/video.py +0 -0
  433. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/soniox/__init__.py +0 -0
  434. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/soniox/stt.py +0 -0
  435. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/speechmatics/__init__.py +0 -0
  436. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/speechmatics/stt.py +0 -0
  437. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/stt_latency.py +0 -0
  438. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/stt_service.py +0 -0
  439. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/tavus/__init__.py +0 -0
  440. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/tavus/video.py +0 -0
  441. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/together/__init__.py +0 -0
  442. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/together/llm.py +0 -0
  443. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/tts_service.py +0 -0
  444. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ultravox/__init__.py +0 -0
  445. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/ultravox/stt.py +0 -0
  446. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/vision_service.py +0 -0
  447. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/vistaar/__init__.py +0 -0
  448. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/vistaar/llm.py +0 -0
  449. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/websocket_service.py +0 -0
  450. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/whisper/__init__.py +0 -0
  451. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/whisper/base_stt.py +0 -0
  452. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/whisper/stt.py +0 -0
  453. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/xtts/__init__.py +0 -0
  454. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/services/xtts/tts.py +0 -0
  455. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/sync/__init__.py +0 -0
  456. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/sync/base_notifier.py +0 -0
  457. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/sync/event_notifier.py +0 -0
  458. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/tests/__init__.py +0 -0
  459. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/tests/utils.py +0 -0
  460. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transcriptions/__init__.py +0 -0
  461. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transcriptions/language.py +0 -0
  462. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/__init__.py +0 -0
  463. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/base_input.py +0 -0
  464. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/base_output.py +0 -0
  465. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/base_transport.py +0 -0
  466. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/daily/__init__.py +0 -0
  467. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/daily/transport.py +0 -0
  468. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/daily/utils.py +0 -0
  469. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/heygen/__init__.py +0 -0
  470. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/heygen/transport.py +0 -0
  471. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/livekit/__init__.py +0 -0
  472. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/livekit/transport.py +0 -0
  473. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/local/__init__.py +0 -0
  474. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/local/audio.py +0 -0
  475. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/local/tk.py +0 -0
  476. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/network/__init__.py +0 -0
  477. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/network/fastapi_websocket.py +0 -0
  478. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/network/small_webrtc.py +0 -0
  479. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/network/webrtc_connection.py +0 -0
  480. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/network/websocket_client.py +0 -0
  481. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/network/websocket_server.py +0 -0
  482. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/services/__init__.py +0 -0
  483. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/services/daily.py +0 -0
  484. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/services/helpers/__init__.py +0 -0
  485. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/services/helpers/daily_rest.py +0 -0
  486. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/services/livekit.py +0 -0
  487. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/services/tavus.py +0 -0
  488. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/smallwebrtc/__init__.py +0 -0
  489. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/smallwebrtc/connection.py +0 -0
  490. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/smallwebrtc/request_handler.py +0 -0
  491. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/smallwebrtc/transport.py +0 -0
  492. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/tavus/__init__.py +0 -0
  493. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/tavus/transport.py +0 -0
  494. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/websocket/__init__.py +0 -0
  495. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/websocket/client.py +0 -0
  496. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/websocket/fastapi.py +0 -0
  497. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/websocket/server.py +0 -0
  498. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/whatsapp/__init__.py +0 -0
  499. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/whatsapp/api.py +0 -0
  500. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/transports/whatsapp/client.py +0 -0
  501. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/__init__.py +0 -0
  502. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/asyncio/__init__.py +0 -0
  503. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/asyncio/task_manager.py +0 -0
  504. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/base_object.py +0 -0
  505. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/logger_config.py +0 -0
  506. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/network.py +0 -0
  507. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/redis.py +0 -0
  508. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/string.py +0 -0
  509. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/text/__init__.py +0 -0
  510. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/text/base_text_aggregator.py +0 -0
  511. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/text/base_text_filter.py +0 -0
  512. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/text/markdown_text_filter.py +0 -0
  513. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/text/pattern_pair_aggregator.py +0 -0
  514. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/text/simple_text_aggregator.py +0 -0
  515. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/text/skip_tags_aggregator.py +0 -0
  516. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/time.py +0 -0
  517. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/__init__.py +0 -0
  518. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/class_decorators.py +0 -0
  519. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/conversation_context_provider.py +0 -0
  520. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/service_attributes.py +0 -0
  521. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/service_decorators.py +0 -0
  522. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/setup.py +0 -0
  523. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/turn_context_provider.py +0 -0
  524. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/tracing/turn_trace_observer.py +0 -0
  525. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/src/pipecat/utils/utils.py +0 -0
  526. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/stop_container.yml +0 -0
  527. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/test_elevenlabs_stt_segmented.py +0 -0
  528. {dv_pipecat_ai-0.0.93.dev135 → dv_pipecat_ai-0.0.93.dev136}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-pipecat-ai
3
- Version: 0.0.93.dev135
3
+ Version: 0.0.93.dev136
4
4
  Summary: An open source framework for voice (and multimodal) assistants
5
5
  License-Expression: BSD-2-Clause
6
6
  Project-URL: Source, https://github.com/pipecat-ai/pipecat
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-pipecat-ai
3
- Version: 0.0.93.dev135
3
+ Version: 0.0.93.dev136
4
4
  Summary: An open source framework for voice (and multimodal) assistants
5
5
  License-Expression: BSD-2-Clause
6
6
  Project-URL: Source, https://github.com/pipecat-ai/pipecat
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "0.0.92",
3
+ "distance": 136,
4
+ "node": "gc5eead3484ac34c95382dd840f21fea051699b29",
5
+ "dirty": false,
6
+ "branch": "dv-stage",
7
+ "node_date": "2026-08-31"
8
+ }
@@ -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
- for natural voice control and multi-speaker conversations.
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 models
688
- (gemini-2.5-flash-preview-tts and gemini-2.5-pro-preview-tts) with
689
- support for natural voice control, multiple speakers, and voice styles.
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 AI API key. This uses the Gemini API, not Google Cloud TTS.
693
- Audio-out is currently a preview feature.
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
- api_key="your-google-ai-api-key",
699
- model="gemini-2.5-flash-preview-tts",
700
- voice_id="Kore",
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.EN_US,
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 # Google TTS always outputs at 24kHz
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
- "Zephyr",
712
- "Puck",
713
- "Charon",
714
- "Kore",
715
- "Fenrir",
716
- "Leda",
717
- "Orus",
729
+ "Achernar",
730
+ "Achird",
731
+ "Algenib",
732
+ "Algieba",
733
+ "Alnilam",
718
734
  "Aoede",
719
- "Callirhoe",
720
735
  "Autonoe",
721
- "Enceladus",
722
- "Iapetus",
723
- "Umbriel",
724
- "Algieba",
736
+ "Callirrhoe",
737
+ "Charon",
725
738
  "Despina",
739
+ "Enceladus",
726
740
  "Erinome",
727
- "Algenib",
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
- "Achird",
736
- "Zubenelgenubi",
737
- "Vindemiatrix",
750
+ "Rasalgethi",
738
751
  "Sadachbia",
739
752
  "Sadaltager",
740
- "Sulafar",
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
- multi_speaker: Whether to enable multi-speaker support.
749
- speaker_configs: List of speaker configurations for multi-speaker mode.
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
- multi_speaker: bool = False
754
- speaker_configs: Optional[List[dict]] = None
771
+ prompt: Optional[str] = None
755
772
 
756
773
  def __init__(
757
774
  self,
758
775
  *,
759
- api_key: str,
760
- model: str = "gemini-2.5-flash-preview-tts",
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
- api_key: Google AI API key for authentication.
770
- model: Gemini TTS model to use. Must be a TTS model like
771
- "gemini-2.5-flash-preview-tts" or "gemini-2.5-pro-preview-tts".
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 Google's default 24kHz.
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._voice_id = voice_id
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
- "multi_speaker": params.multi_speaker,
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
- self._client = genai.Client(api_key=api_key)
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 language_to_google_tts_language(language)
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. Can include natural language
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
- # Build the speech config
861
- if self._settings["multi_speaker"] and self._settings["speaker_configs"]:
862
- # Multi-speaker mode
863
- speaker_voice_configs = []
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
- # Generate the content
896
- response = await self._client.aio.models.generate_content(
897
- model=self._model,
898
- contents=text,
899
- config=generation_config,
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
- # Extract audio data from response
907
- if response.candidates and len(response.candidates) > 0:
908
- candidate = response.candidates[0]
909
- if candidate.content and candidate.content.parts:
910
- for part in candidate.content.parts:
911
- if part.inline_data and part.inline_data.mime_type.startswith("audio/"):
912
- audio_data = part.inline_data.data
913
- await self.stop_ttfb_metrics()
914
-
915
- # Gemini TTS returns PCM audio data, chunk it appropriately
916
- CHUNK_SIZE = self.chunk_size
917
-
918
- for i in range(0, len(audio_data), CHUNK_SIZE):
919
- chunk = audio_data[i : i + CHUNK_SIZE]
920
- if not chunk:
921
- break
922
- frame = TTSAudioRawFrame(chunk, self.sample_rate, 1)
923
- yield frame
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
 
@@ -1,8 +0,0 @@
1
- {
2
- "tag": "0.0.92",
3
- "distance": 135,
4
- "node": "ga40d7ed5632375656990a0f78126430855ddac0c",
5
- "dirty": false,
6
- "branch": "dv-stage",
7
- "node_date": "2026-08-26"
8
- }