Pipecat هو إطار Open Source Python لبناء عوامل محادثة صوتية متعددة الوسائط. إنه يتعامل مع التزامن المعقد لخدمات الذكاء الاصطناعى ، ونقل الشبكات ، ومعالجة الصوت ، والتفاعلات متعددة الوسائط ، مما يتيح لك التركيز على خلق تجارب جذابة.
تبحث لبناء محادثات منظمة؟ تحقق من تدفقات pipecat لإدارة حالات التحادث المعقدة والتحولات.
يمكنك البدء في تشغيل Pipecat على جهازك المحلي ، ثم نقل عمليات وكيلك إلى السحابة عندما تكون جاهزًا. يمكنك أيضا إضافة أ؟ رقم الهاتف ، ️ إخراج الصورة ، إدخال الفيديو ، استخدم LLMs مختلفة ، وأكثر من ذلك.
# Install the module
pip install pipecat-ai
# Set up your environment
cp dot-env.template .envللحفاظ على الأمور خفيفة الوزن ، يتم تضمين الإطار الأساسي فقط بشكل افتراضي. إذا كنت بحاجة إلى دعم لخدمات الذكاء الاصطناعي من طرف ثالث ، فيمكنك إضافة التبعيات اللازمة مع:
pip install " pipecat-ai[option,...] "تشمل الخيارات المتاحة:
| فئة | خدمات | تثبيت مثال الأمر |
|---|---|---|
| الكلام إلى النص | Assemblyai ، Azure ، Deepgram ، Gladia ، Whisper | pip install "pipecat-ai[deepgram]" |
| LLMS | الأنثروبور ، أزور ، ألعاب نارية AI ، الجوزاء ، أولاما ، Openai ، معا منظمة العفو الدولية | pip install "pipecat-ai[openai]" |
| نص إلى كلام | AWS ، Azure ، Cartesia ، Deepgram ، Elevenlabs ، Google ، LMNT ، Openai ، Playht ، Rime ، XTTS | pip install "pipecat-ai[cartesia]" |
| خطاب إلى كلام | Openai الحقيقي | pip install "pipecat-ai[openai]" |
| ينقل | يوميًا (WEBRTC) ، WebSocket ، محلي | pip install "pipecat-ai[daily]" |
| فيديو | تافوس | pip install "pipecat-ai[tavus]" |
| الرؤية والصورة | Moondream ، فال | pip install "pipecat-ai[moondream]" |
| معالجة الصوت | سيليرو فاد ، كريس ، noisereduce | pip install "pipecat-ai[silero]" |
| التحليلات والمقاييس | Canonical AI ، Sentry | pip install "pipecat-ai[canonical]" |
عرض وثائق الخدمات الكاملة →
فيما يلي روبوت أساسي للغاية يحيي المستخدم عند انضمامه إلى جلسة في الوقت الفعلي. سنستخدم يوميًا لنقل وسائل الإعلام في الوقت الفعلي ، و Cartesia للنص على نص.
import asyncio
from pipecat . frames . frames import EndFrame , TextFrame
from pipecat . pipeline . pipeline import Pipeline
from pipecat . pipeline . task import PipelineTask
from pipecat . pipeline . runner import PipelineRunner
from pipecat . services . cartesia import CartesiaTTSService
from pipecat . transports . services . daily import DailyParams , DailyTransport
async def main ():
# Use Daily as a real-time media transport (WebRTC)
transport = DailyTransport (
room_url = ...,
token = "" , # leave empty. Note: token is _not_ your api key
bot_name = "Bot Name" ,
params = DailyParams ( audio_out_enabled = True ))
# Use Cartesia for Text-to-Speech
tts = CartesiaTTSService (
api_key = ...,
voice_id = ...
)
# Simple pipeline that will process text to speech and output the result
pipeline = Pipeline ([ tts , transport . output ()])
# Create Pipecat processor that can run one or more pipelines tasks
runner = PipelineRunner ()
# Assign the task callable to run the pipeline
task = PipelineTask ( pipeline )
# Register an event handler to play audio when a
# participant joins the transport WebRTC session
@ transport . event_handler ( "on_first_participant_joined" )
async def on_first_participant_joined ( transport , participant ):
participant_name = participant . get ( "info" , {}). get ( "userName" , "" )
# Queue a TextFrame that will get spoken by the TTS service (Cartesia)
await task . queue_frame ( TextFrame ( f"Hello there, { participant_name } !" ))
# Register an event handler to exit the application when the user leaves.
@ transport . event_handler ( "on_participant_left" )
async def on_participant_left ( transport , participant , reason ):
await task . queue_frame ( EndFrame ())
# Run the pipeline task
await runner . run ( task )
if __name__ == "__main__" :
asyncio . run ( main ())قم بتشغيله مع:
python app.py يوفر Daily واجهة مستخدم WebRTC المسبقة. أثناء تشغيل التطبيق ، يمكنك الزيارة على https://<yourdomain>.daily.co/<room_url> واستمع إلى الروبوت قل مرحبًا!
WebSockets جيدة للاتصال من الخادم إلى الخادم أو للتطوير الأولي. ولكن لاستخدام الإنتاج ، ستحتاج إلى صوت خادم العميل لاستخدام بروتوكول مصمم لنقل الوسائط في الوقت الفعلي. (للحصول على شرح للفرق بين WebSockets و Webrtc ، انظر هذا المنشور.)
تتمثل إحدى طرق الاستيلاء والتشغيل بسرعة مع WebRTC على الاشتراك في حساب مطور يومي. يمنحك Daily SDKs والبنية التحتية العالمية لتوجيه الصوت (والفيديو). يحصل كل حساب على 10000 دقيقة من الدقائق الصوتية/الفيديو/النسخ كل شهر.
اشترك هنا وإنشاء غرفة في لوحة معلومات المطور.
لاحظ أنك قد تحتاج إلى إعداد بيئة افتراضية قبل اتباع التعليمات أدناه. على سبيل المثال ، قد تحتاج إلى تشغيل ما يلي من جذر الريبو:
python3 -m venv venv
source venv/bin/activateمن جذر هذا الريبو ، قم بتشغيل ما يلي:
pip install -r dev-requirements.txt
python -m buildهذا يبني الحزمة. لاستخدام الحزمة محليًا (على سبيل المثال لتشغيل ملفات عينة) ، قم بتشغيل
pip install --editable " .[option,...] "إذا كنت ترغب في استخدام هذه الحزمة من دليل آخر ، يمكنك التشغيل:
pip install " path_to_this_repo[option,...] "من دليل الجذر ، قم بتشغيل:
pytest --doctest-modules --ignore-glob= " *to_be_updated* " --ignore-glob= * pipeline_source * src testsيستخدم هذا المشروع تنسيقًا صارمًا لـ PEP 8 عبر Ruff.
يمكنك استخدام حزمة الاستخدام لتثبيت حزمة emacs-lazy-ruff وتكوين وسيطات ruff :
( use-package lazy-ruff
:ensure t
:hook (( python-mode . lazy-ruff-mode))
:config
( setq lazy-ruff-format-command " ruff format " )
( setq lazy-ruff-only-format-block t )
( setq lazy-ruff-only-format-region t )
( setq lazy-ruff-only-format-buffer t )) تم تثبيت ruff في بيئة venv الموصوفة من قبل ، لذلك يجب أن تكون قادرًا على استخدام Pyvenv-Auto لتحميل تلك البيئة تلقائيًا داخل Emacs.
( use-package pyvenv-auto
:ensure t
:defer t
:hook (( python-mode . pyvenv-auto-run)))
تثبيت امتداد Ruff. ثم قم بتحرير إعدادات المستخدم ( Open User Settings (JSON) CTRL-Shift-P ) وقم بتعيينها على أنها تنسيق Python الافتراضي ، وتمكين التنسيق على الحفظ:
"[python]" : {
"editor.defaultFormatter" : " charliermarsh.ruff " ,
"editor.formatOnSave" : true
}نرحب بالمساهمات من المجتمع! سواء كنت تقوم بإصلاح الأخطاء أو تحسين الوثائق أو إضافة ميزات جديدة ، فإليك كيفية المساعدة:
قبل تقديم طلب سحب ، يرجى التحقق من المشكلات الحالية و PRS لتجنب التكرارات.
نهدف إلى مراجعة جميع المساهمات على الفور ونقدم ملاحظات بناء للمساعدة في دمج التغييرات الخاصة بك.
➡ انضم إلى خلافنا
➡ اقرأ المستندات
➡ تصل إلينا على x