PipeCat은 음성 및 멀티 모달 대화 에이전트를 구축하기위한 오픈 소스 파이썬 프레임 워크입니다. AI 서비스, 네트워크 전송, 오디오 처리 및 멀티 모달 상호 작용의 복잡한 오케스트레이션을 처리하여 매력적인 경험을 만드는 데 집중할 수 있습니다.
구조화 된 대화를 구축하고 싶으십니까? 복잡한 대화 상태 및 전환 관리를 위해 PipeCat Flow를 확인하십시오.
로컬 컴퓨터에서 PipeCat을 시작한 다음 준비가되면 에이전트 프로세스를 클라우드로 이동할 수 있습니다. 당신은 또한 추가 할 수 있습니까? 전화 번호,? ️ 이미지 출력, 비디오 입력, 다른 LLM 사용 등.
# Install the module
pip install pipecat-ai
# Set up your environment
cp dot-env.template .env물건을 가볍게 유지하기 위해 핵심 프레임 워크 만 기본적으로 포함됩니다. 타사 AI 서비스에 대한 지원이 필요한 경우 다음과 함께 필요한 종속성을 추가 할 수 있습니다.
pip install " pipecat-ai[option,...] "사용 가능한 옵션은 다음과 같습니다.
| 범주 | 서비스 | 명령 예제를 설치하십시오 |
|---|---|---|
| 음성-텍스트 | 어셈블리, Azure, Deepgram, Gladia, Whisper | pip install "pipecat-ai[deepgram]" |
| LLMS | 인류, Azure, 불꽃 놀이 AI, Gemini, Ollama, Openai, 함께 ai | pip install "pipecat-ai[openai]" |
| 텍스트 음성 | Aws, Azure, 직교, 딥 그램, Elevenlabs, Google, LMNT, OpenAi, Playht, Rime, Xtts | pip install "pipecat-ai[cartesia]" |
| 연설 음성 | Openai 실시간 | pip install "pipecat-ai[openai]" |
| 수송 | Daily (WebRTC), WebSocket, Local | pip install "pipecat-ai[daily]" |
| 동영상 | Tavus | pip install "pipecat-ai[tavus]" |
| 비전 및 이미지 | Moondream, FAL | pip install "pipecat-ai[moondream]" |
| 오디오 처리 | Silero Vad, Krisp, Noisereduce | pip install "pipecat-ai[silero]" |
| 분석 및 메트릭 | 표준 AI, 센트리 | pip install "pipecat-ai[canonical]" |
전체 서비스 문서보기 →
다음은 실시간 세션에 참여할 때 사용자를 맞이하는 매우 기본적인 PipeCat 봇이 있습니다. 우리는 실시간 미디어 운송에 매일 사용하고 텍스트 음성 연설을위한 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와 함께 빨리 일어나고 실행하는 한 가지 방법은 매일 개발자 계정에 가입하는 것입니다. 매일 오디오 (및 비디오) 라우팅을위한 SDK 및 글로벌 인프라를 제공합니다. 모든 계정은 매달 10,000 개의 오디오/비디오/전사 시간을 무료로받습니다.
여기에 가입하고 개발자 대시 보드에 방을 만듭니다.
아래 지침을 따르기 전에 가상 환경을 설정해야 할 수도 있습니다. 예를 들어, repo의 루트에서 다음을 실행해야 할 수도 있습니다.
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이 프로젝트는 Ruff를 통해 엄격한 PEP 8 형식을 사용합니다.
사용 패키지를 사용하여 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를 사용하여 EMAC 내부의 환경을 자동으로로드 할 수 있어야합니다.
( use-package pyvenv-auto
:ensure t
:defer t
:hook (( python-mode . pyvenv-auto-run)))
Ruff Extension을 설치하십시오. 그런 다음 사용자 설정 ( Ctrl-Shift-P Open User Settings (JSON) )을 편집하고 기본 Python Formatter로 설정하고 저장에서 서식을 활성화합니다.
"[python]" : {
"editor.defaultFormatter" : " charliermarsh.ruff " ,
"editor.formatOnSave" : true
}우리는 지역 사회의 기여를 환영합니다! 버그를 고치거나 문서화 개선 또는 새로운 기능 추가에 관계없이 다음은 다음과 같은 도움을 줄 수 있습니다.
풀 요청을 제출하기 전에 복제를 피하려면 기존 문제 및 PRS를 확인하십시오.
우리는 모든 기부금을 즉시 검토하고 건설적인 피드백을 제공하여 변경 사항을 병합하는 것을 목표로합니다.
➡️ 우리의 불화에 가입하십시오
docs를 읽으십시오
➡️ x에 우리에게 연락하십시오