dv-pipecat-ai 0.0.52.dev86__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.
Files changed (153) hide show
  1. dv_pipecat_ai-0.0.52.dev86.dist-info/LICENSE +24 -0
  2. dv_pipecat_ai-0.0.52.dev86.dist-info/METADATA +359 -0
  3. dv_pipecat_ai-0.0.52.dev86.dist-info/RECORD +153 -0
  4. dv_pipecat_ai-0.0.52.dev86.dist-info/WHEEL +5 -0
  5. dv_pipecat_ai-0.0.52.dev86.dist-info/top_level.txt +1 -0
  6. pipecat/__init__.py +0 -0
  7. pipecat/audio/__init__.py +0 -0
  8. pipecat/audio/filters/__init__.py +0 -0
  9. pipecat/audio/filters/base_audio_filter.py +47 -0
  10. pipecat/audio/filters/krisp_filter.py +78 -0
  11. pipecat/audio/filters/noisereduce_filter.py +54 -0
  12. pipecat/audio/mixers/__init__.py +0 -0
  13. pipecat/audio/mixers/base_audio_mixer.py +53 -0
  14. pipecat/audio/mixers/soundfile_mixer.py +146 -0
  15. pipecat/audio/utils.py +94 -0
  16. pipecat/audio/vad/__init__.py +0 -0
  17. pipecat/audio/vad/data/__init__.py +0 -0
  18. pipecat/audio/vad/data/silero_vad.onnx +0 -0
  19. pipecat/audio/vad/silero.py +164 -0
  20. pipecat/audio/vad/vad_analyzer.py +138 -0
  21. pipecat/clocks/__init__.py +0 -0
  22. pipecat/clocks/base_clock.py +17 -0
  23. pipecat/clocks/system_clock.py +20 -0
  24. pipecat/frames/__init__.py +0 -0
  25. pipecat/frames/frames.proto +44 -0
  26. pipecat/frames/frames.py +658 -0
  27. pipecat/frames/protobufs/frames_pb2.py +32 -0
  28. pipecat/metrics/__init__.py +0 -0
  29. pipecat/metrics/metrics.py +31 -0
  30. pipecat/pipeline/__init__.py +0 -0
  31. pipecat/pipeline/base_pipeline.py +20 -0
  32. pipecat/pipeline/parallel_pipeline.py +167 -0
  33. pipecat/pipeline/pipeline.py +94 -0
  34. pipecat/pipeline/runner.py +55 -0
  35. pipecat/pipeline/sync_parallel_pipeline.py +164 -0
  36. pipecat/pipeline/task.py +210 -0
  37. pipecat/pipeline/to_be_updated/merge_pipeline.py +22 -0
  38. pipecat/processors/__init__.py +0 -0
  39. pipecat/processors/aggregators/__init__.py +0 -0
  40. pipecat/processors/aggregators/gated.py +87 -0
  41. pipecat/processors/aggregators/gated_openai_llm_context.py +55 -0
  42. pipecat/processors/aggregators/llm_response.py +320 -0
  43. pipecat/processors/aggregators/openai_llm_context.py +247 -0
  44. pipecat/processors/aggregators/sentence.py +52 -0
  45. pipecat/processors/aggregators/user_response.py +157 -0
  46. pipecat/processors/aggregators/vision_image_frame.py +49 -0
  47. pipecat/processors/async_generator.py +44 -0
  48. pipecat/processors/audio/__init__.py +0 -0
  49. pipecat/processors/audio/audio_buffer_processor.py +102 -0
  50. pipecat/processors/audio/vad/__init__.py +0 -0
  51. pipecat/processors/audio/vad/silero.py +91 -0
  52. pipecat/processors/filters/__init__.py +0 -0
  53. pipecat/processors/filters/frame_filter.py +32 -0
  54. pipecat/processors/filters/function_filter.py +37 -0
  55. pipecat/processors/filters/identity_filter.py +30 -0
  56. pipecat/processors/filters/null_filter.py +14 -0
  57. pipecat/processors/filters/stt_mute_filter.py +157 -0
  58. pipecat/processors/filters/wake_check_filter.py +89 -0
  59. pipecat/processors/filters/wake_notifier_filter.py +40 -0
  60. pipecat/processors/frame_processor.py +342 -0
  61. pipecat/processors/frameworks/__init__.py +0 -0
  62. pipecat/processors/frameworks/langchain.py +75 -0
  63. pipecat/processors/frameworks/rtvi.py +854 -0
  64. pipecat/processors/gstreamer/__init__.py +0 -0
  65. pipecat/processors/gstreamer/pipeline_source.py +209 -0
  66. pipecat/processors/idle_frame_processor.py +68 -0
  67. pipecat/processors/logger.py +39 -0
  68. pipecat/processors/metrics/__init__.py +0 -0
  69. pipecat/processors/metrics/frame_processor_metrics.py +80 -0
  70. pipecat/processors/metrics/sentry.py +55 -0
  71. pipecat/processors/text_transformer.py +38 -0
  72. pipecat/processors/user_idle_processor.py +85 -0
  73. pipecat/serializers/__init__.py +0 -0
  74. pipecat/serializers/base_serializer.py +30 -0
  75. pipecat/serializers/livekit.py +45 -0
  76. pipecat/serializers/plivo.py +64 -0
  77. pipecat/serializers/protobuf.py +114 -0
  78. pipecat/serializers/twilio.py +63 -0
  79. pipecat/services/__init__.py +0 -0
  80. pipecat/services/ai_services.py +626 -0
  81. pipecat/services/anthropic.py +755 -0
  82. pipecat/services/assemblyai.py +152 -0
  83. pipecat/services/aws.py +246 -0
  84. pipecat/services/azure.py +765 -0
  85. pipecat/services/canonical.py +204 -0
  86. pipecat/services/cartesia.py +434 -0
  87. pipecat/services/deepgram.py +234 -0
  88. pipecat/services/elevenlabs.py +438 -0
  89. pipecat/services/fal.py +84 -0
  90. pipecat/services/fireworks.py +76 -0
  91. pipecat/services/gemini_multimodal_live/__init__.py +1 -0
  92. pipecat/services/gemini_multimodal_live/audio_transcriber.py +100 -0
  93. pipecat/services/gemini_multimodal_live/events.py +151 -0
  94. pipecat/services/gemini_multimodal_live/gemini.py +660 -0
  95. pipecat/services/gladia.py +238 -0
  96. pipecat/services/google.py +843 -0
  97. pipecat/services/grok.py +103 -0
  98. pipecat/services/groq.py +39 -0
  99. pipecat/services/lmnt.py +229 -0
  100. pipecat/services/moondream.py +90 -0
  101. pipecat/services/nim.py +97 -0
  102. pipecat/services/ollama.py +12 -0
  103. pipecat/services/openai.py +605 -0
  104. pipecat/services/openai_realtime_beta/__init__.py +2 -0
  105. pipecat/services/openai_realtime_beta/context.py +223 -0
  106. pipecat/services/openai_realtime_beta/events.py +433 -0
  107. pipecat/services/openai_realtime_beta/frames.py +19 -0
  108. pipecat/services/openai_realtime_beta/openai.py +553 -0
  109. pipecat/services/openpipe.py +66 -0
  110. pipecat/services/playht.py +413 -0
  111. pipecat/services/rime.py +101 -0
  112. pipecat/services/riva.py +266 -0
  113. pipecat/services/simli.py +137 -0
  114. pipecat/services/tavus.py +137 -0
  115. pipecat/services/to_be_updated/__init__.py +0 -0
  116. pipecat/services/to_be_updated/cloudflare_ai_service.py +68 -0
  117. pipecat/services/to_be_updated/google_ai_service.py +29 -0
  118. pipecat/services/to_be_updated/huggingface_ai_service.py +33 -0
  119. pipecat/services/to_be_updated/mock_ai_service.py +27 -0
  120. pipecat/services/together.py +39 -0
  121. pipecat/services/whisper.py +97 -0
  122. pipecat/services/xtts.py +177 -0
  123. pipecat/sync/__init__.py +0 -0
  124. pipecat/sync/base_notifier.py +17 -0
  125. pipecat/sync/event_notifier.py +21 -0
  126. pipecat/transcriptions/__init__.py +0 -0
  127. pipecat/transcriptions/language.py +429 -0
  128. pipecat/transports/__init__.py +0 -0
  129. pipecat/transports/base_input.py +195 -0
  130. pipecat/transports/base_output.py +473 -0
  131. pipecat/transports/base_transport.py +94 -0
  132. pipecat/transports/local/__init__.py +0 -0
  133. pipecat/transports/local/audio.py +118 -0
  134. pipecat/transports/local/tk.py +149 -0
  135. pipecat/transports/network/__init__.py +0 -0
  136. pipecat/transports/network/fastapi_websocket.py +204 -0
  137. pipecat/transports/network/websocket_server.py +249 -0
  138. pipecat/transports/services/__init__.py +0 -0
  139. pipecat/transports/services/daily.py +1114 -0
  140. pipecat/transports/services/helpers/__init__.py +0 -0
  141. pipecat/transports/services/helpers/daily_rest.py +156 -0
  142. pipecat/transports/services/livekit.py +595 -0
  143. pipecat/utils/__init__.py +0 -0
  144. pipecat/utils/string.py +25 -0
  145. pipecat/utils/test_frame_processor.py +45 -0
  146. pipecat/utils/text/__init__.py +0 -0
  147. pipecat/utils/text/base_text_filter.py +26 -0
  148. pipecat/utils/text/markdown_text_filter.py +216 -0
  149. pipecat/utils/time.py +28 -0
  150. pipecat/utils/utils.py +38 -0
  151. pipecat/vad/__init__.py +0 -0
  152. pipecat/vad/silero.py +16 -0
  153. pipecat/vad/vad_analyzer.py +15 -0
