使用LangChain構建緊急求助熱線語音代理
瞭解如何使用LangChain、AssemblyAI和OpenAI構建一個即時AI語音緊急求助熱線代理。該代理能夠傾聽呼叫者的語音求助,即時評估情況,派遣合適的緊急服務,並安撫呼叫者——無需任何打字或選單操作。文章詳細介紹了三階段流水線(語音轉文字、智慧體推理、文字轉語音)以及關鍵程式碼實現。
在緊急情況下,每一秒都至關重要。當人們驚慌失措時,傳統的按鍵選單式求助熱線往往加劇混亂。本教程將介紹如何利用LangChain、AssemblyAI和OpenAI構建一個全語音的AI緊急求助熱線代理,它能夠傾聽呼叫者的語音求助,即時評估情況,並自動派遣警察、救護車或消防服務,同時安撫呼叫者情緒。
為什麼選擇緊急求助熱線? 與常見的點餐或音樂播放語音助手不同,緊急求助熱線對延遲、語氣和可靠性有極高要求。語音助手的每一個設計決策都可能影響實際救援,因此它是檢驗AI語音系統能力的理想場景。
流水線架構:三明治模型 系統由三個獨立元件構成,並行工作:語音轉文字(STT)、智慧體推理和文字轉語音(TTS)。當呼叫者還在講話時,STT已經開始轉寫;智慧體在前一回復的基礎上進行推理;TTS則邊推理邊合成語音。正確實現時,整個流程可在10秒內完成,且音訊連續無中斷。
第一階段:語音轉文字(AssemblyAI) 使用AssemblyAI的WebSocket API,遵循生產者-消費者模型。音訊塊即時流入,轉錄文本即時流出。關鍵事件型別包括STT Chunk(部分轉錄,用於即時監控)和STT Output(完整轉錄,用於觸發智慧體動作)。建議啟用內容安全檢測標誌,以便在文本處理前識別求救訊號。
第二階段:緊急分類智慧體(ARIA) 智慧體ARIA基於LangChain和LangGraph構建,具備四個工具:位置查詢(get_caller_location)、緊急派遣(dispatch_emergency,支援救護車、警察、消防)、升級至人工(escalate_to_human)和安撫協議(calming_protocol)。系統提示要求ARIA始終保持冷靜,每次只問一個問題,避免使用表情符號或Markdown。透過InMemorySaver檢查點,ARIA能記住整個通話歷史,包括呼叫者之前提供的資訊。
第三階段:文字轉語音(OpenAI TTS) 選擇OpenAI TTS(tts-1模型)與智慧體共用API金鑰,簡化整合。tts-1針對即時流式合成最佳化,音色“shimmer”冷靜清晰。使用response_format='pcm'可直接將原始PCM音訊流送入WebSocket,延遲極低。注意,tts-1-hd雖然質量更高,但會增加約200ms延遲,因此緊急熱線推薦tts-1。
測試與結論 透過將上述模組串聯,並利用asyncio實現併發,一個全功能的語音緊急求助代理便構建完成。該代理能在通話中即時轉錄、推理並回應,顯著縮短求助響應時間。文章鼓勵讀者進一步最佳化,如新增更精細的語義分析或多語言支援。