dv-pipecat-ai 0.0.85.dev832__tar.gz → 0.0.85.dev834__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of dv-pipecat-ai might be problematic. Click here for more details.

Files changed (502) hide show
  1. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/PKG-INFO +1 -1
  2. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/dv_pipecat_ai.egg-info/PKG-INFO +1 -1
  3. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/llm_response.py +3 -8
  4. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/dtmf_aggregator.py +17 -21
  5. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/asterisk.py +16 -2
  6. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/convox.py +2 -2
  7. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/custom.py +2 -2
  8. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/sarvam/tts.py +0 -1
  9. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/vistaar/llm.py +4 -4
  10. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/base_output.py +26 -3
  11. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.dockerignore +0 -0
  12. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/1-bug_report.yml +0 -0
  13. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/2-question.yml +0 -0
  14. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/3-feature_request.yml +0 -0
  15. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/4-service-issue.yml +0 -0
  16. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/5-new-service.yml +0 -0
  17. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/6-dependency.yml +0 -0
  18. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/7-troubleshooting.yml +0 -0
  19. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  20. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  21. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/build.yaml +0 -0
  22. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/coverage.yaml +0 -0
  23. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/force_push_to_pypi.yml +0 -0
  24. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/format.yaml +0 -0
  25. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/github.yml +0 -0
  26. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/promote-prod.yml +0 -0
  27. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/publish.yaml +0 -0
  28. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/publish_test.yaml +0 -0
  29. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/python-compatibility.yaml +0 -0
  30. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/set-traffic-split.yml +0 -0
  31. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/sync-quickstart.yaml +0 -0
  32. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.github/workflows/tests.yaml +0 -0
  33. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.gitignore +0 -0
  34. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.pre-commit-config.yaml +0 -0
  35. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/.readthedocs.yaml +0 -0
  36. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/CHANGELOG.md +0 -0
  37. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/CHANGELOG.md.template +0 -0
  38. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/CLAUDE.md +0 -0
  39. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/COMMUNITY_INTEGRATIONS.md +0 -0
  40. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/CONTRIBUTING.md +0 -0
  41. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/DOCKER_BUILD_OPTIMIZATION_SUMMARY.md +0 -0
  42. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/LICENSE +0 -0
  43. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/MANIFEST.in +0 -0
  44. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/README.md +0 -0
  45. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/SECURITY.md +0 -0
  46. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/ansible.cfg +0 -0
  47. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/ansible_deployment.sh +0 -0
  48. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/cleanup_old_containers.yml +0 -0
  49. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/codecov.yml +0 -0
  50. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/create-new-machine/ansible.cfg +0 -0
  51. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/create-new-machine/ansible_setup.sh +0 -0
  52. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/create-new-machine/inventory.ini +0 -0
  53. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/create-new-machine/replace_env.yml +0 -0
  54. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/create-new-machine/setup_playbook.yml +0 -0
  55. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/create_inventory.py +0 -0
  56. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/delete_old_dockers.sh +0 -0
  57. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/deploy.sh +0 -0
  58. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/deploy_playbook.yml +0 -0
  59. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/docker-compose.dev.yml +0 -0
  60. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/dump_logs.yml +0 -0
  61. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/env.example +0 -0
  62. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/fetch_logs.yml +0 -0
  63. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/inventory.ini +0 -0
  64. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/.helmignore +0 -0
  65. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/Chart.yaml +0 -0
  66. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/_helpers.tpl +0 -0
  67. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/backendconfig.yaml +0 -0
  68. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/cluster-role.yaml +0 -0
  69. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/deployment.yaml +0 -0
  70. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/hpa.yaml +0 -0
  71. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/ingress.yaml +0 -0
  72. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/keda-api-key-secret.yaml +0 -0
  73. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/keda-scaledobject.yaml +0 -0
  74. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/keda-trigger-auth.yaml +0 -0
  75. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/pdb.yaml +0 -0
  76. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/templates/service.yaml +0 -0
  77. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/values-canary.yaml +0 -0
  78. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/values-prod.yaml +0 -0
  79. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/values-stage.yaml +0 -0
  80. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/dv-pipecat/values.yaml +0 -0
  81. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/k8s/istio/destination-virtualservice.yaml +0 -0
  82. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/merge-code-into-single-file.sh +0 -0
  83. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/pipecat.png +0 -0
  84. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/pyproject.toml +0 -0
  85. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/restart.sh +0 -0
  86. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/restart_playbook.yml +0 -0
  87. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/setup.cfg +0 -0
  88. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/dv_pipecat_ai.egg-info/SOURCES.txt +0 -0
  89. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/dv_pipecat_ai.egg-info/dependency_links.txt +0 -0
  90. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/dv_pipecat_ai.egg-info/requires.txt +0 -0
  91. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/dv_pipecat_ai.egg-info/top_level.txt +0 -0
  92. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/__init__.py +0 -0
  93. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/__init__.py +0 -0
  94. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/base_llm_adapter.py +0 -0
  95. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/schemas/__init__.py +0 -0
  96. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/schemas/direct_function.py +0 -0
  97. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/schemas/function_schema.py +0 -0
  98. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/schemas/tools_schema.py +0 -0
  99. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/services/__init__.py +0 -0
  100. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/services/anthropic_adapter.py +0 -0
  101. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/services/aws_nova_sonic_adapter.py +0 -0
  102. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/services/bedrock_adapter.py +0 -0
  103. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/services/gemini_adapter.py +0 -0
  104. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/services/open_ai_adapter.py +0 -0
  105. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/adapters/services/open_ai_realtime_adapter.py +0 -0
  106. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/__init__.py +0 -0
  107. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/__init__.py +0 -0
  108. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-0.wav +0 -0
  109. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-1.wav +0 -0
  110. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-2.wav +0 -0
  111. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-3.wav +0 -0
  112. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-4.wav +0 -0
  113. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-5.wav +0 -0
  114. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-6.wav +0 -0
  115. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-7.wav +0 -0
  116. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-8.wav +0 -0
  117. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-9.wav +0 -0
  118. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-pound.wav +0 -0
  119. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/dtmf-star.wav +0 -0
  120. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/types.py +0 -0
  121. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/dtmf/utils.py +0 -0
  122. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/__init__.py +0 -0
  123. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/aic_filter.py +0 -0
  124. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/base_audio_filter.py +0 -0
  125. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/koala_filter.py +0 -0
  126. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/krisp_filter.py +0 -0
  127. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/krisp_viva_filter.py +0 -0
  128. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/noisereduce_filter.py +0 -0
  129. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/filters/pyrnn_local_filter.py +0 -0
  130. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/interruptions/__init__.py +0 -0
  131. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/interruptions/base_interruption_strategy.py +0 -0
  132. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/interruptions/min_words_interruption_strategy.py +0 -0
  133. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/mixers/__init__.py +0 -0
  134. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/mixers/base_audio_mixer.py +0 -0
  135. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/mixers/soundfile_mixer.py +0 -0
  136. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/resamplers/__init__.py +0 -0
  137. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/resamplers/base_audio_resampler.py +0 -0
  138. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/resamplers/resampy_resampler.py +0 -0
  139. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/resamplers/soxr_resampler.py +0 -0
  140. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/resamplers/soxr_stream_resampler.py +0 -0
  141. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/__init__.py +0 -0
  142. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/base_turn_analyzer.py +0 -0
  143. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/__init__.py +0 -0
  144. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/base_smart_turn.py +0 -0
  145. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/data/__init__.py +0 -0
  146. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/data/smart-turn-v3.0.onnx +0 -0
  147. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/fal_smart_turn.py +0 -0
  148. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/http_smart_turn.py +0 -0
  149. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/local_coreml_smart_turn.py +0 -0
  150. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/local_smart_turn.py +0 -0
  151. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v2.py +0 -0
  152. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/turn/smart_turn/local_smart_turn_v3.py +0 -0
  153. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/utils.py +0 -0
  154. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/vad/__init__.py +0 -0
  155. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/vad/data/README.md +0 -0
  156. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/vad/data/__init__.py +0 -0
  157. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/vad/data/silero_vad.onnx +0 -0
  158. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/vad/data/silero_vad_v2.onnx +0 -0
  159. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/vad/silero.py +0 -0
  160. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/audio/vad/vad_analyzer.py +0 -0
  161. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/clocks/__init__.py +0 -0
  162. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/clocks/base_clock.py +0 -0
  163. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/clocks/system_clock.py +0 -0
  164. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/extensions/__init__.py +0 -0
  165. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/extensions/ivr/__init__.py +0 -0
  166. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/extensions/ivr/ivr_navigator.py +0 -0
  167. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/extensions/voicemail/__init__.py +0 -0
  168. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/extensions/voicemail/voicemail_detector.py +0 -0
  169. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/frames/__init__.py +0 -0
  170. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/frames/frames.proto +0 -0
  171. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/frames/frames.py +0 -0
  172. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/frames/protobufs/frames_pb2.py +0 -0
  173. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/metrics/__init__.py +0 -0
  174. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/metrics/metrics.py +0 -0
  175. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/__init__.py +0 -0
  176. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/base_observer.py +0 -0
  177. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/loggers/__init__.py +0 -0
  178. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/loggers/debug_log_observer.py +0 -0
  179. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/loggers/llm_log_observer.py +0 -0
  180. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/loggers/transcription_log_observer.py +0 -0
  181. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/loggers/user_bot_latency_log_observer.py +0 -0
  182. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/observers/turn_tracking_observer.py +0 -0
  183. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/__init__.py +0 -0
  184. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/base_pipeline.py +0 -0
  185. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/base_task.py +0 -0
  186. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/llm_switcher.py +0 -0
  187. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/parallel_pipeline.py +0 -0
  188. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/pipeline.py +0 -0
  189. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/runner.py +0 -0
  190. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/service_switcher.py +0 -0
  191. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/sync_parallel_pipeline.py +0 -0
  192. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/task.py +0 -0
  193. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/task_observer.py +0 -0
  194. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/to_be_updated/merge_pipeline.py +0 -0
  195. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/pipeline/tts_switcher.py +0 -0
  196. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/__init__.py +0 -0
  197. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/__init__.py +0 -0
  198. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/dtmf_aggregator.py +0 -0
  199. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/gated.py +0 -0
  200. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/gated_llm_context.py +0 -0
  201. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/gated_open_ai_llm_context.py +0 -0
  202. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/llm_context.py +0 -0
  203. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/llm_response_universal.py +0 -0
  204. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/openai_llm_context.py +0 -0
  205. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/sentence.py +0 -0
  206. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/user_response.py +0 -0
  207. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/aggregators/vision_image_frame.py +0 -0
  208. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/async_generator.py +0 -0
  209. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/audio/__init__.py +0 -0
  210. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/audio/audio_buffer_processor.py +0 -0
  211. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/consumer_processor.py +0 -0
  212. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/__init__.py +0 -0
  213. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/frame_filter.py +0 -0
  214. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/function_filter.py +0 -0
  215. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/identity_filter.py +0 -0
  216. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/null_filter.py +0 -0
  217. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/stt_mute_filter.py +0 -0
  218. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/wake_check_filter.py +0 -0
  219. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/filters/wake_notifier_filter.py +0 -0
  220. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/frame_processor.py +0 -0
  221. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/frameworks/__init__.py +0 -0
  222. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/frameworks/langchain.py +0 -0
  223. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/frameworks/rtvi.py +0 -0
  224. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/frameworks/strands_agents.py +0 -0
  225. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/gstreamer/__init__.py +0 -0
  226. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/gstreamer/pipeline_source.py +0 -0
  227. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/idle_frame_processor.py +0 -0
  228. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/logger.py +0 -0
  229. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/metrics/__init__.py +0 -0
  230. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/metrics/frame_processor_metrics.py +0 -0
  231. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/metrics/sentry.py +0 -0
  232. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/producer_processor.py +0 -0
  233. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/text_transformer.py +0 -0
  234. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/transcript_processor.py +0 -0
  235. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/two_stage_user_idle_processor.py +0 -0
  236. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/processors/user_idle_processor.py +0 -0
  237. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/py.typed +0 -0
  238. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/runner/__init__.py +0 -0
  239. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/runner/daily.py +0 -0
  240. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/runner/livekit.py +0 -0
  241. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/runner/run.py +0 -0
  242. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/runner/types.py +0 -0
  243. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/runner/utils.py +0 -0
  244. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/__init__.py +0 -0
  245. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/base_serializer.py +0 -0
  246. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/exotel.py +0 -0
  247. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/livekit.py +0 -0
  248. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/plivo.py +0 -0
  249. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/protobuf.py +0 -0
  250. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/telnyx.py +0 -0
  251. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/serializers/twilio.py +0 -0
  252. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/__init__.py +0 -0
  253. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/ai_service.py +0 -0
  254. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/ai_services.py +0 -0
  255. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/anthropic/__init__.py +0 -0
  256. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/anthropic/llm.py +0 -0
  257. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/assemblyai/__init__.py +0 -0
  258. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/assemblyai/models.py +0 -0
  259. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/assemblyai/stt.py +0 -0
  260. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/asyncai/__init__.py +0 -0
  261. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/asyncai/tts.py +0 -0
  262. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/__init__.py +0 -0
  263. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/llm.py +0 -0
  264. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/nova_sonic/__init__.py +0 -0
  265. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/nova_sonic/context.py +0 -0
  266. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/nova_sonic/frames.py +0 -0
  267. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/nova_sonic/llm.py +0 -0
  268. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/nova_sonic/ready.wav +0 -0
  269. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/stt.py +0 -0
  270. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/tts.py +0 -0
  271. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws/utils.py +0 -0
  272. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws_nova_sonic/__init__.py +0 -0
  273. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws_nova_sonic/aws.py +0 -0
  274. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws_nova_sonic/context.py +0 -0
  275. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/aws_nova_sonic/frames.py +0 -0
  276. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/__init__.py +0 -0
  277. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/common.py +0 -0
  278. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/image.py +0 -0
  279. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/llm.py +0 -0
  280. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/realtime/__init__.py +0 -0
  281. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/realtime/llm.py +0 -0
  282. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/stt.py +0 -0
  283. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/azure/tts.py +0 -0
  284. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/cartesia/__init__.py +0 -0
  285. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/cartesia/stt.py +0 -0
  286. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/cartesia/tts.py +0 -0
  287. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/cerebras/__init__.py +0 -0
  288. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/cerebras/llm.py +0 -0
  289. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/deepgram/__init__.py +0 -0
  290. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/deepgram/flux/__init__.py +0 -0
  291. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/deepgram/flux/stt.py +0 -0
  292. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/deepgram/stt.py +0 -0
  293. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/deepgram/tts.py +0 -0
  294. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/deepseek/__init__.py +0 -0
  295. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/deepseek/llm.py +0 -0
  296. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/elevenlabs/__init__.py +0 -0
  297. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/elevenlabs/stt.py +0 -0
  298. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/elevenlabs/tts.py +0 -0
  299. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/fal/__init__.py +0 -0
  300. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/fal/image.py +0 -0
  301. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/fal/stt.py +0 -0
  302. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/fireworks/__init__.py +0 -0
  303. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/fireworks/llm.py +0 -0
  304. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/fish/__init__.py +0 -0
  305. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/fish/tts.py +0 -0
  306. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/gemini_multimodal_live/__init__.py +0 -0
  307. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/gemini_multimodal_live/events.py +0 -0
  308. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/gemini_multimodal_live/file_api.py +0 -0
  309. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/gemini_multimodal_live/gemini.py +0 -0
  310. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/gladia/__init__.py +0 -0
  311. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/gladia/config.py +0 -0
  312. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/gladia/stt.py +0 -0
  313. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/__init__.py +0 -0
  314. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/frames.py +0 -0
  315. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/gemini_live/__init__.py +0 -0
  316. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/gemini_live/file_api.py +0 -0
  317. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/gemini_live/llm.py +0 -0
  318. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/gemini_live/llm_vertex.py +0 -0
  319. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/google.py +0 -0
  320. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/image.py +0 -0
  321. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/llm.py +0 -0
  322. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/llm_openai.py +0 -0
  323. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/llm_vertex.py +0 -0
  324. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/rtvi.py +0 -0
  325. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/stt.py +0 -0
  326. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/google/tts.py +0 -0
  327. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/grok/__init__.py +0 -0
  328. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/grok/llm.py +0 -0
  329. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/groq/__init__.py +0 -0
  330. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/groq/llm.py +0 -0
  331. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/groq/stt.py +0 -0
  332. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/groq/tts.py +0 -0
  333. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/hamsa/__init__.py +0 -0
  334. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/hamsa/stt.py +0 -0
  335. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/heygen/__init__.py +0 -0
  336. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/heygen/api.py +0 -0
  337. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/heygen/client.py +0 -0
  338. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/heygen/video.py +0 -0
  339. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/hume/__init__.py +0 -0
  340. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/hume/tts.py +0 -0
  341. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/image_service.py +0 -0
  342. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/inworld/__init__.py +0 -0
  343. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/inworld/tts.py +0 -0
  344. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/llm_service.py +0 -0
  345. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/lmnt/__init__.py +0 -0
  346. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/lmnt/tts.py +0 -0
  347. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/mcp_service.py +0 -0
  348. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/mem0/__init__.py +0 -0
  349. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/mem0/memory.py +0 -0
  350. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/minimax/__init__.py +0 -0
  351. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/minimax/tts.py +0 -0
  352. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/mistral/__init__.py +0 -0
  353. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/mistral/llm.py +0 -0
  354. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/moondream/__init__.py +0 -0
  355. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/moondream/vision.py +0 -0
  356. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/neuphonic/__init__.py +0 -0
  357. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/neuphonic/tts.py +0 -0
  358. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/nim/__init__.py +0 -0
  359. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/nim/llm.py +0 -0
  360. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/ollama/__init__.py +0 -0
  361. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/ollama/llm.py +0 -0
  362. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/__init__.py +0 -0
  363. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/base_llm.py +0 -0
  364. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/image.py +0 -0
  365. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/llm.py +0 -0
  366. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/realtime/__init__.py +0 -0
  367. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/realtime/context.py +0 -0
  368. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/realtime/events.py +0 -0
  369. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/realtime/frames.py +0 -0
  370. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/realtime/llm.py +0 -0
  371. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/stt.py +0 -0
  372. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai/tts.py +0 -0
  373. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime/__init__.py +0 -0
  374. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime/azure.py +0 -0
  375. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime/context.py +0 -0
  376. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime/events.py +0 -0
  377. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime/frames.py +0 -0
  378. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime_beta/__init__.py +0 -0
  379. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime_beta/azure.py +0 -0
  380. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime_beta/context.py +0 -0
  381. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime_beta/events.py +0 -0
  382. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime_beta/frames.py +0 -0
  383. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openai_realtime_beta/openai.py +0 -0
  384. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openpipe/__init__.py +0 -0
  385. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openpipe/llm.py +0 -0
  386. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openrouter/__init__.py +0 -0
  387. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/openrouter/llm.py +0 -0
  388. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/perplexity/__init__.py +0 -0
  389. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/perplexity/llm.py +0 -0
  390. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/piper/__init__.py +0 -0
  391. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/piper/tts.py +0 -0
  392. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/playht/__init__.py +0 -0
  393. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/playht/tts.py +0 -0
  394. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/qwen/__init__.py +0 -0
  395. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/qwen/llm.py +0 -0
  396. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/rime/__init__.py +0 -0
  397. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/rime/tts.py +0 -0
  398. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/riva/__init__.py +0 -0
  399. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/riva/stt.py +0 -0
  400. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/riva/tts.py +0 -0
  401. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/salesforce/__init__.py +0 -0
  402. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/salesforce/llm.py +0 -0
  403. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/sambanova/__init__.py +0 -0
  404. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/sambanova/llm.py +0 -0
  405. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/sambanova/stt.py +0 -0
  406. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/sarvam/__init__.py +0 -0
  407. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/sarvam/stt.py +0 -0
  408. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/simli/__init__.py +0 -0
  409. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/simli/video.py +0 -0
  410. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/soniox/__init__.py +0 -0
  411. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/soniox/stt.py +0 -0
  412. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/speechmatics/__init__.py +0 -0
  413. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/speechmatics/stt.py +0 -0
  414. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/stt_service.py +0 -0
  415. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/tavus/__init__.py +0 -0
  416. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/tavus/video.py +0 -0
  417. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/together/__init__.py +0 -0
  418. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/together/llm.py +0 -0
  419. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/tts_service.py +0 -0
  420. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/ultravox/__init__.py +0 -0
  421. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/ultravox/stt.py +0 -0
  422. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/vision_service.py +0 -0
  423. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/vistaar/__init__.py +0 -0
  424. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/websocket_service.py +0 -0
  425. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/whisper/__init__.py +0 -0
  426. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/whisper/base_stt.py +0 -0
  427. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/whisper/stt.py +0 -0
  428. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/xtts/__init__.py +0 -0
  429. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/services/xtts/tts.py +0 -0
  430. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/sync/__init__.py +0 -0
  431. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/sync/base_notifier.py +0 -0
  432. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/sync/event_notifier.py +0 -0
  433. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/tests/__init__.py +0 -0
  434. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/tests/utils.py +0 -0
  435. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transcriptions/__init__.py +0 -0
  436. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transcriptions/language.py +0 -0
  437. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/__init__.py +0 -0
  438. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/base_input.py +0 -0
  439. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/base_transport.py +0 -0
  440. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/daily/__init__.py +0 -0
  441. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/daily/transport.py +0 -0
  442. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/daily/utils.py +0 -0
  443. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/heygen/__init__.py +0 -0
  444. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/heygen/transport.py +0 -0
  445. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/livekit/__init__.py +0 -0
  446. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/livekit/transport.py +0 -0
  447. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/local/__init__.py +0 -0
  448. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/local/audio.py +0 -0
  449. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/local/tk.py +0 -0
  450. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/network/__init__.py +0 -0
  451. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/network/fastapi_websocket.py +0 -0
  452. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/network/small_webrtc.py +0 -0
  453. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/network/webrtc_connection.py +0 -0
  454. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/network/websocket_client.py +0 -0
  455. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/network/websocket_server.py +0 -0
  456. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/services/__init__.py +0 -0
  457. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/services/daily.py +0 -0
  458. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/services/helpers/__init__.py +0 -0
  459. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/services/helpers/daily_rest.py +0 -0
  460. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/services/livekit.py +0 -0
  461. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/services/tavus.py +0 -0
  462. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/smallwebrtc/__init__.py +0 -0
  463. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/smallwebrtc/connection.py +0 -0
  464. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/smallwebrtc/request_handler.py +0 -0
  465. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/smallwebrtc/transport.py +0 -0
  466. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/tavus/__init__.py +0 -0
  467. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/tavus/transport.py +0 -0
  468. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/websocket/__init__.py +0 -0
  469. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/websocket/client.py +0 -0
  470. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/websocket/fastapi.py +0 -0
  471. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/websocket/server.py +0 -0
  472. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/whatsapp/__init__.py +0 -0
  473. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/whatsapp/api.py +0 -0
  474. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/transports/whatsapp/client.py +0 -0
  475. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/__init__.py +0 -0
  476. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/asyncio/__init__.py +0 -0
  477. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/asyncio/task_manager.py +0 -0
  478. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/base_object.py +0 -0
  479. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/logger_config.py +0 -0
  480. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/network.py +0 -0
  481. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/redis.py +0 -0
  482. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/string.py +0 -0
  483. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/text/__init__.py +0 -0
  484. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/text/base_text_aggregator.py +0 -0
  485. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/text/base_text_filter.py +0 -0
  486. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/text/markdown_text_filter.py +0 -0
  487. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/text/pattern_pair_aggregator.py +0 -0
  488. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/text/simple_text_aggregator.py +0 -0
  489. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/text/skip_tags_aggregator.py +0 -0
  490. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/time.py +0 -0
  491. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/__init__.py +0 -0
  492. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/class_decorators.py +0 -0
  493. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/conversation_context_provider.py +0 -0
  494. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/service_attributes.py +0 -0
  495. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/service_decorators.py +0 -0
  496. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/setup.py +0 -0
  497. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/turn_context_provider.py +0 -0
  498. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/tracing/turn_trace_observer.py +0 -0
  499. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/src/pipecat/utils/utils.py +0 -0
  500. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/stop_container.yml +0 -0
  501. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/test_elevenlabs_stt_segmented.py +0 -0
  502. {dv_pipecat_ai-0.0.85.dev832 → dv_pipecat_ai-0.0.85.dev834}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dv-pipecat-ai
