dv-pipecat-ai 0.0.74.dev770__py3-none-any.whl → 0.0.82.dev776__py3-none-any.whl

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 (244) hide show
  1. {dv_pipecat_ai-0.0.74.dev770.dist-info → dv_pipecat_ai-0.0.82.dev776.dist-info}/METADATA +137 -93
  2. dv_pipecat_ai-0.0.82.dev776.dist-info/RECORD +340 -0
  3. pipecat/__init__.py +17 -0
  4. pipecat/adapters/base_llm_adapter.py +36 -1
  5. pipecat/adapters/schemas/direct_function.py +296 -0
  6. pipecat/adapters/schemas/function_schema.py +15 -6
  7. pipecat/adapters/schemas/tools_schema.py +55 -7
  8. pipecat/adapters/services/anthropic_adapter.py +22 -3
  9. pipecat/adapters/services/aws_nova_sonic_adapter.py +23 -3
  10. pipecat/adapters/services/bedrock_adapter.py +22 -3
  11. pipecat/adapters/services/gemini_adapter.py +16 -3
  12. pipecat/adapters/services/open_ai_adapter.py +17 -2
  13. pipecat/adapters/services/open_ai_realtime_adapter.py +23 -3
  14. pipecat/audio/filters/base_audio_filter.py +30 -6
  15. pipecat/audio/filters/koala_filter.py +37 -2
  16. pipecat/audio/filters/krisp_filter.py +59 -6
  17. pipecat/audio/filters/noisereduce_filter.py +37 -0
  18. pipecat/audio/interruptions/base_interruption_strategy.py +25 -5
  19. pipecat/audio/interruptions/min_words_interruption_strategy.py +21 -4
  20. pipecat/audio/mixers/base_audio_mixer.py +30 -7
  21. pipecat/audio/mixers/soundfile_mixer.py +53 -6
  22. pipecat/audio/resamplers/base_audio_resampler.py +17 -9
  23. pipecat/audio/resamplers/resampy_resampler.py +26 -1
  24. pipecat/audio/resamplers/soxr_resampler.py +32 -1
  25. pipecat/audio/resamplers/soxr_stream_resampler.py +101 -0
  26. pipecat/audio/utils.py +194 -1
  27. pipecat/audio/vad/silero.py +60 -3
  28. pipecat/audio/vad/vad_analyzer.py +114 -30
  29. pipecat/clocks/base_clock.py +19 -0
  30. pipecat/clocks/system_clock.py +25 -0
  31. pipecat/extensions/voicemail/__init__.py +0 -0
  32. pipecat/extensions/voicemail/voicemail_detector.py +707 -0
  33. pipecat/frames/frames.py +590 -156
  34. pipecat/metrics/metrics.py +64 -1
  35. pipecat/observers/base_observer.py +58 -19
  36. pipecat/observers/loggers/debug_log_observer.py +56 -64
  37. pipecat/observers/loggers/llm_log_observer.py +8 -1
  38. pipecat/observers/loggers/transcription_log_observer.py +19 -7
  39. pipecat/observers/loggers/user_bot_latency_log_observer.py +32 -5
  40. pipecat/observers/turn_tracking_observer.py +26 -1
  41. pipecat/pipeline/base_pipeline.py +5 -7
  42. pipecat/pipeline/base_task.py +52 -9
  43. pipecat/pipeline/parallel_pipeline.py +121 -177
  44. pipecat/pipeline/pipeline.py +129 -20
  45. pipecat/pipeline/runner.py +50 -1
  46. pipecat/pipeline/sync_parallel_pipeline.py +132 -32
  47. pipecat/pipeline/task.py +263 -280
  48. pipecat/pipeline/task_observer.py +85 -34
  49. pipecat/pipeline/to_be_updated/merge_pipeline.py +32 -2
  50. pipecat/processors/aggregators/dtmf_aggregator.py +29 -22
  51. pipecat/processors/aggregators/gated.py +25 -24
  52. pipecat/processors/aggregators/gated_openai_llm_context.py +22 -2
  53. pipecat/processors/aggregators/llm_response.py +398 -89
  54. pipecat/processors/aggregators/openai_llm_context.py +161 -13
  55. pipecat/processors/aggregators/sentence.py +25 -14
  56. pipecat/processors/aggregators/user_response.py +28 -3
  57. pipecat/processors/aggregators/vision_image_frame.py +24 -14
  58. pipecat/processors/async_generator.py +28 -0
  59. pipecat/processors/audio/audio_buffer_processor.py +78 -37
  60. pipecat/processors/consumer_processor.py +25 -6
  61. pipecat/processors/filters/frame_filter.py +23 -0
  62. pipecat/processors/filters/function_filter.py +30 -0
  63. pipecat/processors/filters/identity_filter.py +17 -2
  64. pipecat/processors/filters/null_filter.py +24 -1
  65. pipecat/processors/filters/stt_mute_filter.py +56 -21
  66. pipecat/processors/filters/wake_check_filter.py +46 -3
  67. pipecat/processors/filters/wake_notifier_filter.py +21 -3
  68. pipecat/processors/frame_processor.py +488 -131
  69. pipecat/processors/frameworks/langchain.py +38 -3
  70. pipecat/processors/frameworks/rtvi.py +719 -34
  71. pipecat/processors/gstreamer/pipeline_source.py +41 -0
  72. pipecat/processors/idle_frame_processor.py +26 -3
  73. pipecat/processors/logger.py +23 -0
  74. pipecat/processors/metrics/frame_processor_metrics.py +77 -4
  75. pipecat/processors/metrics/sentry.py +42 -4
  76. pipecat/processors/producer_processor.py +34 -14
  77. pipecat/processors/text_transformer.py +22 -10
  78. pipecat/processors/transcript_processor.py +48 -29
  79. pipecat/processors/user_idle_processor.py +31 -21
  80. pipecat/runner/__init__.py +1 -0
  81. pipecat/runner/daily.py +132 -0
  82. pipecat/runner/livekit.py +148 -0
  83. pipecat/runner/run.py +543 -0
  84. pipecat/runner/types.py +67 -0
  85. pipecat/runner/utils.py +515 -0
  86. pipecat/serializers/base_serializer.py +42 -0
  87. pipecat/serializers/exotel.py +17 -6
  88. pipecat/serializers/genesys.py +95 -0
  89. pipecat/serializers/livekit.py +33 -0
  90. pipecat/serializers/plivo.py +16 -15
  91. pipecat/serializers/protobuf.py +37 -1
  92. pipecat/serializers/telnyx.py +18 -17
  93. pipecat/serializers/twilio.py +32 -16
  94. pipecat/services/ai_service.py +5 -3
  95. pipecat/services/anthropic/llm.py +113 -43
  96. pipecat/services/assemblyai/models.py +63 -5
  97. pipecat/services/assemblyai/stt.py +64 -11
  98. pipecat/services/asyncai/__init__.py +0 -0
  99. pipecat/services/asyncai/tts.py +501 -0
  100. pipecat/services/aws/llm.py +185 -111
  101. pipecat/services/aws/stt.py +217 -23
  102. pipecat/services/aws/tts.py +118 -52
  103. pipecat/services/aws/utils.py +101 -5
  104. pipecat/services/aws_nova_sonic/aws.py +82 -64
  105. pipecat/services/aws_nova_sonic/context.py +15 -6
  106. pipecat/services/azure/common.py +10 -2
  107. pipecat/services/azure/image.py +32 -0
  108. pipecat/services/azure/llm.py +9 -7
  109. pipecat/services/azure/stt.py +65 -2
  110. pipecat/services/azure/tts.py +154 -23
  111. pipecat/services/cartesia/stt.py +125 -8
  112. pipecat/services/cartesia/tts.py +102 -38
  113. pipecat/services/cerebras/llm.py +15 -23
  114. pipecat/services/deepgram/stt.py +19 -11
  115. pipecat/services/deepgram/tts.py +36 -0
  116. pipecat/services/deepseek/llm.py +14 -23
  117. pipecat/services/elevenlabs/tts.py +330 -64
  118. pipecat/services/fal/image.py +43 -0
  119. pipecat/services/fal/stt.py +48 -10
  120. pipecat/services/fireworks/llm.py +14 -21
  121. pipecat/services/fish/tts.py +109 -9
  122. pipecat/services/gemini_multimodal_live/__init__.py +1 -0
  123. pipecat/services/gemini_multimodal_live/events.py +83 -2
  124. pipecat/services/gemini_multimodal_live/file_api.py +189 -0
  125. pipecat/services/gemini_multimodal_live/gemini.py +218 -21
  126. pipecat/services/gladia/config.py +17 -10
  127. pipecat/services/gladia/stt.py +82 -36
  128. pipecat/services/google/frames.py +40 -0
  129. pipecat/services/google/google.py +2 -0
  130. pipecat/services/google/image.py +39 -2
  131. pipecat/services/google/llm.py +176 -58
  132. pipecat/services/google/llm_openai.py +26 -4
  133. pipecat/services/google/llm_vertex.py +37 -15
  134. pipecat/services/google/rtvi.py +41 -0
  135. pipecat/services/google/stt.py +65 -17
  136. pipecat/services/google/test-google-chirp.py +45 -0
  137. pipecat/services/google/tts.py +390 -19
  138. pipecat/services/grok/llm.py +8 -6
  139. pipecat/services/groq/llm.py +8 -6
  140. pipecat/services/groq/stt.py +13 -9
  141. pipecat/services/groq/tts.py +40 -0
  142. pipecat/services/hamsa/__init__.py +9 -0
  143. pipecat/services/hamsa/stt.py +241 -0
  144. pipecat/services/heygen/__init__.py +5 -0
  145. pipecat/services/heygen/api.py +281 -0
  146. pipecat/services/heygen/client.py +620 -0
  147. pipecat/services/heygen/video.py +338 -0
  148. pipecat/services/image_service.py +5 -3
  149. pipecat/services/inworld/__init__.py +1 -0
  150. pipecat/services/inworld/tts.py +592 -0
  151. pipecat/services/llm_service.py +127 -45
  152. pipecat/services/lmnt/tts.py +80 -7
  153. pipecat/services/mcp_service.py +85 -44
  154. pipecat/services/mem0/memory.py +42 -13
  155. pipecat/services/minimax/tts.py +74 -15
  156. pipecat/services/mistral/__init__.py +0 -0
  157. pipecat/services/mistral/llm.py +185 -0
  158. pipecat/services/moondream/vision.py +55 -10
  159. pipecat/services/neuphonic/tts.py +275 -48
  160. pipecat/services/nim/llm.py +8 -6
  161. pipecat/services/ollama/llm.py +27 -7
  162. pipecat/services/openai/base_llm.py +54 -16
  163. pipecat/services/openai/image.py +30 -0
  164. pipecat/services/openai/llm.py +7 -5
  165. pipecat/services/openai/stt.py +13 -9
  166. pipecat/services/openai/tts.py +42 -10
  167. pipecat/services/openai_realtime_beta/azure.py +11 -9
  168. pipecat/services/openai_realtime_beta/context.py +7 -5
  169. pipecat/services/openai_realtime_beta/events.py +10 -7
  170. pipecat/services/openai_realtime_beta/openai.py +37 -18
  171. pipecat/services/openpipe/llm.py +30 -24
  172. pipecat/services/openrouter/llm.py +9 -7
  173. pipecat/services/perplexity/llm.py +15 -19
  174. pipecat/services/piper/tts.py +26 -12
  175. pipecat/services/playht/tts.py +227 -65
  176. pipecat/services/qwen/llm.py +8 -6
  177. pipecat/services/rime/tts.py +128 -17
  178. pipecat/services/riva/stt.py +160 -22
  179. pipecat/services/riva/tts.py +67 -2
  180. pipecat/services/sambanova/llm.py +19 -17
  181. pipecat/services/sambanova/stt.py +14 -8
  182. pipecat/services/sarvam/tts.py +60 -13
  183. pipecat/services/simli/video.py +82 -21
  184. pipecat/services/soniox/__init__.py +0 -0
  185. pipecat/services/soniox/stt.py +398 -0
  186. pipecat/services/speechmatics/stt.py +29 -17
  187. pipecat/services/stt_service.py +47 -11
  188. pipecat/services/tavus/video.py +94 -25
  189. pipecat/services/together/llm.py +8 -6
  190. pipecat/services/tts_service.py +77 -53
  191. pipecat/services/ultravox/stt.py +46 -43
  192. pipecat/services/vision_service.py +5 -3
  193. pipecat/services/websocket_service.py +12 -11
  194. pipecat/services/whisper/base_stt.py +58 -12
  195. pipecat/services/whisper/stt.py +69 -58
  196. pipecat/services/xtts/tts.py +59 -2
  197. pipecat/sync/base_notifier.py +19 -0
  198. pipecat/sync/event_notifier.py +24 -0
  199. pipecat/tests/utils.py +73 -5
  200. pipecat/transcriptions/language.py +24 -0
  201. pipecat/transports/base_input.py +112 -8
  202. pipecat/transports/base_output.py +235 -13
  203. pipecat/transports/base_transport.py +119 -0
  204. pipecat/transports/local/audio.py +76 -0
  205. pipecat/transports/local/tk.py +84 -0
  206. pipecat/transports/network/fastapi_websocket.py +174 -15
  207. pipecat/transports/network/small_webrtc.py +383 -39
  208. pipecat/transports/network/webrtc_connection.py +214 -8
  209. pipecat/transports/network/websocket_client.py +171 -1
  210. pipecat/transports/network/websocket_server.py +147 -9
  211. pipecat/transports/services/daily.py +792 -70
  212. pipecat/transports/services/helpers/daily_rest.py +122 -129
  213. pipecat/transports/services/livekit.py +339 -4
  214. pipecat/transports/services/tavus.py +273 -38
  215. pipecat/utils/asyncio/task_manager.py +92 -186
  216. pipecat/utils/base_object.py +83 -1
  217. pipecat/utils/network.py +2 -0
  218. pipecat/utils/string.py +114 -58
  219. pipecat/utils/text/base_text_aggregator.py +44 -13
  220. pipecat/utils/text/base_text_filter.py +46 -0
  221. pipecat/utils/text/markdown_text_filter.py +70 -14
  222. pipecat/utils/text/pattern_pair_aggregator.py +18 -14
  223. pipecat/utils/text/simple_text_aggregator.py +43 -2
  224. pipecat/utils/text/skip_tags_aggregator.py +21 -13
  225. pipecat/utils/time.py +36 -0
  226. pipecat/utils/tracing/class_decorators.py +32 -7
  227. pipecat/utils/tracing/conversation_context_provider.py +12 -2
  228. pipecat/utils/tracing/service_attributes.py +80 -64
  229. pipecat/utils/tracing/service_decorators.py +48 -21
  230. pipecat/utils/tracing/setup.py +13 -7
  231. pipecat/utils/tracing/turn_context_provider.py +12 -2
  232. pipecat/utils/tracing/turn_trace_observer.py +27 -0
  233. pipecat/utils/utils.py +14 -14
  234. dv_pipecat_ai-0.0.74.dev770.dist-info/RECORD +0 -319
  235. pipecat/examples/daily_runner.py +0 -64
  236. pipecat/examples/run.py +0 -265
  237. pipecat/utils/asyncio/watchdog_async_iterator.py +0 -72
  238. pipecat/utils/asyncio/watchdog_event.py +0 -42
  239. pipecat/utils/asyncio/watchdog_priority_queue.py +0 -48
  240. pipecat/utils/asyncio/watchdog_queue.py +0 -48
  241. {dv_pipecat_ai-0.0.74.dev770.dist-info → dv_pipecat_ai-0.0.82.dev776.dist-info}/WHEEL +0 -0
  242. {dv_pipecat_ai-0.0.74.dev770.dist-info → dv_pipecat_ai-0.0.82.dev776.dist-info}/licenses/LICENSE +0 -0
  243. {dv_pipecat_ai-0.0.74.dev770.dist-info → dv_pipecat_ai-0.0.82.dev776.dist-info}/top_level.txt +0 -0
  244. /pipecat/{examples → extensions}/__init__.py +0 -0