@@ -0,0 +1,24 @@
1
+ BSD 2-Clause License
2
+
3
+ Copyright (c) 2024, Daily
4
+
5
+ Redistribution and use in source and binary forms, with or without
6
+ modification, are permitted provided that the following conditions are met:
7
+
8
+ 1. Redistributions of source code must retain the above copyright notice, this
9
+ list of conditions and the following disclaimer.
10
+
11
+ 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ this list of conditions and the following disclaimer in the documentation
13
+ and/or other materials provided with the distribution.
14
+
15
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
+ DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
19
+ FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20
+ DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
21
+ SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
22
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
23
+ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24
+ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
@@ -0,0 +1,359 @@
1
+ Metadata-Version: 2.1
2
+ Name: dv-pipecat-ai
3
+ Version: 0.0.52.dev86
4
+ Summary: An open source framework for voice (and multimodal) assistants
5
+ License: BSD 2-Clause License
6
+ Project-URL: Source, https://github.com/pipecat-ai/pipecat
7
+ Project-URL: Website, https://pipecat.ai
8
+ Keywords: webrtc,audio,video,ai
9
+ Classifier: Development Status :: 5 - Production/Stable
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: License :: OSI Approved :: BSD License
12
+ Classifier: Topic :: Communications :: Conferencing
13
+ Classifier: Topic :: Multimedia :: Sound/Audio
14
+ Classifier: Topic :: Multimedia :: Video
15
+ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
16
+ Requires-Python: >=3.10
17
+ Description-Content-Type: text/markdown
18
+ License-File: LICENSE
19
+ Requires-Dist: aiohttp~=3.11.9
20
+ Requires-Dist: loguru~=0.7.2
21
+ Requires-Dist: Markdown~=3.7
22
+ Requires-Dist: numpy~=1.26.4
23
+ Requires-Dist: Pillow~=10.4.0
24
+ Requires-Dist: protobuf~=5.29.1
25
+ Requires-Dist: pydantic~=2.8.2
26
+ Requires-Dist: pyloudnorm~=0.1.1
27
+ Requires-Dist: resampy~=0.4.3
28
+ Requires-Dist: tenacity~=9.0.0
29
+ Provides-Extra: anthropic
30
+ Requires-Dist: anthropic~=0.40.0; extra == "anthropic"
31
+ Provides-Extra: assemblyai
32
+ Requires-Dist: assemblyai~=0.34.0; extra == "assemblyai"
33
+ Provides-Extra: aws
34
+ Requires-Dist: boto3~=1.35.27; extra == "aws"
35
+ Provides-Extra: azure
36
+ Requires-Dist: azure-cognitiveservices-speech~=1.41.1; extra == "azure"
37
+ Requires-Dist: openai~=1.50.2; extra == "azure"
38
+ Provides-Extra: canonical
39
+ Requires-Dist: aiofiles~=24.1.0; extra == "canonical"
40
+ Provides-Extra: cartesia
41
+ Requires-Dist: cartesia~=1.0.13; extra == "cartesia"
42
+ Requires-Dist: websockets~=13.1; extra == "cartesia"
43
+ Provides-Extra: daily
44
+ Requires-Dist: daily-python~=0.13.0; extra == "daily"
45
+ Provides-Extra: deepgram
46
+ Requires-Dist: deepgram-sdk~=3.7.7; extra == "deepgram"
47
+ Provides-Extra: elevenlabs
48
+ Requires-Dist: websockets~=13.1; extra == "elevenlabs"
49
+ Provides-Extra: examples
50
+ Requires-Dist: python-dotenv~=1.0.1; extra == "examples"
51
+ Requires-Dist: flask~=3.0.3; extra == "examples"
52
+ Requires-Dist: flask_cors~=4.0.1; extra == "examples"
53
+ Provides-Extra: fal
54
+ Requires-Dist: fal-client~=0.4.1; extra == "fal"
55
+ Provides-Extra: gladia
56
+ Requires-Dist: websockets~=13.1; extra == "gladia"
57
+ Provides-Extra: google
58
+ Requires-Dist: google-generativeai~=0.8.3; extra == "google"
59
+ Requires-Dist: google-cloud-texttospeech~=2.21.1; extra == "google"
60
+ Provides-Extra: grok
61
+ Requires-Dist: openai~=1.50.2; extra == "grok"
62
+ Provides-Extra: groq
63
+ Requires-Dist: openai~=1.50.2; extra == "groq"
64
+ Provides-Extra: gstreamer
65
+ Requires-Dist: pygobject~=3.48.2; extra == "gstreamer"
66
+ Provides-Extra: fireworks
67
+ Requires-Dist: openai~=1.50.2; extra == "fireworks"
68
+ Provides-Extra: krisp
69
+ Requires-Dist: pipecat-ai-krisp~=0.3.0; extra == "krisp"
70
+ Provides-Extra: langchain
71
+ Requires-Dist: langchain~=0.2.14; extra == "langchain"
72
+ Requires-Dist: langchain-community~=0.2.12; extra == "langchain"
73
+ Requires-Dist: langchain-openai~=0.1.20; extra == "langchain"
74
+ Provides-Extra: livekit
75
+ Requires-Dist: livekit~=0.17.5; extra == "livekit"
76
+ Requires-Dist: livekit-api~=0.7.1; extra == "livekit"
77
+ Provides-Extra: lmnt
78
+ Requires-Dist: lmnt~=1.1.4; extra == "lmnt"
79
+ Provides-Extra: local
80
+ Requires-Dist: pyaudio~=0.2.14; extra == "local"
81
+ Provides-Extra: moondream
82
+ Requires-Dist: einops~=0.8.0; extra == "moondream"
83
+ Requires-Dist: timm~=1.0.8; extra == "moondream"
84
+ Requires-Dist: transformers~=4.44.0; extra == "moondream"
85
+ Provides-Extra: nim
86
+ Requires-Dist: openai~=1.50.2; extra == "nim"
87
+ Provides-Extra: noisereduce
88
+ Requires-Dist: noisereduce~=3.0.3; extra == "noisereduce"
89
+ Provides-Extra: openai
90
+ Requires-Dist: openai~=1.50.2; extra == "openai"
91
+ Requires-Dist: websockets~=13.1; extra == "openai"
92
+ Requires-Dist: python-deepcompare~=1.0.1; extra == "openai"
93
+ Provides-Extra: openpipe
94
+ Requires-Dist: openpipe~=4.38.0; extra == "openpipe"
95
+ Provides-Extra: playht
96
+ Requires-Dist: pyht~=0.1.8; extra == "playht"
97
+ Requires-Dist: websockets~=13.1; extra == "playht"
98
+ Provides-Extra: riva
99
+ Requires-Dist: nvidia-riva-client~=2.17.0; extra == "riva"
100
+ Provides-Extra: silero
101
+ Requires-Dist: onnxruntime~=1.20.1; extra == "silero"
102
+ Provides-Extra: soundfile
103
+ Requires-Dist: soundfile~=0.12.1; extra == "soundfile"
104
+ Provides-Extra: together
105
+ Requires-Dist: openai~=1.50.2; extra == "together"
106
+ Provides-Extra: websocket
107
+ Requires-Dist: websockets~=13.1; extra == "websocket"
108
+ Requires-Dist: fastapi~=0.115.0; extra == "websocket"
109
+ Provides-Extra: whisper
110
+ Requires-Dist: faster-whisper~=1.1.0; extra == "whisper"
111
+ Provides-Extra: simli
112
+ Requires-Dist: simli-ai~=0.1.7; extra == "simli"
113
+
114
+ <h1><div align="center">
115
+  <img alt="pipecat" width="300px" height="auto" src="https://raw.githubusercontent.com/pipecat-ai/pipecat/main/pipecat.png">
116
+ </div></h1>
117
+
118
+ [![PyPI](https://img.shields.io/pypi/v/pipecat-ai)](https://pypi.org/project/pipecat-ai) [![Discord](https://img.shields.io/discord/1239284677165056021)](https://discord.gg/pipecat) <a href="https://app.commanddash.io/agent/github_pipecat-ai_pipecat"><img src="https://img.shields.io/badge/AI-Code%20Agent-EB9FDA"></a>
119
+
120
+ Pipecat is an open source Python framework for building voice and multimodal conversational agents. It handles the complex orchestration of AI services, network transport, audio processing, and multimodal interactions, letting you focus on creating engaging experiences.
121
+
122
+ ## What you can build
123
+
124
+ - **Voice Assistants**: [Natural, real-time conversations with AI](https://demo.dailybots.ai/)
125
+ - **Interactive Agents**: Personal coaches and meeting assistants
126
+ - **Multimodal Apps**: Combine voice, video, images, and text
127
+ - **Creative Tools**: [Story-telling experiences](https://storytelling-chatbot.fly.dev/) and social companions
128
+ - **Business Solutions**: [Customer intake flows](https://www.youtube.com/watch?v=lDevgsp9vn0) and support bots
129
+ - **Complex conversational flows**: [Refer to Pipecat Flows](https://github.com/pipecat-ai/pipecat-flows) to learn more
130
+
131
+ ## See it in action
132
+
133
+ <p float="left">
134
+ <a href="https://github.com/pipecat-ai/pipecat/tree/main/examples/simple-chatbot"><img src="https://raw.githubusercontent.com/pipecat-ai/pipecat/main/examples/simple-chatbot/image.png" width="280" /></a>&nbsp;
135
+ <a href="https://github.com/pipecat-ai/pipecat/tree/main/examples/storytelling-chatbot"><img src="https://raw.githubusercontent.com/pipecat-ai/pipecat/main/examples/storytelling-chatbot/image.png" width="280" /></a>
136
+ <br/>
137
+ <a href="https://github.com/pipecat-ai/pipecat/tree/main/examples/translation-chatbot"><img src="https://raw.githubusercontent.com/pipecat-ai/pipecat/main/examples/translation-chatbot/image.png" width="280" /></a>&nbsp;
138
+ <a href="https://github.com/pipecat-ai/pipecat/tree/main/examples/moondream-chatbot"><img src="https://raw.githubusercontent.com/pipecat-ai/pipecat/main/examples/moondream-chatbot/image.png" width="280" /></a>
139
+ </p>
140
+
141
+ ## Key features
142
+
143
+ - **Voice-first Design**: Built-in speech recognition, TTS, and conversation handling
144
+ - **Flexible Integration**: Works with popular AI services (OpenAI, ElevenLabs, etc.)
145
+ - **Pipeline Architecture**: Build complex apps from simple, reusable components
146
+ - **Real-time Processing**: Frame-based pipeline architecture for fluid interactions
147
+ - **Production Ready**: Enterprise-grade WebRTC and Websocket support
148
+
149
+ 💡 Looking to build structured conversations? Check out [Pipecat Flows](https://github.com/pipecat-ai/pipecat-flows) for managing complex conversational states and transitions.
150
+
151
+ ## Getting started
152
+
153
+ You can get started with Pipecat running on your local machine, then move your agent processes to the cloud when you’re ready. You can also add a 📞 telephone number, 🖼️ image output, 📺 video input, use different LLMs, and more.
154
+
155
+ ```shell
156
+ # Install the module
157
+ pip install pipecat-ai
158
+
159
+ # Set up your environment
160
+ cp dot-env.template .env
161
+ ```
162
+
163
+ To keep things lightweight, only the core framework is included by default. If you need support for third-party AI services, you can add the necessary dependencies with:
164
+
165
+ ```shell
166
+ pip install "pipecat-ai[option,...]"
167
+ ```
168
+
169
+ Available options include:
170
+
171
+ | Category | Services | Install Command Example |
172
+ | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- |
173
+ | Speech-to-Text | [AssemblyAI](https://docs.pipecat.ai/api-reference/services/stt/assemblyai), [Azure](https://docs.pipecat.ai/api-reference/services/stt/azure), [Deepgram](https://docs.pipecat.ai/api-reference/services/stt/deepgram), [Gladia](https://docs.pipecat.ai/api-reference/services/stt/gladia), [Whisper](https://docs.pipecat.ai/api-reference/services/stt/whisper) | `pip install "pipecat-ai[deepgram]"` |
174
+ | LLMs | [Anthropic](https://docs.pipecat.ai/api-reference/services/llm/anthropic), [Azure](https://docs.pipecat.ai/api-reference/services/llm/azure), [Fireworks AI](https://docs.pipecat.ai/api-reference/services/llm/fireworks), [Gemini](https://docs.pipecat.ai/api-reference/services/llm/gemini), [Grok](https://docs.pipecat.ai/api-reference/services/llm/grok), [Groq](https://docs.pipecat.ai/api-reference/services/llm/groq), [NVIDIA NIM](https://docs.pipecat.ai/api-reference/services/llm/nim), [Ollama](https://docs.pipecat.ai/api-reference/services/llm/ollama), [OpenAI](https://docs.pipecat.ai/api-reference/services/llm/openai), [Together AI](https://docs.pipecat.ai/api-reference/services/llm/together) | `pip install "pipecat-ai[openai]"` |
175
+ | Text-to-Speech | [AWS](https://docs.pipecat.ai/api-reference/services/tts/aws), [Azure](https://docs.pipecat.ai/api-reference/services/tts/azure), [Cartesia](https://docs.pipecat.ai/api-reference/services/tts/cartesia), [Deepgram](https://docs.pipecat.ai/api-reference/services/tts/deepgram), [ElevenLabs](https://docs.pipecat.ai/api-reference/services/tts/elevenlabs), [Google](https://docs.pipecat.ai/api-reference/services/tts/google), [LMNT](https://docs.pipecat.ai/api-reference/services/tts/lmnt), [OpenAI](https://docs.pipecat.ai/api-reference/services/tts/openai), [PlayHT](https://docs.pipecat.ai/api-reference/services/tts/playht), [Rime](https://docs.pipecat.ai/api-reference/services/tts/rime), [XTTS](https://docs.pipecat.ai/api-reference/services/tts/xtts) | `pip install "pipecat-ai[cartesia]"` |
176
+ | Speech-to-Speech | [Gemini Multimodal Live](https://docs.pipecat.ai/server/services/s2s/gemini), [OpenAI Realtime](https://docs.pipecat.ai/api-reference/services/s2s/openai) | `pip install "pipecat-ai[openai]"` |
177
+ | Transport | [Daily (WebRTC)](https://docs.pipecat.ai/api-reference/services/transport/daily), WebSocket, Local | `pip install "pipecat-ai[daily]"` |
178
+ | Video | [Tavus](https://docs.pipecat.ai/api-reference/services/video/tavus), [Simli](https://docs.pipecat.ai/api-reference/services/video/simli) | `pip install "pipecat-ai[tavus,simli]"` |
179
+ | Vision & Image | [Moondream](https://docs.pipecat.ai/api-reference/services/vision/moondream), [fal](https://docs.pipecat.ai/api-reference/services/image-generation/fal) | `pip install "pipecat-ai[moondream]"` |
180
+ | Audio Processing | [Silero VAD](https://docs.pipecat.ai/api-reference/utilities/audio/silero-vad-analyzer), [Krisp](https://docs.pipecat.ai/api-reference/utilities/audio/krisp-filter), [Noisereduce](https://docs.pipecat.ai/api-reference/utilities/audio/noisereduce-filter) | `pip install "pipecat-ai[silero]"` |
181
+ | Analytics & Metrics | [Canonical AI](https://docs.pipecat.ai/api-reference/services/analytics/canonical), [Sentry](https://docs.pipecat.ai/api-reference/services/analytics/sentry) | `pip install "pipecat-ai[canonical]"` |
182
+
183
+ 📚 [View full services documentation →](https://docs.pipecat.ai/api-reference/services/supported-services)
184
+
185
+ ## Code examples
186
+
187
+ - [Foundational](https://github.com/pipecat-ai/pipecat/tree/main/examples/foundational) — small snippets that build on each other, introducing one or two concepts at a time
188
+ - [Example apps](https://github.com/pipecat-ai/pipecat/tree/main/examples/) — complete applications that you can use as starting points for development
189
+
190
+ ## A simple voice agent running locally
191
+
192
+ Here is a very basic Pipecat bot that greets a user when they join a real-time session. We'll use [Daily](https://daily.co) for real-time media transport, and [Cartesia](https://cartesia.ai/) for text-to-speech.
193
+
194
+ ```python
195
+ import asyncio
196
+
197
+ from pipecat.frames.frames import EndFrame, TextFrame
198
+ from pipecat.pipeline.pipeline import Pipeline
199
+ from pipecat.pipeline.task import PipelineTask
200
+ from pipecat.pipeline.runner import PipelineRunner
201
+ from pipecat.services.cartesia import CartesiaTTSService
202
+ from pipecat.transports.services.daily import DailyParams, DailyTransport
203
+
204
+ async def main():
205
+ # Use Daily as a real-time media transport (WebRTC)
206
+ transport = DailyTransport(
207
+ room_url=...,
208
+ token="", # leave empty. Note: token is _not_ your api key
209
+ bot_name="Bot Name",
210
+ params=DailyParams(audio_out_enabled=True))
211
+
212
+ # Use Cartesia for Text-to-Speech
213
+ tts = CartesiaTTSService(
214
+ api_key=...,
215
+ voice_id=...
216
+ )
217
+
218
+ # Simple pipeline that will process text to speech and output the result
219
+ pipeline = Pipeline([tts, transport.output()])
220
+
221
+ # Create Pipecat processor that can run one or more pipelines tasks
222
+ runner = PipelineRunner()
223
+
224
+ # Assign the task callable to run the pipeline
225
+ task = PipelineTask(pipeline)
226
+
227
+ # Register an event handler to play audio when a
228
+ # participant joins the transport WebRTC session
229
+ @transport.event_handler("on_first_participant_joined")
230
+ async def on_first_participant_joined(transport, participant):
231
+ participant_name = participant.get("info", {}).get("userName", "")
232
+ # Queue a TextFrame that will get spoken by the TTS service (Cartesia)
233
+ await task.queue_frame(TextFrame(f"Hello there, {participant_name}!"))
234
+
235
+ # Register an event handler to exit the application when the user leaves.
236
+ @transport.event_handler("on_participant_left")
237
+ async def on_participant_left(transport, participant, reason):
238
+ await task.queue_frame(EndFrame())
239
+
240
+ # Run the pipeline task
241
+ await runner.run(task)
242
+
243
+ if __name__ == "__main__":
244
+ asyncio.run(main())
245
+ ```
246
+
247
+ Run it with:
248
+
249
+ ```shell
250
+ python app.py
251
+ ```
252
+
253
+ Daily provides a prebuilt WebRTC user interface. While the app is running, you can visit at `https://<yourdomain>.daily.co/<room_url>` and listen to the bot say hello!
254
+
255
+ ## WebRTC for production use
256
+
257
+ WebSockets are fine for server-to-server communication or for initial development. But for production use, you’ll need client-server audio to use a protocol designed for real-time media transport. (For an explanation of the difference between WebSockets and WebRTC, see [this post.](https://www.daily.co/blog/how-to-talk-to-an-llm-with-your-voice/#webrtc))
258
+
259
+ One way to get up and running quickly with WebRTC is to sign up for a Daily developer account. Daily gives you SDKs and global infrastructure for audio (and video) routing. Every account gets 10,000 audio/video/transcription minutes free each month.
260
+
261
+ Sign up [here](https://dashboard.daily.co/u/signup) and [create a room](https://docs.daily.co/reference/rest-api/rooms) in the developer Dashboard.
262
+
263
+ ## Hacking on the framework itself
264
+
265
+ _Note that you may need to set up a virtual environment before following the instructions below. For instance, you might need to run the following from the root of the repo:_
266
+
267
+ ```shell
268
+ python3 -m venv venv
269
+ source venv/bin/activate
270
+ ```
271
+
272
+ From the root of this repo, run the following:
273
+
274
+ ```shell
275
+ pip install -r dev-requirements.txt
276
+ python -m build
277
+ ```
278
+
279
+ This builds the package. To use the package locally (e.g. to run sample files), run
280
+
281
+ ```shell
282
+ pip install --editable ".[option,...]"
283
+ ```
284
+
285
+ If you want to use this package from another directory, you can run:
286
+
287
+ ```shell
288
+ pip install "path_to_this_repo[option,...]"
289
+ ```
290
+
291
+ ### Running tests
292
+
293
+ From the root directory, run:
294
+
295
+ ```shell
296
+ pytest --doctest-modules --ignore-glob="*to_be_updated*" --ignore-glob=*pipeline_source* src tests
297
+ ```
298
+
299
+ ## Setting up your editor
300
+
301
+ This project uses strict [PEP 8](https://peps.python.org/pep-0008/) formatting via [Ruff](https://github.com/astral-sh/ruff).
302
+
303
+ ### Emacs
304
+
305
+ You can use [use-package](https://github.com/jwiegley/use-package) to install [emacs-lazy-ruff](https://github.com/christophermadsen/emacs-lazy-ruff) package and configure `ruff` arguments:
306
+
307
+ ```elisp
308
+ (use-package lazy-ruff
309
+ :ensure t
310
+ :hook ((python-mode . lazy-ruff-mode))
311
+ :config
312
+ (setq lazy-ruff-format-command "ruff format")
313
+ (setq lazy-ruff-only-format-block t)
314
+ (setq lazy-ruff-only-format-region t)
315
+ (setq lazy-ruff-only-format-buffer t))
316
+ ```
317
+
318
+ `ruff` was installed in the `venv` environment described before, so you should be able to use [pyvenv-auto](https://github.com/ryotaro612/pyvenv-auto) to automatically load that environment inside Emacs.
319
+
320
+ ```elisp
321
+ (use-package pyvenv-auto
322
+ :ensure t
323
+ :defer t
324
+ :hook ((python-mode . pyvenv-auto-run)))
325
+
326
+ ```
327
+
328
+ ### Visual Studio Code
329
+
330
+ Install the
331
+ [Ruff](https://marketplace.visualstudio.com/items?itemName=charliermarsh.ruff) extension. Then edit the user settings (_Ctrl-Shift-P_ `Open User Settings (JSON)`) and set it as the default Python formatter, and enable formatting on save:
332
+
333
+ ```json
334
+ "[python]": {
335
+ "editor.defaultFormatter": "charliermarsh.ruff",
336
+ "editor.formatOnSave": true
337
+ }
338
+ ```
339
+
340
+ ## Contributing
341
+
342
+ We welcome contributions from the community! Whether you're fixing bugs, improving documentation, or adding new features, here's how you can help:
343
+
344
+ - **Found a bug?** Open an [issue](https://github.com/pipecat-ai/pipecat/issues)
345
+ - **Have a feature idea?** Start a [discussion](https://discord.gg/pipecat)
346
+ - **Want to contribute code?** Check our [CONTRIBUTING.md](CONTRIBUTING.md) guide
347
+ - **Documentation improvements?** [Docs](https://github.com/pipecat-ai/docs) PRs are always welcome
348
+
349
+ Before submitting a pull request, please check existing issues and PRs to avoid duplicates.
350
+
351
+ We aim to review all contributions promptly and provide constructive feedback to help get your changes merged.
352
+
353
+ ## Getting help
354
+
355
+ ➡️ [Join our Discord](https://discord.gg/pipecat)
356
+
357
+ ➡️ [Read the docs](https://docs.pipecat.ai)
358
+
359
+ ➡️ [Reach us on X](https://x.com/pipecat_ai)
@@ -0,0 +1,153 @@
1
+ pipecat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ pipecat/audio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
3
+ pipecat/audio/utils.py,sha256=UMo9_zAUE-dS75UX5RTDPgnQas37K6AEHp9SwCjdD4g,2909
4
+ pipecat/audio/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ pipecat/audio/filters/base_audio_filter.py,sha256=SRQwf_ZOP2cKYYPJVTQkLEP2TbMGLSca6wWtxM0YpOw,1301
6
+ pipecat/audio/filters/krisp_filter.py,sha256=WuS8KZKZqRqZN5f7e8r3Z4A8yIwkudZD3ZQzMY4qky0,2709
7
+ pipecat/audio/filters/noisereduce_filter.py,sha256=Tuly7Mm8jykDVlPbGn6N_xlyuKKZWB2gH_on-tmZ4h4,1455
8
+ pipecat/audio/mixers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ pipecat/audio/mixers/base_audio_mixer.py,sha256=_faWavHQC-XGhOAiegUQbh3botw7MqslgrNQT_urJXQ,1522
10
+ pipecat/audio/mixers/soundfile_mixer.py,sha256=jifiZrlQBhZFSCl8qzqk2Wx1hfbzDLEKNZG0IVhku5E,4876
11
+ pipecat/audio/vad/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
12
+ pipecat/audio/vad/silero.py,sha256=WI78R-zSNJz3e24Mevsn66EnZdxnZkDzuoiRS7jMSfI,5542
13
+ pipecat/audio/vad/vad_analyzer.py,sha256=Po_Vv1_DjQ5is1znyNLjxaZXlSAKmjB1hioVz09QwoU,4169
14
+ pipecat/audio/vad/data/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ pipecat/audio/vad/data/silero_vad.onnx,sha256=JiOilT9v89LB5hdAxs23FoEzR5smff7xFKSjzFvdeI8,2327524
16
+ pipecat/clocks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
17
+ pipecat/clocks/base_clock.py,sha256=Mke96PKUFHEo-LB5h8YT0XsnLgKFsLGFeIfPA2KmSe8,262
18
+ pipecat/clocks/system_clock.py,sha256=O-nTI-UQWSwog_0NFyuZcreRFe89nOhwA3PCE0psZNE,391
19
+ pipecat/frames/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
20
+ pipecat/frames/frames.proto,sha256=R4MFMP2ATfKzD1aflBkSmitsBeCBTHcN3vwgLAi2Hjw,755
21
+ pipecat/frames/frames.py,sha256=yCaZrsoUbnKJVOcTAhr1_PLqN7Iz_yY_0XZij9vAc70,15503
22
+ pipecat/frames/protobufs/frames_pb2.py,sha256=OPOOg10K3LgARwWgzqK4OKx8lyLsZBra85qpCVDRKFI,2123
23
+ pipecat/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
+ pipecat/metrics/metrics.py,sha256=Bvk1JOwpwWdFhFEMZwlh2AXYWSmEarAuwnk4SS3lJtM,592
25
+ pipecat/pipeline/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
26
+ pipecat/pipeline/base_pipeline.py,sha256=cSx_zNTH9GBVGddg6ol-HYwD41NJnlY47-z7zCm7B-k,388
27
+ pipecat/pipeline/parallel_pipeline.py,sha256=k_D4avomh61lGkcIWa0xiVvyMKV7PhEcrck64S1CT50,5828
28
+ pipecat/pipeline/pipeline.py,sha256=TJUijiEPRxzdf01xYxDyff6WOXwyeG2yKoBaSobA5zg,3099
29
+ pipecat/pipeline/runner.py,sha256=BTF4gO4XtCHaFYkAAxMT-K3PhWan3VVvAZTG9aszSiI,1669
30
+ pipecat/pipeline/sync_parallel_pipeline.py,sha256=tNPqEsQMUMcywNI1UopY9fhh_LpWwof01XA4zi_UW6o,6011
31
+ pipecat/pipeline/task.py,sha256=vJn88leSzk5YmzOzOUwuqGfTp0foN9MvXREhCSVdirE,7517
32
+ pipecat/pipeline/to_be_updated/merge_pipeline.py,sha256=S8-wv7AAKY1a2Jrvq2pKY5KHOOFK0Rhk2hlsscRKjXo,802
33
+ pipecat/processors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
34
+ pipecat/processors/async_generator.py,sha256=plvmwGKc5et_8i2NjQemSkh-5uXS-IaIgrp_NNsKwSQ,1252
35
+ pipecat/processors/frame_processor.py,sha256=IkqQahfvs6BHJglXYHuxJBISb2epsDflBYqW-xeJJP8,12241
36
+ pipecat/processors/idle_frame_processor.py,sha256=Nc41iRIFKmb_c8bewEbM0rzZH4So287mTf9zXkiBQWk,2029
37
+ pipecat/processors/logger.py,sha256=7M1SuF4kjbLqiekjlr0atboKX_UidVcGZwnqI9m3glo,1258
38
+ pipecat/processors/text_transformer.py,sha256=Vn2JpruI05Ci4JEqz3Qo3yu3yG1Vu0GD9OkPj_QOQb8,1211
39
+ pipecat/processors/user_idle_processor.py,sha256=PkJgbvXaBt_1oUYk02WpXf0yvbRP_oWfFdMgwERwTyY,2757
40
+ pipecat/processors/aggregators/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
+ pipecat/processors/aggregators/gated.py,sha256=RH6Om7SG2-KYLLKqGWDylEeZy85l9EodIAb0XTugyn0,3011
42
+ pipecat/processors/aggregators/gated_openai_llm_context.py,sha256=fxZHyomKxN_QZKtLH7WqEzZU6u4D8v92vEEd9IGsZ2k,1859
43
+ pipecat/processors/aggregators/llm_response.py,sha256=UOkF_NSpaXE26hvdKResRLxaqcHoaDhPOjnUlFXU-nA,10599
44
+ pipecat/processors/aggregators/openai_llm_context.py,sha256=ld-fWY6GYbDET2kk7OuAXWPWRgYN-KUyiZ_nUfNdOEo,9349
45
+ pipecat/processors/aggregators/sentence.py,sha256=_h1N6DGd_bQCaZz0bSiEpiDWg2dTwBh7lajm99R1NtY,1803
46
+ pipecat/processors/aggregators/user_response.py,sha256=Jl4Gb-HjyomX57RZgmMcm5H_znVTuV119gOIHjCm7bM,5385
47
+ pipecat/processors/aggregators/vision_image_frame.py,sha256=mJ4CGj0U5yeOVvoho3OWmDLu_TmmQS3JC21UM8g-TmQ,1749
48
+ pipecat/processors/audio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
49
+ pipecat/processors/audio/audio_buffer_processor.py,sha256=JGlQ7kkbMc0tOj2tnTEQQDVN7QNr7WBgIw5FYleBT68,3831
50
+ pipecat/processors/audio/vad/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
+ pipecat/processors/audio/vad/silero.py,sha256=tqrbear_8hKg9oGMdFmq0XgOADJW8ebwwnR_-lZvDvo,3047
52
+ pipecat/processors/filters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
53
+ pipecat/processors/filters/frame_filter.py,sha256=GM-PeTe51WZEnarDxAGKBUF-_7ZIeT-K1LHuHbkOgtk,870
54
+ pipecat/processors/filters/function_filter.py,sha256=9V6yrafhEzXcnsbFsJ5oZQgbw9MacWB1c_p1-pfv1T8,1136
55
+ pipecat/processors/filters/identity_filter.py,sha256=ovVoVcsnUbbuTegG_fzhMSBugagu0h3BMxM3aBab2Ok,916
56
+ pipecat/processors/filters/null_filter.py,sha256=H3YPJxpYK0u4orTJPuH5RldcWnr7prHWezf2HUoU0YU,324
57
+ pipecat/processors/filters/stt_mute_filter.py,sha256=qMRT3NdB_2VqXZXAGIBbPYwteezNqTNlDvXvlUfbFGU,5790
58
+ pipecat/processors/filters/wake_check_filter.py,sha256=dAUb6RWgb_kmDYQG2EKmk7r45ToJMgcw-cFOCyIK0nE,3509
59
+ pipecat/processors/filters/wake_notifier_filter.py,sha256=ekaDy3WRPT4ee_LK9E9UZb7G_yXO0IFC3dR4jfDUTqQ,1188
60
+ pipecat/processors/frameworks/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
61
+ pipecat/processors/frameworks/langchain.py,sha256=y0byUCW8QMo9BkO0W3FDTLADC8or4yVID5v4ZYeu-UU,2575
62
+ pipecat/processors/frameworks/rtvi.py,sha256=NVxL--TpLh9lF1tKTz1s4mrxqNQfaUZXq3ENA-fNQR8,28829
63
+ pipecat/processors/gstreamer/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
+ pipecat/processors/gstreamer/pipeline_source.py,sha256=gI2AE1M3_2yadBL-iizpra1yy7aCZSb9IBwc41h2E7s,7740
65
+ pipecat/processors/metrics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
+ pipecat/processors/metrics/frame_processor_metrics.py,sha256=bNJs99ALWrZEVL_A52hNRQR9LHsYmG4CkVXQnsjYppM,2731
67
+ pipecat/processors/metrics/sentry.py,sha256=fuNqejr54NqkvjyJQ6YLGr09qMSJFODduzrcBNK7WKc,2202
68
+ pipecat/serializers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
69
+ pipecat/serializers/base_serializer.py,sha256=HieCGvoKnaUQ-AzbBuQJOgOQjJx6YVzeSBmxlKhC5XU,568
70
+ pipecat/serializers/livekit.py,sha256=OI6CVuDb_OFKBuyRRcBi5DI493l4xW7GK5m0HmVBmoE,1443
71
+ pipecat/serializers/plivo.py,sha256=_dHD32XsiLtR4Ai9uNQOOFf37DwOIhEdx-LkhfCzYlI,2289
72
+ pipecat/serializers/protobuf.py,sha256=32ZaQ4ovQ2hxSsf20vOB_l55Mfiiebx6OcMVocz3uPo,3925
73
+ pipecat/serializers/twilio.py,sha256=AR-A7RyLV9P0BR8fqmnTTh0VFVipzw9RtQTuJakireI,2078
74
+ pipecat/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
75
+ pipecat/services/ai_services.py,sha256=POR-rt4Cd9PjRvhCjG1hVgQ85j_rgZCScXtH2RpZl54,23442
76
+ pipecat/services/anthropic.py,sha256=nqjgL0QZFmsfY46d-4neWDm4xB9OYfwqxXGXYw8k_zo,32198
77
+ pipecat/services/assemblyai.py,sha256=gwenDDjMHBSQuye-K-wh6sPEwPvzgxBT54Mym2hrU5E,5368
78
+ pipecat/services/aws.py,sha256=VJ7sdPx9BhJFVlXJUL2XVH0RMuQqm6ZYdzG_36ZhNms,7399
79
+ pipecat/services/azure.py,sha256=_loJO24efqKULh-YXSooe0dBJiu8-9lXBaoa_flskH0,24987
80
+ pipecat/services/canonical.py,sha256=3i4aiG8gxWqu_2mopglDEECviBuVF_DEpJlaPFyAWGc,7838
81
+ pipecat/services/cartesia.py,sha256=jl0Mbq_WigbTQRsaJDRg05WlKdCsF1lK17IDlX6wYKw,15516
82
+ pipecat/services/deepgram.py,sha256=KXBmmMKJv-C7DEedYS40MX9mRcNq8ANAwTWnp9QD_Lc,7698
83
+ pipecat/services/elevenlabs.py,sha256=BADk7f2SAroX2uqWOjrVnYjAJ6mBt6CFFin-EsGiynY,16547
84
+ pipecat/services/fal.py,sha256=izvF-ybmDpdY3mpUHCP8TA1lWZ9nMPerxqde1ZJW0HA,2561
85
+ pipecat/services/fireworks.py,sha256=S9rPyAQ73uFwC47UkDhkSs4-6NvrJHcVtEAr4awX9lk,2803
86
+ pipecat/services/gladia.py,sha256=lMJBOJjnpnOgATK4_lMYhpsOqH_mNVZ-TQpHd5f4hoA,7744
87
+ pipecat/services/google.py,sha256=fbm3lGMxsbFI_ryz9wpNJ1HApBuxo_qoI0aNwyaN9lY,30320
88
+ pipecat/services/grok.py,sha256=A0Lz1gi6zZX2h5tRKuKJre2nppcYCACN6lC9MjZWY44,4214
89
+ pipecat/services/groq.py,sha256=CzK9JmFwJP90HMbo_gQiqxbBsl4y2qfgAAlzNiU7RmI,1363
90
+ pipecat/services/lmnt.py,sha256=DxvcgFxOWylFr2kDI66BJOMPG0M1GfVHxFhrVsj3dWs,7653
91
+ pipecat/services/moondream.py,sha256=Z0qwwHyX8sg9lBx9AiJDbwVXYM2RGjf6k_esGM134p0,2776
92
+ pipecat/services/nim.py,sha256=z6D6i0LJdawJofeJoS8Aj6FIernWLpGTtRBGRkqAqLI,4120
93
+ pipecat/services/ollama.py,sha256=l327hP4cBozd7JUWeTQkOJIXXZ08FcAhM5W2BO2hQfw,358
94
+ pipecat/services/openai.py,sha256=4OatBk5-ARG1zw4e2-ix8JSZ5G7QTW_NtRX3rDkzw5E,24004
95
+ pipecat/services/openpipe.py,sha256=nKdRn8Wmaeugol9kStWm2YjHG-IK9FdYP9Qjj_G64_Q,2173
96
+ pipecat/services/playht.py,sha256=RNjTW7kIdupwdz8Xacmasd2TJCpMda6F0EG7rVA2zW0,14383
97
+ pipecat/services/rime.py,sha256=2XaYfWhE1x7SIKI-ouh-6NpD4syXBJclNP4Xt4JLEM4,3293
98
+ pipecat/services/riva.py,sha256=EOct5084KjvKLqQ0vbNNpEGHAiPRbduPpdll4DptR3c,8713
99
+ pipecat/services/simli.py,sha256=N5nk6KMdH2-7ZbL92P132bTgPf13QonbhdEwxcSaLH8,5165
100
+ pipecat/services/tavus.py,sha256=NA7cUpLpzUIj6NrRVzcdhxMNsCdC6nZJu2uQWTCqvW8,4957
101
+ pipecat/services/together.py,sha256=wxQet_kmmi2r7_l67DR3p6G4CTnom8NUCPCLfCtA3gM,1443
102
+ pipecat/services/whisper.py,sha256=d5sBACD_GLgNcUUK27OjpKCfuHo5HHyqSbFhCEzGTx0,3128
103
+ pipecat/services/xtts.py,sha256=7IqnowUeEQrA514uCcagsptbmLQrfqIB-1HHFQZjbxk,6160
104
+ pipecat/services/gemini_multimodal_live/__init__.py,sha256=plwz4rIx_O6YPKKcS8hK_jTkwQsODGWjdkLTNvfhdaY,51
105
+ pipecat/services/gemini_multimodal_live/audio_transcriber.py,sha256=8QUxjeRxD3rxZ_u2J2Kpu1LGPoGurMzzLnv2_Zk6MQQ,4106
106
+ pipecat/services/gemini_multimodal_live/events.py,sha256=F3UKDW8Ah6Top0uvgHAiBf5x1wsByo6H9HfA3F636Yk,3150
107
+ pipecat/services/gemini_multimodal_live/gemini.py,sha256=cM4C59VJmE4DShD28X3dHdsOFd2IvhwAla0mpWj9Yps,25707
108
+ pipecat/services/openai_realtime_beta/__init__.py,sha256=G7D7LAuhMKPm3EwVfW0LrGYsbZ6ApGZ547JD_JM3ea8,127
109
+ pipecat/services/openai_realtime_beta/context.py,sha256=h9wbr7wuf2guGPx0z0nhVLgvUH1ONY6tV-gZLMHrdl8,9105
110
+ pipecat/services/openai_realtime_beta/events.py,sha256=Z26QOJNFNyJqj82yaQxyUmVlJ9DRXpdKKGqN1r1h2Qs,11995
111
+ pipecat/services/openai_realtime_beta/frames.py,sha256=d_L9AEIuN46qkGZ9t4310VimCeb99-2Bdy3VfaP_OHY,391
112
+ pipecat/services/openai_realtime_beta/openai.py,sha256=j-GbmZnJncq-F3ijaRHT73325itwcc1Q7XDk3ChGSio,22917
113
+ pipecat/services/to_be_updated/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
114
+ pipecat/services/to_be_updated/cloudflare_ai_service.py,sha256=eidELybOojcA9e08_UWwrKJk-8KCtOafagl-gVVmDaQ,2664
115
+ pipecat/services/to_be_updated/google_ai_service.py,sha256=jUHq0QoBdTXBTzd7rkPfpPiAIgZyeyMYcYSD61VBAeE,964
116
+ pipecat/services/to_be_updated/huggingface_ai_service.py,sha256=zfu3ESBiVsYKy6J6EGkAmedoXpZROnYUyPakwYgabmY,1200
117
+ pipecat/services/to_be_updated/mock_ai_service.py,sha256=dZGH3sIT5zayV8gPXaFHxezbunz_0CFoBqEtkiAOWp8,853
118
+ pipecat/sync/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
+ pipecat/sync/base_notifier.py,sha256=P61yJZqxeXYbemYJwUT9npla8gz1odp7_5dt7tt9DlM,267
120
+ pipecat/sync/event_notifier.py,sha256=CTnV1X3GNxh7oyZRps8UKHa0DFVaO6YghVPUcxlkmiY,393
121
+ pipecat/transcriptions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
122
+ pipecat/transcriptions/language.py,sha256=zQ0Ned7CqNUjNs49GigjuqYYFEgdBaexLDzADGrIv5g,6104
123
+ pipecat/transports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
124
+ pipecat/transports/base_input.py,sha256=gOhIIw-ahBJSVRoleyr9LrLqcOTMyELMUWgtkbtfgG4,7380
125
+ pipecat/transports/base_output.py,sha256=qFwcMf2eJf_TCbvY6BerSAkxGdzq-4eWjh5CtoSwWYU,18696
126
+ pipecat/transports/base_transport.py,sha256=aVO945fVmaabClvYPSV3T64ZbkbPmBTQmO33DIB0S94,3041
127
+ pipecat/transports/local/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
128
+ pipecat/transports/local/audio.py,sha256=By-u4iJ92Z0J_NW2CE7YXc8v9K4kKLO8_LVX_frrle8,3890
129
+ pipecat/transports/local/tk.py,sha256=zQIRI77PolKW8PnFwb2VOKVfN-IaQUjg7dbIhv0FjQU,5124
130
+ pipecat/transports/network/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
+ pipecat/transports/network/fastapi_websocket.py,sha256=b5X2OlUJonhzQpCxE_KsNpypeZ67l-7u4YvX2Njun08,6885
132
+ pipecat/transports/network/websocket_server.py,sha256=iPfzhWb1M0VGi9T8JYj9eqq1qoFVPiSK1lYeMpufgZM,8709
133
+ pipecat/transports/services/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
134
+ pipecat/transports/services/daily.py,sha256=s90U1CmLVJwvoWyeeGFrVIU4e-zYouYDuf1E4UPeGWM,40787
135
+ pipecat/transports/services/livekit.py,sha256=YOqY62BRYfJ16nvNStFA-VOVzlZI1ALzCbcbtM6maEU,23697
136
+ pipecat/transports/services/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
137
+ pipecat/transports/services/helpers/daily_rest.py,sha256=kr-fujlWtR0c3jtSZgP0GDHF1F-NCtF1eWjm62XnfGU,4894
138
+ pipecat/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
139
+ pipecat/utils/string.py,sha256=2b9DI0GTBUd3sD8oTcPUbI0-s_6RMo7qWrM7qqZ8wYE,1095
140
+ pipecat/utils/test_frame_processor.py,sha256=0_hd6OA9lMSXjuUHFiRk12a0fWPyh2nzR83nPOLzjJo,1847
141
+ pipecat/utils/time.py,sha256=BpAUt-HE7u3o0iCI7aY2j1joR2ct2AlJlFf07qwsMHM,783
142
+ pipecat/utils/utils.py,sha256=uZGB8eJHu9i9MemtCJ9cScpiZcB9KQnWhfHJgeDS9Y0,648
143
+ pipecat/utils/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
+ pipecat/utils/text/base_text_filter.py,sha256=3B8rnWlf2CcsrtM72tlgIi9YLLnFZ12OlTpibfzoG6E,484
145
+ pipecat/utils/text/markdown_text_filter.py,sha256=EukJPMocBCKUql9Vg3uAcwIC7w5ImGOgJJ78A95FMos,8002
146
+ pipecat/vad/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
+ pipecat/vad/silero.py,sha256=6xknDDha4_UJFQRAONQIiiKQcAUNSLMz2oFl6WNetzA,394
148
+ pipecat/vad/vad_analyzer.py,sha256=pg7GKAmtnsE2CWpWPD5UsX6MPGd4p_E2qsCwyK5qKOk,363
149
+ dv_pipecat_ai-0.0.52.dev86.dist-info/LICENSE,sha256=P3rk7-qdiAA_vtQKg2KVaFyPWCxjvvI5zcRm3-mSQ30,1294
150
+ dv_pipecat_ai-0.0.52.dev86.dist-info/METADATA,sha256=WDDXKNoyobrig-31Ql7XKqS3Wmk-znvhroWIVemiM8I,23603
151
+ dv_pipecat_ai-0.0.52.dev86.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
152
+ dv_pipecat_ai-0.0.52.dev86.dist-info/top_level.txt,sha256=kQzG20CxGf-nSsHmtXHx3hY2-8zHA3jYg8jk0TajqXc,8
153
+ dv_pipecat_ai-0.0.52.dev86.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (75.6.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1 @@
1
+ pipecat
pipecat/__init__.py ADDED
File without changes
File without changes
File without changes
@@ -0,0 +1,47 @@
1
+ #
2
+ # Copyright (c) 2024, Daily
3
+ #
4
+ # SPDX-License-Identifier: BSD 2-Clause License
5
+ #
6
+
7
+ from abc import ABC, abstractmethod
8
+
9
+ from pipecat.frames.frames import FilterControlFrame
10
+
11
+
12
+ class BaseAudioFilter(ABC):
13
+ """This is a base class for input transport audio filters. If an audio
14
+ filter is provided to the input transport it will be used to process audio
15
+ before VAD and before pushing it downstream. There are control frames to
16
+ update filter settings or to enable or disable the filter at runtime.
17
+
18
+ """
19
+
20
+ @abstractmethod
21
+ async def start(self, sample_rate: int):
22
+ """This will be called from the input transport when the transport is
23
+ started. It can be used to initialize the filter. The input transport
24
+ sample rate is provided so the filter can adjust to that sample rate.
25
+
26
+ """
27
+ pass
28
+
29
+ @abstractmethod
30
+ async def stop(self):
31
+ """This will be called from the input transport when the transport is
32
+ stopping.
33
+
34
+ """
35
+ pass
36
+
37
+ @abstractmethod
38
+ async def process_frame(self, frame: FilterControlFrame):
39
+ """This will be called when the input transport receives a
40
+ FilterControlFrame.
41
+
42
+ """
43
+ pass
44
+
45
+ @abstractmethod
46
+ async def filter(self, audio: bytes) -> bytes:
47
+ pass