3
- Version: 0.0.85.dev832
3
+ Version: 0.0.85.dev834
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.85.dev832
3
+ Version: 0.0.85.dev834
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
@@ -49,7 +49,6 @@ from pipecat.frames.frames import (
49
49
  OpenAILLMContextAssistantTimestampFrame,
50
50
  SpeechControlParamsFrame,
51
51
  StartFrame,
52
- StartInterruptionFrame,
53
52
  TextFrame,
54
53
  TranscriptDropFrame,
55
54
  TranscriptionFrame,
@@ -473,8 +472,8 @@ class LLMUserContextAggregator(LLMContextResponseAggregator):
473
472
  frame: The frame to process.
474
473
  direction: The direction of frame flow in the pipeline.
475
474
  """
476
- if isinstance(frame, StartInterruptionFrame):
477
- self.logger.debug("Received StartInterruptionFrame")
475
+ if isinstance(frame, InterruptionFrame):
476
+ self.logger.debug("Received InterruptionFrame")
478
477
  await super().process_frame(frame, direction)
479
478
 
480
479
  if isinstance(frame, StartFrame):
@@ -560,7 +559,7 @@ class LLMUserContextAggregator(LLMContextResponseAggregator):
560
559
  "Triggering interruption - pushing BotInterruptionFrame and aggregation"
561
560
  )
562
561
  # await self.push_frame(BotInterruptionFrame(), FrameDirection.UPSTREAM)
563
- await self.push_frame(StartInterruptionFrame(), FrameDirection.DOWNSTREAM)
562
+ await self.push_frame(InterruptionFrame(), FrameDirection.DOWNSTREAM)
564
563
  self.logger.debug("Pushed BotInterruptionFrame")
565
564
  # No interruption config - normal behavior (always push aggregation)
566
565
  await self._process_aggregation()
@@ -596,12 +595,8 @@ class LLMUserContextAggregator(LLMContextResponseAggregator):
596
595
  """Notify upstream processors that pending transcripts should be dropped."""
597
596
  if self._pending_transcription_ids:
598
597
  drop_frame = TranscriptDropFrame(transcript_ids=list(self._pending_transcription_ids))
599
- self.logger.debug(
600
- f"Dropping {len(self._pending_transcription_ids)} transcript chunk(s) due to {reason}"
601
- )
602
598
  await self.push_frame(drop_frame, FrameDirection.UPSTREAM)
603
599
  self._pending_transcription_ids.clear()
604
- self._aggregation = ""
605
600
 
606
601
  async def _start(self, frame: StartFrame):
607
602
  self._create_aggregation_task()
@@ -1,3 +1,5 @@
1
+ """DTMF aggregator processor for collecting and flushing DTMF input digits."""
2
+
1
3
  import asyncio
2
4
 
3
5
  from pipecat.frames.frames import (
@@ -8,8 +10,8 @@ from pipecat.frames.frames import (
8
10
  EndFrame,
9
11
  Frame,
10
12
  InputDTMFFrame,
13
+ InterruptionFrame,
11
14
  StartDTMFCaptureFrame,
12
- StartInterruptionFrame,
13
15
  TranscriptionFrame,
14
16
  WaitForDTMFFrame,
15
17
  )
@@ -19,10 +21,11 @@ from pipecat.utils.time import time_now_iso8601
19
21
 
20
22
  class DTMFAggregator(FrameProcessor):
21
23
  """Aggregates DTMF frames using idle wait logic.
24
+
22
25
  The aggregator accumulates digits from incoming InputDTMFFrame instances.
23
26
  It flushes the aggregated digits by emitting a TranscriptionFrame when:
24
27
  - No new digit arrives within the specified timeout period,
25
- - The termination digit (“#”) is received, or
28
+ - The termination digit ("#") is received, or
26
29
  - The number of digits aggregated equals the configured 'digits' value.
27
30
  """
28
31
 
@@ -34,7 +37,9 @@ class DTMFAggregator(FrameProcessor):
34
37
  digits: int = None,
35
38
  **kwargs,
36
39
  ):
37
- """:param timeout: Idle timeout in seconds before flushing the aggregated digits.
40
+ """Initialize the DTMF aggregator.
41
+
42
+ :param timeout: Idle timeout in seconds before flushing the aggregated digits.
38
43
  :param digits: Number of digits to aggregate before flushing.
39
44
  """
40
45
  super().__init__(**kwargs)
@@ -48,6 +53,7 @@ class DTMFAggregator(FrameProcessor):
48
53
  self._dtmf_capture_active = False
49
54
 
50
55
  async def process_frame(self, frame: Frame, direction: FrameDirection) -> None:
56
+ """Process incoming frames and handle DTMF input aggregation."""
51
57
  # Handle DTMF frames.
52
58
  await super().process_frame(frame, direction)
53
59
 
@@ -69,8 +75,8 @@ class DTMFAggregator(FrameProcessor):
69
75
  self._digit_event.set() # Trigger the timeout handler
70
76
  await self._start_dtmf_capture()
71
77
  await self.push_frame(frame, direction)
72
- elif isinstance(frame, StartInterruptionFrame):
73
- self.logger.debug("Received StartInterruptionFrame")
78
+ elif isinstance(frame, InterruptionFrame):
79
+ self.logger.debug("Received InterruptionFrame")
74
80
  if self._aggregation:
75
81
  await self.flush_aggregation()
76
82
  await self._end_dtmf_capture()
@@ -108,9 +114,7 @@ class DTMFAggregator(FrameProcessor):
108
114
  if "digits" in settings:
109
115
  new_digits = settings["digits"]
110
116
  if new_digits != self._digits:
111
- self.logger.debug(
112
- f"Updating DTMF digits from {self._digits} to {new_digits}"
113
- )
117
+ self.logger.debug(f"Updating DTMF digits from {self._digits} to {new_digits}")
114
118
  self._digits = new_digits
115
119
  settings_changed = True
116
120
 
@@ -125,9 +129,7 @@ class DTMFAggregator(FrameProcessor):
125
129
  new_end_on = set(end_value)
126
130
 
127
131
  if new_end_on != self._end_on:
128
- self.logger.debug(
129
- f"Updating DTMF end_on from {self._end_on} to {new_end_on}"
130
- )
132
+ self.logger.debug(f"Updating DTMF end_on from {self._end_on} to {new_end_on}")
131
133
  self._end_on = new_end_on
132
134
  settings_changed = True
133
135
 
@@ -142,9 +144,7 @@ class DTMFAggregator(FrameProcessor):
142
144
  new_reset_on = set(reset_value)
143
145
 
144
146
  if new_reset_on != self._reset_on:
145
- self.logger.debug(
146
- f"Updating DTMF reset_on from {self._reset_on} to {new_reset_on}"
147
- )
147
+ self.logger.debug(f"Updating DTMF reset_on from {self._reset_on} to {new_reset_on}")
148
148
  self._reset_on = new_reset_on
149
149
  settings_changed = True
150
150
 
@@ -183,9 +183,7 @@ class DTMFAggregator(FrameProcessor):
183
183
  def _create_aggregation_task(self, raise_timeout: bool = False) -> None:
184
184
  """Creates the aggregation task if it hasn't been created yet."""
185
185
  if not self._aggregation_task:
186
- self._aggregation_task = self.create_task(
187
- self._aggregation_task_handler(raise_timeout)
188
- )
186
+ self._aggregation_task = self.create_task(self._aggregation_task_handler(raise_timeout))
189
187
 
190
188
  async def _stop_aggregation_task(self) -> None:
191
189
  """Stops the aggregation task."""
@@ -198,9 +196,7 @@ class DTMFAggregator(FrameProcessor):
198
196
  while True:
199
197
  try:
200
198
  # Wait for a new digit signal with a timeout.
201
- await asyncio.wait_for(
202
- self._digit_event.wait(), timeout=self._idle_timeout
203
- )
199
+ await asyncio.wait_for(self._digit_event.wait(), timeout=self._idle_timeout)
204
200
  self._digit_event.clear()
205
201
  except asyncio.TimeoutError:
206
202
  # No new digit arrived within the timeout period; flush if needed
@@ -216,7 +212,7 @@ class DTMFAggregator(FrameProcessor):
216
212
  aggregated_frame.metadata["push_aggregation"] = True
217
213
 
218
214
  # Send interruption frame (as per original design)
219
- await self.push_frame(StartInterruptionFrame(), FrameDirection.DOWNSTREAM)
215
+ await self.push_frame(InterruptionFrame(), FrameDirection.DOWNSTREAM)
220
216
 
221
217
  # Push the transcription frame
222
218
  await self.push_frame(aggregated_frame, FrameDirection.DOWNSTREAM)
@@ -1,4 +1,6 @@
1
1
  # asterisk_ws_serializer.py
2
+ """Frame serializer for Asterisk WebSocket communication."""
3
+
2
4
  import base64
3
5
  import json
4
6
  from typing import Literal, Optional
@@ -12,8 +14,8 @@ from pipecat.frames.frames import (
12
14
  EndFrame,
13
15
  Frame,
14
16
  InputAudioRawFrame,
17
+ InterruptionFrame,
15
18
  StartFrame,
16
- StartInterruptionFrame,
17
19
  TransportMessageFrame,
18
20
  TransportMessageUrgentFrame,
19
21
  )
@@ -21,6 +23,8 @@ from pipecat.serializers.base_serializer import FrameSerializer, FrameSerializer
21
23
 
22
24
 
23
25
  class AsteriskFrameSerializer(FrameSerializer):
26
+ """Serializes Pipecat frames to/from Asterisk WebSocket JSON messages."""
27
+
24
28
  class InputParams(BaseModel):
25
29
  """Configuration parameters for AsteriskFrameSerializer.
26
30
 
@@ -39,6 +43,12 @@ class AsteriskFrameSerializer(FrameSerializer):
39
43
  auto_hang_up: bool = False # no-op here; adapter handles hangup
40
44
 
41
45
  def __init__(self, stream_id: str, params: Optional[InputParams] = None):
46
+ """Initialize the Asterisk frame serializer.
47
+
48
+ Args:
49
+ stream_id: Unique identifier for the media stream.
50
+ params: Configuration parameters for the serializer.
51
+ """
42
52
  self._stream_id = stream_id
43
53
  self._params = params or AsteriskFrameSerializer.InputParams()
44
54
  self._tel_rate = self._params.telephony_sample_rate
@@ -49,13 +59,16 @@ class AsteriskFrameSerializer(FrameSerializer):
49
59
 
50
60
  @property
51
61
  def type(self) -> FrameSerializerType:
62
+ """Return the serializer type (TEXT for JSON messages)."""
52
63
  return FrameSerializerType.TEXT # we send/recv JSON strings
53
64
 
54
65
  async def setup(self, frame: StartFrame):
66
+ """Setup the serializer with audio parameters from the StartFrame."""
55
67
  self._sample_rate = self._params.sample_rate or frame.audio_in_sample_rate
56
68
 
57
69
  # Pipecat -> Adapter (play to caller)
58
70
  async def serialize(self, frame: Frame) -> str | bytes | None:
71
+ """Serialize Pipecat frames to Asterisk WebSocket JSON messages."""
59
72
  # On pipeline end, ask bridge to hang up
60
73
  if (
61
74
  self._params.auto_hang_up
@@ -64,7 +77,7 @@ class AsteriskFrameSerializer(FrameSerializer):
64
77
  ):
65
78
  self._hangup_sent = True
66
79
  return json.dumps({"event": "hangup"})
67
- if isinstance(frame, StartInterruptionFrame):
80
+ if isinstance(frame, InterruptionFrame):
68
81
  return json.dumps({"event": "clear", "streamId": self._stream_id})
69
82
  if isinstance(frame, AudioRawFrame):
70
83
  pcm = frame.audio
@@ -114,6 +127,7 @@ class AsteriskFrameSerializer(FrameSerializer):
114
127
 
115
128
  # Adapter -> Pipecat (audio from caller)
116
129
  async def deserialize(self, data: str | bytes) -> Frame | None:
130
+ """Deserialize Asterisk WebSocket JSON messages to Pipecat frames."""
117
131
  try:
118
132
  msg = json.loads(data)
119
133
  except Exception:
@@ -22,9 +22,9 @@ from pipecat.frames.frames import (
22
22
  Frame,
23
23
  InputAudioRawFrame,
24
24
  InputDTMFFrame,
25
+ InterruptionFrame,
25
26
  KeypadEntry,
26
27
  StartFrame,
27
- StartInterruptionFrame,
28
28
  TransportMessageFrame,
29
29
  TransportMessageUrgentFrame,
30
30
  )
@@ -117,7 +117,7 @@ class ConVoxFrameSerializer(FrameSerializer):
117
117
  self._call_ended = True
118
118
  # Return the callEnd event to be sent via the WebSocket
119
119
  return await self._send_call_end_event()
120
- elif isinstance(frame, StartInterruptionFrame):
120
+ elif isinstance(frame, InterruptionFrame):
121
121
  # Clear/interrupt command for ConVox
122
122
  message = {
123
123
  "event": "clear",
@@ -28,8 +28,8 @@ from pipecat.frames.frames import (
28
28
  EndFrame,
29
29
  Frame,
30
30
  InputAudioRawFrame,
31
+ InterruptionFrame,
31
32
  StartFrame,
32
- StartInterruptionFrame,
33
33
  TransportMessageFrame,
34
34
  TransportMessageUrgentFrame,
35
35
  )
@@ -121,7 +121,7 @@ class CustomFrameSerializer(FrameSerializer):
121
121
  Returns:
122
122
  Serialized data as JSON string, or None if the frame isn't handled.
123
123
  """
124
- if isinstance(frame, StartInterruptionFrame):
124
+ if isinstance(frame, InterruptionFrame):
125
125
  # Send clear event to instruct client to discard buffered audio
126
126
  answer = {"event": "clear", "stream_sid": self._stream_sid}
127
127
  return json.dumps(answer)
@@ -23,7 +23,6 @@ from pipecat.frames.frames import (
23
23
  InterruptionFrame,
24
24
  LLMFullResponseEndFrame,
25
25
  StartFrame,
26
- StartInterruptionFrame,
27
26
  TTSAudioRawFrame,
28
27
  TTSStartedFrame,
29
28
  TTSStoppedFrame,
@@ -14,15 +14,15 @@ from loguru import logger
14
14
  from pydantic import BaseModel, Field
15
15
 
16
16
  from pipecat.frames.frames import (
17
- EndFrame,
18
17
  CancelFrame,
18
+ EndFrame,
19
19
  Frame,
20
+ InterruptionFrame,
20
21
  LLMFullResponseEndFrame,
21
22
  LLMFullResponseStartFrame,
22
23
  LLMMessagesFrame,
23
24
  LLMTextFrame,
24
25
  LLMUpdateSettingsFrame,
25
- StartInterruptionFrame,
26
26
  )
27
27
  from pipecat.processors.aggregators.llm_response import (
28
28
  LLMAssistantAggregatorParams,
@@ -391,7 +391,7 @@ class VistaarLLMService(LLMService):
391
391
  )
392
392
  await self.push_frame(frame, direction)
393
393
  return
394
- elif isinstance(frame, StartInterruptionFrame):
394
+ elif isinstance(frame, InterruptionFrame):
395
395
  await self._handle_interruption()
396
396
  await self.push_frame(frame, direction)
397
397
  return
@@ -467,4 +467,4 @@ class VistaarLLMService(LLMService):
467
467
 
468
468
  def can_generate_metrics(self) -> bool:
469
469
  """Check if this service can generate processing metrics."""
470
- return True
470
+ return True
@@ -50,6 +50,11 @@ from pipecat.utils.time import nanoseconds_to_seconds
50
50
 
51
51
  # TODO: When we use GeminiMultimodalLiveLLMService, we need to change this to 0.35 but that creates issue for faster TTS.
52
52
  BOT_VAD_STOP_SECS = 0.30
53
+ # For the very first bot utterance (e.g., intro), we can safely
54
+ # detect end-of-speech sooner to improve responsiveness for the
55
+ # user’s first short reply. Keep conservative to avoid mid-utterance
56
+ # false stops when TTS streams quickly.
57
+ FIRST_BOT_VAD_STOP_SECS = 0.08
53
58
 
54
59
 
55
60
  class BaseOutputTransport(FrameProcessor):
@@ -406,6 +411,9 @@ class BaseOutputTransport(FrameProcessor):
406
411
  self._bot_speaking_frame_period = 0.2
407
412
  # Last time the bot actually spoke.
408
413
  self._bot_speech_last_time = 0
414
+ # Before the first stop event, we use a shorter silence
415
+ # threshold to make the first turn more responsive.
416
+ self._first_stop_pending = True
409
417
 
410
418
  self._audio_task: Optional[asyncio.Task] = None
411
419
  self._video_task: Optional[asyncio.Task] = None
@@ -631,6 +639,10 @@ class BaseOutputTransport(FrameProcessor):
631
639
 
632
640
  self._bot_speaking = False
633
641
 
642
+ # Mark that the first stop has been completed so subsequent
643
+ # stops use the regular (longer) VAD stop threshold.
644
+ self._first_stop_pending = False
645
+
634
646
  # Clean audio buffer (there could be tiny left overs if not multiple
635
647
  # to our output chunk size).
636
648
  self._audio_buffer = bytearray()
@@ -690,9 +702,14 @@ class BaseOutputTransport(FrameProcessor):
690
702
  async def without_mixer(vad_stop_secs: float) -> AsyncGenerator[Frame, None]:
691
703
  while True:
692
704
  try:
693
- frame = await asyncio.wait_for(
694
- self._audio_queue.get(), timeout=vad_stop_secs
705
+ # Use a shorter timeout only for the first bot stop to
706
+ # accelerate the initial turn handoff right after the intro.
707
+ timeout = (
708
+ FIRST_BOT_VAD_STOP_SECS
709
+ if getattr(self, "_first_stop_pending", True)
710
+ else BOT_VAD_STOP_SECS
695
711
  )
712
+ frame = await asyncio.wait_for(self._audio_queue.get(), timeout=timeout)
696
713
  yield frame
697
714
  self._audio_queue.task_done()
698
715
  except asyncio.TimeoutError:
@@ -713,7 +730,13 @@ class BaseOutputTransport(FrameProcessor):
713
730
  except asyncio.QueueEmpty:
714
731
  # Notify the bot stopped speaking upstream if necessary.
715
732
  diff_time = time.time() - last_frame_time
716
- if diff_time > vad_stop_secs:
733
+ # Use a shorter threshold for the first stop only.
734
+ current_stop_secs = (
735
+ FIRST_BOT_VAD_STOP_SECS
736
+ if getattr(self, "_first_stop_pending", True)
737
+ else BOT_VAD_STOP_SECS
738
+ )
739
+ if diff_time > current_stop_secs:
717
740
  await self._bot_stopped_speaking()
718
741
  # Generate an audio frame with only the mixer's part.
719
742
  frame = OutputAudioRawFrame(