@@ -1,319 +0,0 @@
1
- dv_pipecat_ai-0.0.74.dev770.dist-info/licenses/LICENSE,sha256=DWY2QGf2eMCFhuu2ChairtT6CB7BEFffNVhXWc4Od08,1301
2
- pipecat/__init__.py,sha256=mmaSUx1R7jV-RLHpUIZjCh5dCQPHY5NcGs777lAgO8U,289
3
- pipecat/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
- pipecat/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- pipecat/adapters/base_llm_adapter.py,sha256=wI-_5W_haeW8pvqOUfvBkPWggFhUYxmYkkhiOhJCxDs,782
6
- pipecat/adapters/schemas/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- pipecat/adapters/schemas/function_schema.py,sha256=CMJs5UNVr35SRgZpiy2Qb30CevRJSPSy2OWG-LjF6Xs,2266
8
- pipecat/adapters/schemas/tools_schema.py,sha256=A_gA4OQKXl6eaQ-k-XirJo41ClJ1pzCvq4FS49JvaiY,1327
9
- pipecat/adapters/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- pipecat/adapters/services/anthropic_adapter.py,sha256=8ZCa9p402uQB1ostTYkEVuOFRyEhJtwlaYpUr0gklS4,1139
11
- pipecat/adapters/services/aws_nova_sonic_adapter.py,sha256=FdsWGe-OF-d1nszwVrFf0V3b2klENvopaLyCreecUUM,1376
12
- pipecat/adapters/services/bedrock_adapter.py,sha256=j00rGec7PdxjVm5O61GwuBTSNBlp8TMVMuTQ31V-4GI,1264
13
- pipecat/adapters/services/gemini_adapter.py,sha256=nD16C8Go359upQWA7n1kkl-YyObeFF34ibsGkohDY7Q,967
14
- pipecat/adapters/services/open_ai_adapter.py,sha256=ZMP3rgBy4Hjd0lwyr74g0fJU6mc3C7RPHPlZQldCtt8,790
15
- pipecat/adapters/services/open_ai_realtime_adapter.py,sha256=yOKrJpG8qcrcOm2IzdFOOcXYzxPwJeXpJYrrcgtDFbQ,1202
16
- pipecat/audio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
- pipecat/audio/utils.py,sha256=RZmHr4GFhXNlPfj_n-rpry6iEEznqvZhrIcuhOdKEdw,3481
18
- pipecat/audio/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
- pipecat/audio/filters/base_audio_filter.py,sha256=-NYfQ-dv3JmlGoKvlqFUEpdpdBHm3m1D7Wb7A0FKRjg,1308
20
- pipecat/audio/filters/koala_filter.py,sha256=pW3u8E788B9bLiwHe1Ag82pDVb_ZBNixEY2M9FJFt-E,2414
21
- pipecat/audio/filters/krisp_filter.py,sha256=fEOsX8sv9uw4WxSppSElt7Sjoy1vtXiHbGI3N5GTrWs,3206
22
- pipecat/audio/filters/noisereduce_filter.py,sha256=R4Q3VZ0CWatGRnFIc_IQAwfwryH0e-CgWimwBjpw4JY,1460
23
- pipecat/audio/filters/pyrnn_local_filter.py,sha256=m1AU6Zp-5aciXl4xWiLz6g9tVku2kHYgoIE65F1LTo0,7450
24
- pipecat/audio/interruptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
25
- pipecat/audio/interruptions/base_interruption_strategy.py,sha256=aZNKANQUXqHEFmOmPHoOe9vTGWCWNzvw7cyqofOCzNs,1168
26
- pipecat/audio/interruptions/min_words_interruption_strategy.py,sha256=2S3js8jz7XSmAEbKBACCTy4JkNM6s9x_X02B_x8urd0,1131
27
- pipecat/audio/mixers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
28
- pipecat/audio/mixers/base_audio_mixer.py,sha256=Msc4EF2g2noMNiHKP3xsbF5iSkU2XWlNLI4p6izVLrI,1529
29
- pipecat/audio/mixers/soundfile_mixer.py,sha256=6yyPvdsCcsHVfi50zUWJwrb2nIiaTMXW8vuSfBS61p8,4925
30
- pipecat/audio/resamplers/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
31
- pipecat/audio/resamplers/base_audio_resampler.py,sha256=b84Iwp-Gv_DajEAowW5L3E4_NxBH6q53vrkKBqtFhC4,932
32
- pipecat/audio/resamplers/resampy_resampler.py,sha256=rdqv__B_ysBxx-2f63ofm9TA2jT1rs4xbiVyXk1NuRE,740
33
- pipecat/audio/resamplers/soxr_resampler.py,sha256=0xWEz-MBMhmUkOhmMewDUJVa132Vybekq7ws0o5EpBM,735
34
- pipecat/audio/turn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
35
- pipecat/audio/turn/base_turn_analyzer.py,sha256=hLOcH1WkP9iSk84boQv94RFYKEfEX-IHfO1y9pjkDzs,3213
36
- pipecat/audio/turn/smart_turn/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
37
- pipecat/audio/turn/smart_turn/base_smart_turn.py,sha256=HgUoRfo9tbXVMfmRbYBkm4FDY1AjUJ3CRe7t48Ny2WI,9672
38
- pipecat/audio/turn/smart_turn/fal_smart_turn.py,sha256=neahuTAY9SUQjacRYd19BERiuSHIMSpqzZ9uae_ZlWA,1606
39
- pipecat/audio/turn/smart_turn/http_smart_turn.py,sha256=s5QP2gd0BqQAlbRJ7hGuCwGqgEENfyRm6aB6jBgDoqE,4642
40
- pipecat/audio/turn/smart_turn/local_coreml_smart_turn.py,sha256=50kiBeZhnq7FZWZnzdSX8KUmhhQtkme0KH2rbiAJbCU,3140
41
- pipecat/audio/turn/smart_turn/local_smart_turn.py,sha256=KVodqUTu8onfmfeOywgH98vBCNvBb-B3pvsQlTKyP_4,3570
42
- pipecat/audio/turn/smart_turn/local_smart_turn_v2.py,sha256=aYLMDURpmYycQgKsxbNEENtUe5oujeQ9H3Lbi0GYmZA,7160
43
- pipecat/audio/vad/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
44
- pipecat/audio/vad/silero.py,sha256=0rEx8rrVA99Bixjd3KH16mVO59Pn_iZquPTdnuEkAGI,5723
45
- pipecat/audio/vad/vad_analyzer.py,sha256=Z2QaLOVfet5PZqmuAGTUTWepb1CkRCLhXIAbcCcwX2A,4492
46
- pipecat/audio/vad/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
47
- pipecat/audio/vad/data/silero_vad.onnx,sha256=JiOilT9v89LB5hdAxs23FoEzR5smff7xFKSjzFvdeI8,2327524
48
- pipecat/clocks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
- pipecat/clocks/base_clock.py,sha256=H9un-i9acRjshEZRkg2kMxoErkdSi5_AIDyYadERpHY,269
50
- pipecat/clocks/system_clock.py,sha256=A5E5VOeQUFO1oCmgiq4RyriTDzYKh3OvGl1ORpcBei8,398
51
- pipecat/examples/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
- pipecat/examples/daily_runner.py,sha256=kmCUUvhuDWXAuD8t-RSb9CSwV7vI2SpYHyr9Jch2Q4M,1975
53
- pipecat/examples/run.py,sha256=ZgDOyNBs8Aqqv4i2ZzBqZIFg_-e53XgMcnpmLlsPV5k,8673
54
- pipecat/frames/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
55
- pipecat/frames/frames.proto,sha256=JXZm3VXLR8zMOUcOuhVoe2mhM3MQIQGMJXLopdJO_5Y,839
56
- pipecat/frames/frames.py,sha256=sGrot5V_zvuIA8F29oZeKmS_odJyTYSqjaYf-obBS9Q,25454
57
- pipecat/frames/protobufs/frames_pb2.py,sha256=VHgGV_W7qQ4sfQK6RHb5_DggLm3PiSYMr6aBZ8_p1cQ,2590
58
- pipecat/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
59
- pipecat/metrics/metrics.py,sha256=DZqCv2yNMr8JPmnWHNr0ISddOt3COnc-exshLc06WE4,828
60
- pipecat/observers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
- pipecat/observers/base_observer.py,sha256=uop4TWFPTelqmMgkVhnJmme3keXdIaLnp4q6A42yYv4,2028
62
- pipecat/observers/turn_tracking_observer.py,sha256=gppBVgnc50ElYoqwIPjG0Vw1N6D9V3G79zOsk3zy9KA,7092
63
- pipecat/observers/loggers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
- pipecat/observers/loggers/debug_log_observer.py,sha256=Ue3tUGAboOVXDTfk2uDbVGJgl3VqqNpv1tWx-1we2KA,7982
65
- pipecat/observers/loggers/llm_log_observer.py,sha256=F36XYbsf03bgq3_GrvkAT61Au111MQ2b5rOkEGHjuBg,2972
66
- pipecat/observers/loggers/transcription_log_observer.py,sha256=neOglC7UIkT851gn9SdvfcoN4AlIMcnb4vB0LVZ5i4E,1368
67
- pipecat/observers/loggers/user_bot_latency_log_observer.py,sha256=Mn6EF__CgNclxn4CFiYs9F1KquSGOyiYQxGSx2ST9yc,1553
68
- pipecat/pipeline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
- pipecat/pipeline/base_pipeline.py,sha256=9yBul47x_YAeRvdwlJC1xU_OIoVX8GSKh53pz8sb8k8,394
70
- pipecat/pipeline/base_task.py,sha256=zgjAsegNUM-XP6coG_0eAGBgZauy3Sr9oj_EXUdHtHc,1468
71
- pipecat/pipeline/parallel_pipeline.py,sha256=mBE70jt7Vk7UETM9eeTFP-uiUGUBGee3yHx1UzSz51Q,8035
72
- pipecat/pipeline/pipeline.py,sha256=wfSTfcb365MRPwEywq0DX-7pqK9WHtxcMTYcY-_8Q5o,3430
73
- pipecat/pipeline/runner.py,sha256=n4XRRQLqVBIhst5lcDTbTVRwKV8YKVjE75Imns4JTaQ,2594
74
- pipecat/pipeline/sync_parallel_pipeline.py,sha256=dMskNFHg6O-KvNcM9p801UDqg8FP53dYPstF_a2r-iI,6861
75
- pipecat/pipeline/task.py,sha256=2wBedYuLsnlRg5RuAl1Je-11DKk3fgLrcrLm9srjqZo,32797
76
- pipecat/pipeline/task_observer.py,sha256=nm2X14OzjSH-mEqa1CRBAygpNrOzv3pPWida9zBigE4,4812
77
- pipecat/pipeline/to_be_updated/merge_pipeline.py,sha256=A9o1--MLrbs6Rxz1L5xOAB349AwXhz8y3vC8SwOsnUQ,803
78
- pipecat/processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
79
- pipecat/processors/async_generator.py,sha256=cNUzYNK8BiMjcIypgkZvuMGMVQegDdHTXEtPckRnW74,1264
80
- pipecat/processors/consumer_processor.py,sha256=kyBn2ijwlKxqLnilr2vz43yXla-RdtNOFKkU8I9ZmY0,2387
81
- pipecat/processors/dtmf_aggregator.py,sha256=KFR_EPOgLOvGFWaS5wh_RvJ5JYjfOeWhBfzG0XMpVZs,6947
82
- pipecat/processors/frame_processor.py,sha256=8uddOkgjS5UbetWC7vgHCBBIrQHZHGZFPs9XL_yx4wg,17934
83
- pipecat/processors/idle_frame_processor.py,sha256=taQXBlEZYoIS2EzrqGhZ6AivYA76f73vEnQzldtnwFU,2127
84
- pipecat/processors/logger.py,sha256=dMUusaG2DVbl3fnK1eDd8hmuxDosXdb9whtIIbzy2fM,1393
85
- pipecat/processors/producer_processor.py,sha256=53XtLM82j6EjN4EYifqkNn0hAteDu3vqcmSpKviPnWE,2428
86
- pipecat/processors/text_transformer.py,sha256=_4G8Pg8SBRgnMKLso0JcjFQDIj5VKchsJ_Zu2i2oi0k,1218
87
- pipecat/processors/transcript_processor.py,sha256=sUeh0aiL_bL_8yYNZmef4-b9KNWd6d9ivdnMshK1pMw,11304
88
- pipecat/processors/two_stage_user_idle_processor.py,sha256=uf2aZh_lfW-eMxmFogP3R4taAJ1yXOSqjKsR7oXtD0Y,2938
89
- pipecat/processors/user_idle_processor.py,sha256=1hxIK1PH8YsIrROw25G11iXVBTpOvYPq_TCC-Ij4-o8,7706
90
- pipecat/processors/aggregators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
91
- pipecat/processors/aggregators/dtmf_aggregator.py,sha256=lYsxhQBpnJJxLvV0XJVYw8mzYL2iFqY99oNDC3bi5N4,5038
92
- pipecat/processors/aggregators/gated.py,sha256=mSg5qP0XHZa7GSQ5p5GPpe8PNg6e9bnQ-Ld1ENps8Wo,3018
93
- pipecat/processors/aggregators/gated_openai_llm_context.py,sha256=_iLFFjMyQ6W3mzNsmjq7Q6BU3IR5dwvm4JFlHbPRlPA,2073
94
- pipecat/processors/aggregators/llm_response.py,sha256=STfx3NLZdO8RBUhxVky0jurjJwkQc-S7rN7N0RUJtj8,34210
95
- pipecat/processors/aggregators/openai_llm_context.py,sha256=Tw3vd-R-vzOWJHEWc51IgsJ9PE2aAcxloEvSvu7FBaw,8449
96
- pipecat/processors/aggregators/sentence.py,sha256=FlCK01CcvIcmWQ5PYWwpwQG-nRnpOFDHVHKEvjyJ7w0,1810
97
- pipecat/processors/aggregators/user_response.py,sha256=8mSaGKSBbI7dj2YWRqpCBKB6TI-_Fa2f2IiZ98nM4dc,791
98
- pipecat/processors/aggregators/vision_image_frame.py,sha256=r9HF7AnPZ-RB5lSy_n6RmMQ1NJoLmEYIUdHfxML0zys,1756
99
- pipecat/processors/audio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
100
- pipecat/processors/audio/audio_buffer_processor.py,sha256=ikVQoeQQ0UUZvev7EnBdV6eGWHdlhJHAgY2gKGIM5pc,11139
101
- pipecat/processors/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
102
- pipecat/processors/filters/frame_filter.py,sha256=k65imvISZ4pJITkI3fypB5KoW5QF-7JustfsUrRrcbA,855
103
- pipecat/processors/filters/function_filter.py,sha256=o-5ye86KNWa5uCiTUC2xMumJDwAlksZFPxP0jxL4AWA,1183
104
- pipecat/processors/filters/identity_filter.py,sha256=RfwwedqpPyRA8QowLD478qtiA_QeElu2_BIJokyDo60,923
105
- pipecat/processors/filters/null_filter.py,sha256=874MzzHulN0F2xXKdZFEWqQ6tLpSVVLfd_IkZBidcMo,684
106
- pipecat/processors/filters/stt_mute_filter.py,sha256=Ou0n8NW1PTZVI3bTmkQtSMOsTy4jgBtj7e8jmbWVp9o,7836
107
- pipecat/processors/filters/wake_check_filter.py,sha256=PL28BDgDlLeOcTVGWgM4DCfvEt0oUtHQHUAFy7zVJnI,3534
108
- pipecat/processors/filters/wake_notifier_filter.py,sha256=bEK7ps8LInG1WUcvpUAcX0K3K3FqMAz4Vcae-oSImVU,1200
109
- pipecat/processors/frameworks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
- pipecat/processors/frameworks/langchain.py,sha256=FZqYLFztub3AUeYO17eNuvvmm1tD52YsK09IQNx6AHE,2595
111
- pipecat/processors/frameworks/rtvi.py,sha256=EdZwZOih8pQq_lh880jA1T7mT20phrHuJbQt_CuqtqE,34601
112
- pipecat/processors/gstreamer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
113
- pipecat/processors/gstreamer/pipeline_source.py,sha256=FZHnqi9MrVRuZoGqL18y-kQxp6OuqU3bi1Ug8Qa1NFQ,7915
114
- pipecat/processors/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
115
- pipecat/processors/metrics/frame_processor_metrics.py,sha256=tgJPNEtFnvKg9CJmQhq0JqaoiQ5-8EUNnbl4jjV79RQ,4080
116
- pipecat/processors/metrics/sentry.py,sha256=d7jPF2MU8az6EnHqNQdcjrn8xHv8nf51Iw65SRra-DE,3560
117
- pipecat/serializers/__init__.py,sha256=OV61GQX5ZVU7l7Dt7UTBdv2wUF7ZvtbCoXryo7nnoGY,734
118
- pipecat/serializers/base_serializer.py,sha256=QskBHCsJkbPtkT3BcesDn_vpV2WTQv3O1td_hEKTOs4,659
119
- pipecat/serializers/convox.py,sha256=MXCLhV6GMnoP8bI6-EVrObhrftEyTGOmzVeIU5ywmPo,9536
120
- pipecat/serializers/exotel.py,sha256=fNsOpeoHj56P3gu2lHAdNdobXBmBwnhTHpu7NHjI64s,5456
121
- pipecat/serializers/livekit.py,sha256=WBcaOepxY4ALGXwMRVusmWTgVWSvhFCU0AxWJ6wRpdc,1462
122
- pipecat/serializers/plivo.py,sha256=zG96porUjmwP80h4GhEaBOlPu6EATbc1gLRKrKzWBqA,9213
123
- pipecat/serializers/protobuf.py,sha256=iTiVIz9zVA9me1ZcCCVqgbG985o7D-yBWjBy1BCkxdE,4052
124
- pipecat/serializers/telnyx.py,sha256=bN0XPl4ulGcWCx3IiUS1kISwt2nk2nsFBw7c5AtyqNQ,10851
125
- pipecat/serializers/twilio.py,sha256=za0tBY9Lv0YRrZnntuSkdyb_iM38Gf4vxQG8BhjyXpg,8913
126
- pipecat/services/__init__.py,sha256=B0B4BXpPNgYTf0orYxQvdhSyvtZwNj9Whqndgav4r4E,1205
127
- pipecat/services/ai_service.py,sha256=8l7bjuCLtsL5TvvCPO3OLXEJnolypOovRiD72Fy08dQ,5926
128
- pipecat/services/ai_services.py,sha256=_RrDWfM8adV17atzY9RxK0nXRVM5kbUkKrvN90GAWYM,795
129
- pipecat/services/image_service.py,sha256=vKigt3HLapoBdXkrDse3Hwyq_F8lIFtxlxE1QiFocDg,2289
130
- pipecat/services/llm_service.py,sha256=krTJRH2eGb7Xb4YohpM5Ce-Kw3vIqJ8mXjqWXupTlWk,20774
131
- pipecat/services/mcp_service.py,sha256=OYlVVq07Uyia4wfNCK6ou0uBGm3i0bXW3O9p5SM3YtU,12337
132
- pipecat/services/openai.py,sha256=fg5-MIvwqgKTN6i5Kp7GD6XUvMRo3nlughuNt9QqLGA,27546
133
- pipecat/services/stt_service.py,sha256=txmwfAtuWMZy30qAh3ZcdwMQ1_KSz_b008y_oGS9Lwc,9755
134
- pipecat/services/tts_service.py,sha256=JSnMJu_snrJCHFJypb-Up5eOIIFj2xjvQOO3_pWsOxE,33509
135
- pipecat/services/vision_service.py,sha256=t_n5hHa_SF6hEWNOlMPB1i4Z__Sv12ZEi9BlJg0iTuA,2457
136
- pipecat/services/websocket_service.py,sha256=rJo9PcwMy9P1fuEmZcPwvz90J28WBgujkN186AZtRVU,5747
137
- pipecat/services/anthropic/__init__.py,sha256=NfRQFoNZcUHsJA4mggeLalEmgM08TZdBjkRRjmyp6jE,261
138
- pipecat/services/anthropic/llm.py,sha256=lsRVh02D_JrW6z10Ci9sB-Z3VUTgUjehXX4zABam8GU,38044
139
- pipecat/services/assemblyai/__init__.py,sha256=2gso9D1m2vigu0E1NuAYwKCQSvuHWk3UR_5-J8KhBVM,263
140
- pipecat/services/assemblyai/models.py,sha256=BqOyciGUyreoMZGnxrxN-tQard3qOaVKysARJlkX8WQ,1584
141
- pipecat/services/assemblyai/stt.py,sha256=_P65dLoR46L0O9m8emEZvSjc0wUv956PNkUaKn_atNE,9733
142
- pipecat/services/aws/__init__.py,sha256=oCnvskCqC7mQpi-y3Pem-6OzJIuMMgHNUAgd3MfxD90,297
143
- pipecat/services/aws/llm.py,sha256=iP633SgqbkNoePc15tCRicKVVvq6K6PT38gVoAihX4I,39988
144
- pipecat/services/aws/stt.py,sha256=0yjajM-4JpXHwsdob4W2tvPjodfX6JOSppR4kwNRWrw,14198
145
- pipecat/services/aws/tts.py,sha256=iv6cNl57yTJCyQiygfFsuHYZrY_ivGuDp8hX8AS2Fw8,9001
146
- pipecat/services/aws/utils.py,sha256=0u-a-5SxxaOnlI2fzNInHwgPgtZEv74vujqkJDEETvM,10176
147
- pipecat/services/aws_nova_sonic/__init__.py,sha256=NxNyDI4MaTs9usTYBEjL5pZ6iJfMbKYajwJh3c2EVv4,48
148
- pipecat/services/aws_nova_sonic/aws.py,sha256=_Z4_SniVP2x6d2vOOZR0gbSiZRplSllZuMNqbgQkg4M,43656
149
- pipecat/services/aws_nova_sonic/context.py,sha256=b9A2r8jO97RbxBh-rNDMrJSjt9IwG2sdN4lpp8bo5Ao,12728
150
- pipecat/services/aws_nova_sonic/frames.py,sha256=IB399YEgmdd5n5IaCmRTJlvl6DCV9mZv7WABx_5LCRg,644
151
- pipecat/services/aws_nova_sonic/ready.wav,sha256=pxdKxZtYRV2IVv63v7K1EPkxyV_OxocMkaXbKsHfby0,23484
152
- pipecat/services/azure/__init__.py,sha256=mgnoJYeqKqwRvr18UZJhFZ2FTkGyob7r6IdtEiOeT3k,301
153
- pipecat/services/azure/common.py,sha256=9FNG8D_Vm_S2HSpSnSPxCX8QTj08QVTPNXjaGf5WrvU,9648
154
- pipecat/services/azure/image.py,sha256=a2jGpxkwJK792Poq9AI5kfET_Nmlk9ZXSUMdTkUmbiY,2958
155
- pipecat/services/azure/llm.py,sha256=AeFJVUL1nMrjJAIu4lEI5FDRgRfT7cqDXrMzwHJ2LVU,2211
156
- pipecat/services/azure/stt.py,sha256=N5Nsbc6p5532l4X5WV7PJMZnPy14xwmB2NN06BitQqU,10532
157
- pipecat/services/azure/tts.py,sha256=dqwZpEc01q0uCMr-ea_9s1CjjQiw8Tk5FyF_NLz5L4I,14526
158
- pipecat/services/cartesia/__init__.py,sha256=vzh0jBnfPwWdxFfV-tu0x1HFoOTgr9s91GYmD-CJUtY,284
159
- pipecat/services/cartesia/stt.py,sha256=gP7v9Yw8n30p0833rBKsUHkwnySyDZ8be-4t5iu-Gog,8055
160
- pipecat/services/cartesia/tts.py,sha256=OMnj6XDqO_nCYRljUHCTVzyBbpH_z8dmZY5xxIgitUw,20742
161
- pipecat/services/cerebras/__init__.py,sha256=5zBmqq9Zfcl-HC7ylekVS5qrRedbl1mAeEwUT-T-c_o,259
162
- pipecat/services/cerebras/llm.py,sha256=4lrosjc3Az6oTQ2BThsRKr-TVOtdLzHT7yNhanwMnGk,3192
163
- pipecat/services/deepgram/__init__.py,sha256=cOnxjla0rhsRdpC_UWoN8mXaX3kL3hFlnp9OjDeuC7I,284
164
- pipecat/services/deepgram/stt.py,sha256=xCuzUK3A-H1RDbT0nDy6-2qEnYcyGJOWj5ZaNVD88pw,12815
165
- pipecat/services/deepgram/tts.py,sha256=9zKiESYqJqJIeZkXkDUNpWzHB1ICE-NyTsBohosnkQc,2390
166
- pipecat/services/deepseek/__init__.py,sha256=bU5z_oNGzgrF_YpsD9pYIMtEibeZFaUobbRjJ9WcYyE,259
167
- pipecat/services/deepseek/llm.py,sha256=7VVoyPyHDvqWYhQmvBiIsagfA14pHm6zm45aXR_pcBE,3320
168
- pipecat/services/elevenlabs/__init__.py,sha256=FgA--iiHyoart9xZZGWTTrBaEjmFxJuugESjPXihI7A,263
169
- pipecat/services/elevenlabs/tts.py,sha256=fHj8EDsKDnvrxQOahYK4W_MKGMuE-1_V_pKFCg-HUyo,31439
170
- pipecat/services/fal/__init__.py,sha256=z_kfZETvUcKy68Lyvni4B-RtdkOvz3J3eh6sFDVKq6M,278
171
- pipecat/services/fal/image.py,sha256=3ExAz3h5I-OscJI_z4sbgtV581c8qe7-LdNZO0cZGKI,2729
172
- pipecat/services/fal/stt.py,sha256=GcdWLun0ya_wZIh_gzMJKbpOtnq39P2K3DIsq0ZCkJ8,8526
173
- pipecat/services/fireworks/__init__.py,sha256=-YCe9iOzvUmbNSQOtpbzG6xMxT69KTIC1oqgAVoykQ8,261
174
- pipecat/services/fireworks/llm.py,sha256=femq1eAgFNXVVjpP_CZp6eqHk-fCTO5JRPRDlY1yEv4,3237
175
- pipecat/services/fish/__init__.py,sha256=zXTvCM-fv0baT3uSV3FSGMyQKmNFDfj_Ka24LodPyHc,251
176
- pipecat/services/fish/tts.py,sha256=aZlaV_eF3KQUiXWJvFlLpwFGe81W6A5mxVK0iUpFu60,8007
177
- pipecat/services/gemini_multimodal_live/__init__.py,sha256=plwz4rIx_O6YPKKcS8hK_jTkwQsODGWjdkLTNvfhdaY,51
178
- pipecat/services/gemini_multimodal_live/events.py,sha256=xSnwLiBrHyIuKqr4dI2LBxzksfjSqVn5avadMmRcV2Q,12935
179
- pipecat/services/gemini_multimodal_live/gemini.py,sha256=KbGsm0-el2ErBSYDxKrskjPQatk0xDXL2xQd3Lx4tOM,46170
180
- pipecat/services/gladia/__init__.py,sha256=RhyPSWKluyK0keEVAOfHffTAhWo5hmytozf4a17p954,255
181
- pipecat/services/gladia/config.py,sha256=O--Japvo_rq5uZkcWRuQRwQJU2HGShwkwSU2kKw03oQ,6456
182
- pipecat/services/gladia/stt.py,sha256=Y1eb7Dtk1h_SBW1MB2SMSpYD0PHyPZDSIRooYPbHrV4,23500
183
- pipecat/services/google/__init__.py,sha256=6cH89Hqf5NVIqW4tvILdssxvJFQe7vYc2FYTuwEW5xg,464
184
- pipecat/services/google/frames.py,sha256=_b2pg-PlJ0I1VMKNhUZVP20XyLp9l4cDr6XjQiBLZ2Y,818
185
- pipecat/services/google/google.py,sha256=6cH89Hqf5NVIqW4tvILdssxvJFQe7vYc2FYTuwEW5xg,464
186
- pipecat/services/google/image.py,sha256=N2aNrMbZvJYWaIDrpDm-ZEaIWI_Lk8xelqBguNJuvHY,3158
187
- pipecat/services/google/llm.py,sha256=6w-xg2lJQSruOPp0S2c_mTU-LgQCNlzMXX_d0gCI6KQ,32072
188
- pipecat/services/google/llm_openai.py,sha256=5FBJSrOp7S2cTGE4nNv4USThNIKWqFBzkch8yOL78QY,6057
189
- pipecat/services/google/llm_vertex.py,sha256=diEs3lmEcotlI2MGgZHLLOUHpCNDQ_JuB_NxA_5VviA,4237
190
- pipecat/services/google/rtvi.py,sha256=BykluwuchZM2qOe-A_PiQM2l41HMwK9pG_hROkfuQ90,1636
191
- pipecat/services/google/stt.py,sha256=ch5gDKfTMbXebSDcEt_zT-Wo-6X-xA93H1HUlO21y5U,31341
192
- pipecat/services/google/tts.py,sha256=ApoS1KghKcjTT_TvLRv5uBQVh6UL7GP_nKZL5ooXLP8,18837
193
- pipecat/services/grok/__init__.py,sha256=PyaTSnqwxd8jdF5aFTe3lWM-TBhfDyUu9ahRl6nPS-4,251
194
- pipecat/services/grok/llm.py,sha256=P-PgdCFxZr-6bNGS96Hoi7qm84vAz99A-C4COgEq3Rc,7233
195
- pipecat/services/groq/__init__.py,sha256=jelL30bti_CbU6-1bZUTfJxACLi4h9HfMlpSV09aAQY,299
196
- pipecat/services/groq/llm.py,sha256=0muQnoryR8cU4l3aNCuQM4v9jNGXnT4GSkntl57OHMc,1757
197
- pipecat/services/groq/stt.py,sha256=pRSJmLpPhaFsCAS50KEsTMs-YCjoCQHgDnqznZpPO38,2279
198
- pipecat/services/groq/tts.py,sha256=qs2aZA6YIdMRQuKnASN6M6R6puSAhB9rMHu8TOxTv0Y,3313
199
- pipecat/services/lmnt/__init__.py,sha256=wb1p5pg2fAvA5fupVFoHqAEig8OlnHHzi6RjgT4smhs,251
200
- pipecat/services/lmnt/tts.py,sha256=KzHo8UVrBeEpUjO5lK4c0Qz-M_zgYlEAyPQdeQjqIws,8231
201
- pipecat/services/mem0/__init__.py,sha256=IF5kd9cSXnZzS6kyoH_5sMy0j9NiPFYIPlIaVkGBgI8,257
202
- pipecat/services/mem0/memory.py,sha256=1iP1JMPbn32t7K4l92KDI2DQRFy_N6LGY2huEEZMd_8,9141
203
- pipecat/services/minimax/__init__.py,sha256=rfHd18ccf-oCytmkKFSyZ1tV-FWglM1D-iKNkA2_sxc,110
204
- pipecat/services/minimax/tts.py,sha256=7V7g7AHafh7sq2IV4HksmNJ6H-PzbidcwmrypLDkTP8,10850
205
- pipecat/services/moondream/__init__.py,sha256=FBRSr8-vXhD7YyXcqOfjX7VFq3XcujwX3kp_MOs9vzg,267
206
- pipecat/services/moondream/vision.py,sha256=P12GgTdjwC8cvpmxT8rOZKJj3DpG3eehk72mqVhKT6Y,2773
207
- pipecat/services/neuphonic/__init__.py,sha256=31acn0fpeH6Zfan6kKDy4SVa9NXyeHjBl5DSZSYNRTs,261
208
- pipecat/services/neuphonic/tts.py,sha256=fdLMoOL-HIMPADsdKET86Oqg4F_9K78r2WDhin6I3x0,12235
209
- pipecat/services/nim/__init__.py,sha256=bRubOujNmtaBTSBgd3BBXP5fClzbn09ajYPmmYZsJpA,249
210
- pipecat/services/nim/llm.py,sha256=g6_I44y-AVu2ULu_ZOAa6HO2x9S9eVsZ2Pf5OuZDJWA,4275
211
- pipecat/services/ollama/__init__.py,sha256=aw-25zYsR8LR74OFFlMKMTnJjaKwOzdPWVsClueNRkI,255
212
- pipecat/services/ollama/llm.py,sha256=w8I_ww_iZJD8sLZfSXMRrcevcboSspTXwQHqQYCd8Ng,869
213
- pipecat/services/openai/__init__.py,sha256=A7_P9FgSIRzkFsmFVC22I3JfYZk3rtVCrzAkt-hSNGk,330
214
- pipecat/services/openai/base_llm.py,sha256=Iw8vUVCE6TrT9fNoob1MPhBkntslWW6my9JMXIygpUo,14498
215
- pipecat/services/openai/image.py,sha256=B-_VBY38Ev4ygyPLXMRKVpLdF1xEbvrw10OxpZhbtNA,1782
216
- pipecat/services/openai/llm.py,sha256=CuQ55dKrbbkzrnanUAwJvEGmvbVYiw-m9HcyWftzGoY,7326
217
- pipecat/services/openai/stt.py,sha256=Psb5VLnSzeqeM_an3w9Dx1ZhFsw7NTSPbEdRTxbJd2Y,2247
218
- pipecat/services/openai/tts.py,sha256=yrfp0BUAT2M6InB74ZyB4AJUDE5dM5Bbp16OUMviAjo,4533
219
- pipecat/services/openai_realtime_beta/__init__.py,sha256=heX2ztWOmOE3HvI8ooEAccghOs1HzXL0j9DaPaH_86w,248
220
- pipecat/services/openai_realtime_beta/azure.py,sha256=-0O6qe8_9ZC6p9sf6QIT9OpPzBSg0G08WUC2q_Mcirs,2302
221
- pipecat/services/openai_realtime_beta/context.py,sha256=6yMwJt5a7JfkCyjvSuNc26XFt0-LVaHwxRB7sXvCbqU,10719
222
- pipecat/services/openai_realtime_beta/events.py,sha256=Sey6fo9ZvaFqqpMipXVWTKmi4UDDVKPusZ4fzMOaqfY,30396
223
- pipecat/services/openai_realtime_beta/frames.py,sha256=dQrGu5FErvozPvlyvDADj8_ZiG8bclYAc2jQt5NE6aE,942
224
- pipecat/services/openai_realtime_beta/openai.py,sha256=W9ulnUrQErKQLwXszK6W-1uQOTGj2ibEhq1HfNfq5oM,31574
225
- pipecat/services/openpipe/__init__.py,sha256=skCnH03aR4OvAuTOD4zoQWrRseC6Fi0AljZwv6EUUQM,259
226
- pipecat/services/openpipe/llm.py,sha256=QbCrQ4iNg44hsxxSdcjYW64YMBxR5Fsbf55Pk9ceYC0,3861
227
- pipecat/services/openrouter/__init__.py,sha256=TEyNHtRkoRt6qse4jBNVEPKXCkqmT-xtQ0XB-zFe_jE,263
228
- pipecat/services/openrouter/llm.py,sha256=yIv6VpCwUx4OUZkQEPFfueLn4heeye143XD-m7suW5g,2079
229
- pipecat/services/perplexity/__init__.py,sha256=Qf0gyJWhkk7D0ehYf24vwtalOrcrp98aGaj5XuApdsA,263
230
- pipecat/services/perplexity/llm.py,sha256=WRA2MWboBpVIwYDr6t60cSkgaw_CUi5gnaiyQrU_jzo,5629
231
- pipecat/services/piper/__init__.py,sha256=BNqnIk6pG2DVvJ0uI2ZB93M3uXX_0B1ByfO7dnKjsBY,253
232
- pipecat/services/piper/tts.py,sha256=GvIbLVINfwXv-k-cl4NPDhqJpX5v9pbGZHai7h98uF0,3333
233
- pipecat/services/playht/__init__.py,sha256=Ko1WjLQtTaHvZAgCuONeRkkXRbrCuRx53C296VLa2YY,255
234
- pipecat/services/playht/tts.py,sha256=R5Lx7ybIA3A36MnV6YPF6aK1ELB9jybLGJoS7Ema0MA,15443
235
- pipecat/services/qwen/__init__.py,sha256=gS81Y-9gy_ke17m-2Tt-8mDrawcFNZ15_i0OnT-HYyg,251
236
- pipecat/services/qwen/llm.py,sha256=_XK36qUu-zwYTnsP4gNxywICywVYCfMftHfuNRsRDM0,1893
237
- pipecat/services/rime/__init__.py,sha256=lK26ZYuDZS51OybSVPAx6rt710UA1ZBP31wPL1_VeLg,251
238
- pipecat/services/rime/tts.py,sha256=K98XC3J2Iu3BoTtjsoiULPD3HRrKcLzzMOXjnv0V1t8,16745
239
- pipecat/services/riva/__init__.py,sha256=rObSsj504O_TMXhPBg_ymqKslZBhovlR-A0aaRZ0O6A,276
240
- pipecat/services/riva/stt.py,sha256=ZlTGie9vHOlSl_7ou08VNGkIpndZJlrRNeoQB19GUGM,20372
241
- pipecat/services/riva/tts.py,sha256=6F989kYc_8N7iFTgbcTMSvpKCUn8lt8ogE4pp1PJc3U,5573
242
- pipecat/services/sambanova/__init__.py,sha256=oTXExLic-qTcsfsiWmssf3Elclf3IIWoN41_2IpoF18,128
243
- pipecat/services/sambanova/llm.py,sha256=lm_jF1lnNi22X0Av_Uu4_0vMZ32MYQF67Am7lOSlufE,8748
244
- pipecat/services/sambanova/stt.py,sha256=YIoaD8Z44uWlv7eL_kv66Sr_HjsEFCWKDbMOsi8mo78,2359
245
- pipecat/services/sarvam/__init__.py,sha256=rfHd18ccf-oCytmkKFSyZ1tV-FWglM1D-iKNkA2_sxc,110
246
- pipecat/services/sarvam/tts.py,sha256=rWzP6v2oU721I5KhLxcgG_Af8FUNyTQk-4Ih55yItfo,6559
247
- pipecat/services/simli/__init__.py,sha256=cbDcqOaGsEgKbGYKpJ1Vv7LN4ZjOWA04sE84WW5vgQI,257
248
- pipecat/services/simli/video.py,sha256=tCQ7b2CemI6-CudQ4LQvCF56r7_y6p5-Pd99iMpB-hE,5401
249
- pipecat/services/speechmatics/__init__.py,sha256=Jgq1fqrZVkpWC21D79L1cn5Ub8PnYgnnCaqC5pOlbIc,89
250
- pipecat/services/speechmatics/stt.py,sha256=wdpHD6XpLB-jJ00XsI-8ANObqZb_wnhA8FWA5gOdEPU,43624
251
- pipecat/services/tavus/__init__.py,sha256=SNyyi2Xq6tXIihDG2Bwvmg6Srbd-uWd1RwG-NKWcPuI,257
252
- pipecat/services/tavus/video.py,sha256=-8L56ZRoiyOF8nMrA7OPedGknqWdbEhJFgtvZVpxO_4,8214
253
- pipecat/services/together/__init__.py,sha256=hNMycJDDf3CLiL9WA9fwvMdYphyDWLv0OabYIMgvC1c,259
254
- pipecat/services/together/llm.py,sha256=-ZTqWoyeVp3leKbRqQI2W021bOhrNm6ZxC3bTxuKP8Y,1879
255
- pipecat/services/ultravox/__init__.py,sha256=EoHCSXI2o0DFQslELgkhAGZtxDj63gZi-9ZEhXljaKE,259
256
- pipecat/services/ultravox/stt.py,sha256=SqjbivuCVSzNEAJXl21H9ii4x0pdInEimcUokhvw5ZM,16111
257
- pipecat/services/whisper/__init__.py,sha256=smADmw0Fv98k7cGRuHTEcljKTO2WdZqLpJd0qsTCwH8,281
258
- pipecat/services/whisper/base_stt.py,sha256=7lq1mj404Ke-nR_4uOVcO8ocVRx5AAfKrtaQ-ODZtjQ,6338
259
- pipecat/services/whisper/stt.py,sha256=ZLCRcu8b-RQh1rkB8CvJVYeTi16Xr5dKbe1DMqYFyhY,16855
260
- pipecat/services/xtts/__init__.py,sha256=OqUC2dRdFZnu0bvk5DmOBYTpPMNog-XC1OlL91r9teE,251
261
- pipecat/services/xtts/tts.py,sha256=D2_jtxpzeNTf-7Iw30dyKdz5xUHqIDUpMm4WN0GvmjY,6515
262
- pipecat/sync/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
263
- pipecat/sync/base_notifier.py,sha256=EztU02ZEoSPPOI-TeKBtrsEXLoPi97eY6ytIcTnfR_M,274
264
- pipecat/sync/event_notifier.py,sha256=AMnhuDHUN0scYeik4Gq01KNGzwgclVCNG4RU2_b8ge4,400
265
- pipecat/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
266
- pipecat/tests/utils.py,sha256=M6OP1J15v4nUUPTAcN80CPGX1goGPYyeAMvQuX2EChw,5010
267
- pipecat/transcriptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
268
- pipecat/transcriptions/language.py,sha256=DNpqzkbr7Sc6z1wEKtKgWkssXUmxEnIrtxGV6VrDDlY,7006
269
- pipecat/transports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
270
- pipecat/transports/base_input.py,sha256=XSOCH-BSjqV0oOXCkxDZggYYJ1Qh6QHG2B7rLK-FnpU,16411
271
- pipecat/transports/base_output.py,sha256=9kyQVvraPUuX8g2hoi9OVRKQunh80aaqVGPbOlv1RwI,26149
272
- pipecat/transports/base_transport.py,sha256=QFvrdbX8opcp7xsjJ6hXPW48tidhbIIs3CT5kyH-JWE,2549
273
- pipecat/transports/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
274
- pipecat/transports/local/audio.py,sha256=yNx1U6Qu-DeRejoWfOwA4M7kHvM2P1RMo3Pk7x7QJaA,4925
275
- pipecat/transports/local/tk.py,sha256=l9IZaT1Pchk3XeEFneXdb7cGnPKfy7HixoE5AUY7L_0,6149
276
- pipecat/transports/network/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
277
- pipecat/transports/network/fastapi_websocket.py,sha256=psPFkOxPZ5Y3twkKTWaRX6hc27l8ziEjbN_geOErLMM,13895
278
- pipecat/transports/network/small_webrtc.py,sha256=NJFFYDhhBC_3DtTSXeFL_DQB6fywNnbcCjtliEzVpd0,22971
279
- pipecat/transports/network/webrtc_connection.py,sha256=1AHMS_skWA7Xdq9uMlJ4fQG3ku_Bf7RoKBEu0xD6pjQ,16480
280
- pipecat/transports/network/websocket_client.py,sha256=bMKlJx-iwhCibo_lghkLx6RXpBdU9nffCdl1ubuFN2s,10826
281
- pipecat/transports/network/websocket_server.py,sha256=becksA7PfMHwHxlqfY6s7FI1Kt-RoV3sRT2sY_l1de0,12887
282
- pipecat/transports/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
283
- pipecat/transports/services/daily.py,sha256=CcIt3-5FH2BF29xSakxyk_la9h-3i2s8Ph-e-WYvT0s,60898
284
- pipecat/transports/services/livekit.py,sha256=R-F4ZWIAaVeWYQbsrI5VGRAYw2WA_3t9ZBD4U6Bay5o,24993
285
- pipecat/transports/services/tavus.py,sha256=IDDOPt1nycaI0YxUau_ZW0N81nFcYIzq_fVCpoLY-7k,20642
286
- pipecat/transports/services/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
287
- pipecat/transports/services/helpers/daily_rest.py,sha256=nZ4rMVcHIOeVFk-k3W3r5ygD6Z6Tzf2AhMDdXTE_WQ8,14387
288
- pipecat/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
289
- pipecat/utils/base_object.py,sha256=lwzaGw3zDlAKco_FpyDlGE7I2qaIJH_J8XzMZMetOyI,3107
290
- pipecat/utils/logger_config.py,sha256=5-RmvReZIINeqSXz3ALhEIiMZ_azmpOxnlIkdyCjWWk,5606
291
- pipecat/utils/network.py,sha256=EQjs8fGFsLyfXlb_rJD2EVRwHxMajT5COsb7nXi_lPs,736
292
- pipecat/utils/string.py,sha256=2TjNu_Rr61pVG26ihH3eOPb_YXSEWJUds4XfY9_tD48,4991
293
- pipecat/utils/time.py,sha256=Dl_efL22HGjLC-bp5pj2upE7dAlmCX2PdTfqks6gT8o,790
294
- pipecat/utils/utils.py,sha256=P1KUKYcP0kny9J8KxRZmXR4LLzTLIzqRvnUwz2BAXj8,2212
295
- pipecat/utils/asyncio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
296
- pipecat/utils/asyncio/task_manager.py,sha256=Sjvs-w6JykOu8bXlklTTm7FSz768-ax4Q3BCUhNxU3Y,12315
297
- pipecat/utils/asyncio/watchdog_async_iterator.py,sha256=-HwuvP442B4yRbdpYXdTHN-hXwLp5-dq3OlRbBervs4,2176
298
- pipecat/utils/asyncio/watchdog_event.py,sha256=UN1MryckpkKy-7q8KKsfrMgZr-8U7it_DNFVR6d4czE,1106
299
- pipecat/utils/asyncio/watchdog_priority_queue.py,sha256=oHBrxvmD-EVpnrHPERO6DkEP8J1qsbrhMZkrth6v6L0,1333
300
- pipecat/utils/asyncio/watchdog_queue.py,sha256=u8QytmLWdmmWN_fJeLBW1_WaX6GnEvoGAZDgXbDOp1w,1308
301
- pipecat/utils/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
302
- pipecat/utils/text/base_text_aggregator.py,sha256=hPFYy161OKVWHwj7lW_yRBQl-LdSHPFlc7fP9X-diEA,1658
303
- pipecat/utils/text/base_text_filter.py,sha256=otwVkUK36ucwuRUf5HqgdWvHVWkS13tYtiu5LtAz-xg,515
304
- pipecat/utils/text/markdown_text_filter.py,sha256=764TRjwBAZP9FyQ_jIR2ONVtV2pMIlPtbORDYAdwUqo,8125
305
- pipecat/utils/text/pattern_pair_aggregator.py,sha256=FHxFvxm_dNWBgpcwpgt_9iUrByI4zWte7HJQip32vPU,9367
306
- pipecat/utils/text/simple_text_aggregator.py,sha256=c2rhtFwYxujNfACAsb0U-YvDrGBSv3BsxYs78XDK5KA,971
307
- pipecat/utils/text/skip_tags_aggregator.py,sha256=7LsnUr0FoQii8teqiWzYvEzJEBeTI0acUkXnlzt5l60,3189
308
- pipecat/utils/tracing/__init__.py,sha256=nxmGDaJlpvrsxDnZZb3ApBDcTdZejoTIwF06sN0ULV0,141
309
- pipecat/utils/tracing/class_decorators.py,sha256=xI7v7kZCidX8P8kZZVanGtV5w_irPYVKP5WgmptrwP0,7223
310
- pipecat/utils/tracing/conversation_context_provider.py,sha256=OWPwep4fdSl4tUS4UnccnYtnTm_r_WSx_5gyU4lCwys,3311
311
- pipecat/utils/tracing/service_attributes.py,sha256=0TwbJv2cUvlu334li7vinWfiXLPly7uQ9_LB69MeeC4,16549
312
- pipecat/utils/tracing/service_decorators.py,sha256=w5pAf_MwhnYb7-KkcQfW7tJbkYBuPZXcsz1hp9tgH8o,49519
313
- pipecat/utils/tracing/setup.py,sha256=Q1Y7lh7isGPi4S2EzRgnbWgUwq8RyiZGvL8ilpQNk9w,2693
314
- pipecat/utils/tracing/turn_context_provider.py,sha256=Y8oHfdb7xj5IwOSoUCqhbEEKj7pz3V2g4CDeOwJzBZY,2203
315
- pipecat/utils/tracing/turn_trace_observer.py,sha256=9EZH3AfjN5KtVpLtZR7o6IEJNir_9I45wg41tQV3z90,8802
316
- dv_pipecat_ai-0.0.74.dev770.dist-info/METADATA,sha256=UBfJHjsg8m4WokU1rkBK2JnTzp19K86qVV46kaUdiMM,28892
317
- dv_pipecat_ai-0.0.74.dev770.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
318
- dv_pipecat_ai-0.0.74.dev770.dist-info/top_level.txt,sha256=kQzG20CxGf-nSsHmtXHx3hY2-8zHA3jYg8jk0TajqXc,8
319
- dv_pipecat_ai-0.0.74.dev770.dist-info/RECORD,,
@@ -1,64 +0,0 @@
1
- #
2
- # Copyright (c) 2024–2025, Daily
3
- #
4
- # SPDX-License-Identifier: BSD 2-Clause License
5
- #
6
-
7
- import argparse
8
- import os
9
- from typing import Optional
10
-
11
- import aiohttp
12
-
13
- from pipecat.transports.services.helpers.daily_rest import DailyRESTHelper
14
-
15
-
16
- async def configure(aiohttp_session: aiohttp.ClientSession):
17
- (url, token, _) = await configure_with_args(aiohttp_session)
18
- return (url, token)
19
-
20
-
21
- async def configure_with_args(
22
- aiohttp_session: aiohttp.ClientSession, parser: Optional[argparse.ArgumentParser] = None
23
- ):
24
- if not parser:
25
- parser = argparse.ArgumentParser(description="Daily AI SDK Bot Sample")
26
- parser.add_argument(
27
- "-u", "--url", type=str, required=False, help="URL of the Daily room to join"
28
- )
29
- parser.add_argument(
30
- "-k",
31
- "--apikey",
32
- type=str,
33
- required=False,
34
- help="Daily API Key (needed to create an owner token for the room)",
35
- )
36
-
37
- args, unknown = parser.parse_known_args()
38
-
39
- url = args.url or os.getenv("DAILY_SAMPLE_ROOM_URL")
40
- key = args.apikey or os.getenv("DAILY_API_KEY")
41
-
42
- if not url:
43
- raise Exception(
44
- "No Daily room specified. use the -u/--url option from the command line, or set DAILY_SAMPLE_ROOM_URL in your environment to specify a Daily room URL."
45
- )
46
-
47
- if not key:
48
- raise Exception(
49
- "No Daily API key specified. use the -k/--apikey option from the command line, or set DAILY_API_KEY in your environment to specify a Daily API key, available from https://dashboard.daily.co/developers."
50
- )
51
-
52
- daily_rest_helper = DailyRESTHelper(
53
- daily_api_key=key,
54
- daily_api_url=os.getenv("DAILY_API_URL", "https://api.daily.co/v1"),
55
- aiohttp_session=aiohttp_session,
56
- )
57
-
58
- # Create a meeting token for the given room with an expiration 1 hour in
59
- # the future.
60
- expiry_time: float = 60 * 60
61
-
62
- token = await daily_rest_helper.get_token(url, expiry_time)
63
-
64
- return (url, token, args)
pipecat/examples/run.py DELETED
@@ -1,265 +0,0 @@
1
- #
2
- # Copyright (c) 2024–2025, Daily
3
- #
4
- # SPDX-License-Identifier: BSD 2-Clause License
5
- #
6
-
7
- import argparse
8
- import asyncio
9
- import json
10
- import os
11
- import sys
12
- from contextlib import asynccontextmanager
13
- from typing import Any, Callable, Dict, Mapping, Optional
14
-
15
- import aiohttp
16
- import uvicorn
17
- from dotenv import load_dotenv
18
- from fastapi import BackgroundTasks, FastAPI, WebSocket
19
- from fastapi.middleware.cors import CORSMiddleware
20
- from fastapi.responses import HTMLResponse, RedirectResponse
21
- from loguru import logger
22
-
23
- from pipecat.serializers.twilio import TwilioFrameSerializer
24
- from pipecat.transports.base_transport import BaseTransport, TransportParams
25
- from pipecat.transports.network.fastapi_websocket import (
26
- FastAPIWebsocketParams,
27
- FastAPIWebsocketTransport,
28
- )
29
- from pipecat.transports.network.small_webrtc import SmallWebRTCTransport
30
- from pipecat.transports.network.webrtc_connection import IceServer, SmallWebRTCConnection
31
- from pipecat.transports.services.daily import DailyParams, DailyTransport
32
-
33
- # Load environment variables
34
- load_dotenv(override=True)
35
-
36
-
37
- def get_transport_client_id(transport: BaseTransport, client: Any) -> str:
38
- if isinstance(transport, SmallWebRTCTransport):
39
- return client.pc_id
40
- elif isinstance(transport, DailyTransport):
41
- return client["id"]
42
- logger.warning(f"Unable to get client id from unsupported transport {type(transport)}")
43
- return ""
44
-
45
-
46
- async def maybe_capture_participant_camera(
47
- transport: BaseTransport, client: Any, framerate: int = 0
48
- ):
49
- if isinstance(transport, DailyTransport):
50
- await transport.capture_participant_video(
51
- client["id"], framerate=framerate, video_source="camera"
52
- )
53
-
54
-
55
- async def maybe_capture_participant_screen(
56
- transport: BaseTransport, client: Any, framerate: int = 0
57
- ):
58
- if isinstance(transport, DailyTransport):
59
- await transport.capture_participant_video(
60
- client["id"], framerate=framerate, video_source="screenVideo"
61
- )
62
-
63
-
64
- def run_example_daily(
65
- run_example: Callable,
66
- args: argparse.Namespace,
67
- transport_params: Mapping[str, Callable] = {},
68
- ):
69
- logger.info("Running example with DailyTransport...")
70
-
71
- from pipecat.examples.daily_runner import configure
72
-
73
- async def run():
74
- async with aiohttp.ClientSession() as session:
75
- (room_url, token) = await configure(session)
76
-
77
- # Run example function with DailyTransport transport arguments.
78
- params: DailyParams = transport_params[args.transport]()
79
- transport = DailyTransport(room_url, token, "Pipecat", params=params)
80
- await run_example(transport, args, True)
81
-
82
- asyncio.run(run())
83
-
84
-
85
- def run_example_webrtc(
86
- run_example: Callable,
87
- args: argparse.Namespace,
88
- transport_params: Mapping[str, Callable] = {},
89
- ):
90
- logger.info("Running example with SmallWebRTCTransport...")
91
-
92
- from pipecat_ai_small_webrtc_prebuilt.frontend import SmallWebRTCPrebuiltUI
93
-
94
- app = FastAPI()
95
-
96
- # Store connections by pc_id
97
- pcs_map: Dict[str, SmallWebRTCConnection] = {}
98
-
99
- ice_servers = [
100
- IceServer(
101
- urls="stun:stun.l.google.com:19302",
102
- )
103
- ]
104
-
105
- # Mount the frontend at /
106
- app.mount("/client", SmallWebRTCPrebuiltUI)
107
-
108
- @app.get("/", include_in_schema=False)
109
- async def root_redirect():
110
- return RedirectResponse(url="/client/")
111
-
112
- @app.post("/api/offer")
113
- async def offer(request: dict, background_tasks: BackgroundTasks):
114
- pc_id = request.get("pc_id")
115
-
116
- if pc_id and pc_id in pcs_map:
117
- pipecat_connection = pcs_map[pc_id]
118
- logger.info(f"Reusing existing connection for pc_id: {pc_id}")
119
- await pipecat_connection.renegotiate(
120
- sdp=request["sdp"],
121
- type=request["type"],
122
- restart_pc=request.get("restart_pc", False),
123
- )
124
- else:
125
- pipecat_connection = SmallWebRTCConnection(ice_servers)
126
- await pipecat_connection.initialize(sdp=request["sdp"], type=request["type"])
127
-
128
- @pipecat_connection.event_handler("closed")
129
- async def handle_disconnected(webrtc_connection: SmallWebRTCConnection):
130
- logger.info(f"Discarding peer connection for pc_id: {webrtc_connection.pc_id}")
131
- pcs_map.pop(webrtc_connection.pc_id, None)
132
-
133
- # Run example function with SmallWebRTC transport arguments.
134
- params: TransportParams = transport_params[args.transport]()
135
- transport = SmallWebRTCTransport(params=params, webrtc_connection=pipecat_connection)
136
- background_tasks.add_task(run_example, transport, args, False)
137
-
138
- answer = pipecat_connection.get_answer()
139
- # Updating the peer connection inside the map
140
- pcs_map[answer["pc_id"]] = pipecat_connection
141
-
142
- return answer
143
-
144
- @asynccontextmanager
145
- async def lifespan(app: FastAPI):
146
- yield # Run app
147
- coros = [pc.disconnect() for pc in pcs_map.values()]
148
- await asyncio.gather(*coros)
149
- pcs_map.clear()
150
-
151
- uvicorn.run(app, host=args.host, port=args.port)
152
-
153
-
154
- def run_example_twilio(
155
- run_example: Callable,
156
- args: argparse.Namespace,
157
- transport_params: Mapping[str, Callable] = {},
158
- ):
159
- logger.info("Running example with FastAPIWebsocketTransport (Twilio)...")
160
-
161
- app = FastAPI()
162
-
163
- app.add_middleware(
164
- CORSMiddleware,
165
- allow_origins=["*"], # Allow all origins for testing
166
- allow_credentials=True,
167
- allow_methods=["*"],
168
- allow_headers=["*"],
169
- )
170
-
171
- @app.post("/")
172
- async def start_call():
173
- logger.debug("POST TwiML")
174
-
175
- xml_content = f"""<?xml version="1.0" encoding="UTF-8"?>
176
- <Response>
177
- <Connect>
178
- <Stream url="wss://{args.proxy}/ws"></Stream>
179
- </Connect>
180
- <Pause length="40"/>
181
- </Response>
182
- """
183
- return HTMLResponse(content=xml_content, media_type="application/xml")
184
-
185
- @app.websocket("/ws")
186
- async def websocket_endpoint(websocket: WebSocket):
187
- await websocket.accept()
188
-
189
- logger.debug("WebSocket connection accepted")
190
-
191
- # Reading Twilio data.
192
- start_data = websocket.iter_text()
193
- await start_data.__anext__()
194
- call_data = json.loads(await start_data.__anext__())
195
- print(call_data, flush=True)
196
- stream_sid = call_data["start"]["streamSid"]
197
- call_sid = call_data["start"]["callSid"]
198
-
199
- # Create websocket transport and update params.
200
- params: FastAPIWebsocketParams = transport_params[args.transport]()
201
- params.add_wav_header = False
202
- params.serializer = TwilioFrameSerializer(
203
- stream_sid=stream_sid,
204
- call_sid=call_sid,
205
- account_sid=os.getenv("TWILIO_ACCOUNT_SID", ""),
206
- auth_token=os.getenv("TWILIO_AUTH_TOKEN", ""),
207
- )
208
- transport = FastAPIWebsocketTransport(websocket=websocket, params=params)
209
- await run_example(transport, args, False)
210
-
211
- uvicorn.run(app, host=args.host, port=args.port)
212
-
213
-
214
- def run_main(
215
- run_example: Callable,
216
- args: argparse.Namespace,
217
- transport_params: Mapping[str, Callable] = {},
218
- ):
219
- if args.transport not in transport_params:
220
- logger.error(f"Transport '{args.transport}' not supported by this example")
221
- return
222
-
223
- match args.transport:
224
- case "daily":
225
- run_example_daily(run_example, args, transport_params)
226
- case "webrtc":
227
- run_example_webrtc(run_example, args, transport_params)
228
- case "twilio":
229
- run_example_twilio(run_example, args, transport_params)
230
-
231
-
232
- def main(
233
- run_example: Callable,
234
- *,
235
- parser: Optional[argparse.ArgumentParser] = None,
236
- transport_params: Mapping[str, Callable] = {},
237
- ):
238
- if not parser:
239
- parser = argparse.ArgumentParser(description="Pipecat Bot Runner")
240
- parser.add_argument(
241
- "--host", default="localhost", help="Host for HTTP server (default: localhost)"
242
- )
243
- parser.add_argument(
244
- "--port", type=int, default=7860, help="Port for HTTP server (default: 7860)"
245
- )
246
- parser.add_argument(
247
- "--transport",
248
- "-t",
249
- type=str,
250
- choices=["daily", "webrtc", "twilio"],
251
- default="webrtc",
252
- help="The transport this example should use",
253
- )
254
- parser.add_argument(
255
- "--proxy", "-x", help="A public proxy host name (no protocol, e.g. proxy.example.com)"
256
- )
257
- parser.add_argument("--verbose", "-v", action="count", default=0)
258
- args = parser.parse_args()
259
-
260
- # Log level
261
- logger.remove(0)
262
- logger.add(sys.stderr, level="TRACE" if args.verbose else "DEBUG")
263
-
264
- # Import the bot file
265
- run_main(run_example, args, transport_params)