Pipecatは、音声およびマルチモーダルの会話エージェントを構築するためのオープンソースPythonフレームワークです。 AIサービス、ネットワークトランスポート、オーディオ処理、マルチモーダルの相互作用の複雑なオーケストレーションを処理し、魅力的なエクスペリエンスの作成に集中できます。
構造化された会話を構築したいですか?複雑な会話状態と移行を管理するためのpipecatフローをご覧ください。
ローカルマシンでPipeCatを実行してから、準備ができたらエージェントプロセスをクラウドに移動できます。追加することもできますか?電話番号、?§image出力、ビデオ入力、さまざまなLLMなどを使用します。
# Install the module
pip install pipecat-ai
# Set up your environment
cp dot-env.template .env物事を軽量に保つために、デフォルトではコアフレームワークのみが含まれています。サードパーティのAIサービスのサポートが必要な場合は、次のことを必要とする依存関係を追加できます。
pip install " pipecat-ai[option,...] "利用可能なオプションは次のとおりです。
| カテゴリ | サービス | コマンドの例をインストールします |
|---|---|---|
| 音声からテキスト | Assemblyai、Azure、Deepgram、Gladia、Whisper | pip install "pipecat-ai[deepgram]" |
| LLMS | 人類、azure、花火AI、ジェミニ、オラマ、オープンライ、一緒にai | 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]" |
| ビデオ | 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ボットです。リアルタイムのメディアトランスポートには毎日、テキストへのカルテシアに使用します。
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>にアクセスして、Bot Say Hello!を聴くことができます。
WebSocketは、サーバー間通信や初期開発に適しています。ただし、生産用に使用するには、リアルタイムメディアトランスポート向けに設計されたプロトコルを使用するには、クライアントサーバーオーディオが必要です。 (WebSocketsとWeBRTCの違いの説明については、この投稿を参照してください。)
WeBRTCで迅速に稼働する方法の1つは、毎日の開発者アカウントにサインアップすることです。毎日、オーディオ(およびビデオ)ルーティング用の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このプロジェクトでは、Ruffを介したStrict 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を使用してEmacs内にその環境を自動的にロードできるはずです。
( use-package pyvenv-auto
:ensure t
:defer t
:hook (( python-mode . pyvenv-auto-run)))
Ruff拡張機能をインストールします。次に、ユーザー設定( CTRL-SHIFT-P Open User Settings (JSON) )を編集し、デフォルトのPythonフォーマッタとして設定し、保存のフォーマットを有効にします。
"[python]" : {
"editor.defaultFormatter" : " charliermarsh.ruff " ,
"editor.formatOnSave" : true
}コミュニティからの貢献を歓迎します!バグを修正する、ドキュメントの改善、新しい機能の追加など、次の方法を次に示します。
プルリクエストを送信する前に、既存の問題とPRを確認して、複製を避けてください。
私たちは、すべての貢献を迅速にレビューし、あなたの変更を合併するのに役立つ建設的なフィードバックを提供することを目指しています。
私たちの不一致に参加してください
docsを読んでください
➡xで到達してください