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無關聯或背書。