PipeCat是用於構建語音和多模式對話代理的開源Python框架。它處理了AI服務,網絡運輸,音頻處理和多模式交互的複雜編排,使您專注於創造引人入勝的體驗。
想要構建結構化對話?查看管道流以管理複雜的對話狀態和過渡。
您可以開始在本地計算機上運行的管道運行,然後在準備就緒時將代理進程移至雲中。您還可以添加一個嗎?電話號碼,?️圖像輸出,視頻輸入,使用不同的llms等。
# Install the module
pip install pipecat-ai
# Set up your environment
cp dot-env.template .env為了保持輕量級,默認情況下僅包含核心框架。如果您需要支持第三方AI服務,則可以添加必要的依賴項:
pip install " pipecat-ai[option,...] "可用選項包括:
| 類別 | 服務 | 安裝命令示例 |
|---|---|---|
| 語音到文本 | 彙編,天藍色,深色,格拉德亞,耳語 | pip install "pipecat-ai[deepgram]" |
| LLMS | 人類,天藍色,煙花,雙子座,ollama,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,Fal | pip install "pipecat-ai[moondream]" |
| 音頻處理 | Silero VAD,KRISP,NOISEREDUCE | pip install "pipecat-ai[silero]" |
| 分析與指標 | 規範AI,哨兵 | 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每日提供預構建的WEBRTC用戶界面。該應用程序正在運行時,您可以在https://<yourdomain>.daily.co/<room_url>上訪問,然後收聽bot說話!
Websocket適用於服務器到服務器通信或初始開發。但是對於生產使用,您將需要客戶服務器音頻來使用設計用於實時媒體運輸的協議。 (有關Websockets和Webrtc之間差異的說明,請參閱此帖子。)
快速與WEBRTC快速運行的一種方法是註冊每日開發人員帳戶。每日為您提供SDK和全球基礎架構,以進行音頻(和視頻)路由。每個帳戶每月免費獲得10,000個音頻/視頻/轉錄分鐘。
在此處註冊並在開發人員儀表板上創建一個房間。
請注意,在遵循以下說明之前,您可能需要設置虛擬環境。例如,您可能需要從回購的根部運行以下內容:
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格式。
您可以使用use-ackage安裝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擴展。然後編輯用戶設置( CTRL-SHIFT-P Open User Settings (JSON) )並將其設置為默認的Python Formatter,並在保存上啟用格式:
"[python]" : {
"editor.defaultFormatter" : " charliermarsh.ruff " ,
"editor.formatOnSave" : true
}我們歡迎社區的捐款!無論您是修復錯誤,改進文檔還是添加新功能,這都是您可以提供幫助的方法:
在提交拉動請求之前,請檢查現有問題和PR,以避免重複。
我們的目標是及時審查所有貢獻,並提供建設性的反饋,以幫助您合併更改。
➡️加入我們的不和諧
➡️閱讀文檔
➡️在x上接觸我們