Show HN: Jargo —— 用於對話式AI應用的Go語言版Pipecat
Jargo是Pipecat的早期Go語言移植,提供即時語音代理框架,支援WebRTC音訊輸入輸出、流式語音轉文字→推理→文字轉語音管道、輪流對話和打斷功能。旨在提供一個可自託管、可部署為二進位制檔案替代Python方案的解決方案。
Jargo是一個將Pipecat移植到Go語言的開源專案,專為構建即時語音AI代理而設計。它透過WebRTC接收音訊輸入,經過流式語音轉文字(STT)→大語言模型(LLM)推理→文字轉語音(TTS)的管道處理,再透過RTVI資料通道將音訊輸出到客戶端,實現與現有RTVI客戶端的互操作。專案目前處於早期開發階段,API尚不穩定,可能會發生變化。
為什麼選擇Go而不是Python?Pipecat本身是基於Python的,但即時語音伺服器通常不需要複雜的AI/資料科學生態系統——模型通常作為遠端服務或ONNX執行時執行,剩下的工作主要是音訊幀處理、WebRTC連線管理、併發控制和最終二進位制打包。對於這些任務,Go語言更為合適:它可以編譯為單個靜態二進位制檔案,部署簡單;記憶體佔用低且可預測;啟動速度快;並且能夠實現真正的併發,同時處理多個會話而不受GIL限制。因此,Jargo應運而生,同時避免了依賴Daily等專有云服務的鎖定。
Jargo的核心特性包括:使用純Go的Pion庫實現標準WebRTC,無需專有傳輸層;音訊編碼方面,預設使用純Go的Opus編碼器,也可選擇libopus以獲得更佳的語音質量;流式管道支援STT、LLM和TTS,並帶有提示快取;輪流對話和打斷功能基於本地ONNX執行的Silero VAD和Smart Turn v3演算法;所有服務(STT/LLM/TTS)都可透過小型介面進行插拔;架構採用獨立的處理器,透過幀傳遞實現中斷和併發。
依賴方面,Jargo使用cgo(不支援CGO_ENABLED=0),並需要一些本機庫:libsoxr用於音訊重取樣(構建時連結),libopus是可選的C Opus編碼器(透過-tags libopus選擇),ONNX Runtime在執行時載入用於VAD和對話結束檢測。容器映象已包含所有這些依賴。
使用方式上,可以透過go get獲取,本地構建時需要安裝本機依賴,然後使用cgo執行示例。也提供Docker方式,映象已包含所有依賴,只需設定相應的API金鑰即可。專案包含兩個示例:echo bot(無需API金鑰)和完整的語音bot(需要DeepGram、Anthropic、ElevenLabs的API金鑰)。
Jargo採用BSD-2-Clause許可證,與Pipecat相同,並保留上游Daily的版權宣告。這是一個獨立專案,與Daily無關聯或背書。