了解 OpenAI 實時 API 的事件類型

在將實時 API 集成到應用程序之前,了解 API 支持的事件類型至關重要。以下是與本文示例相關的主要事件類型,完整列表可以參考 OpenAI API 文檔。

會話事件

會話事件表示客戶端與服務器的整個交互過程,允許設置和更新對話中的參數。以下是一個會話對象的示例:

{
  "session_id": "example_session",
  "parameters": {
    "voice": "en-US",
    "input_format": "audio",
    "output_format": "text",
    "instructions": "Translate to English",
    "tools": []
  }
}

通過 session.update 事件將上述 JSON 對象發送到實時 API,可以設置默認參數,例如語音類型、輸入輸出格式和可用工具等。然而,在使用過程中,我發現以下兩個屬性會導致調用失敗:

建議在調用前移除這些屬性,以避免會話調用失敗。

對話事件

對話事件用于管理客戶端與服務器之間的通信。最常用的事件是 conversation.item.create,它可以向對話中添加新項目。例如:

服務器會通過 conversation.item.createdconventions.created 響應這些事件。

響應事件

服務器通過語音活動檢測(VAD)處理傳入的音頻,并在語音結束時生成響應。如果通過客戶端 API 手動創建會話項,則需要通過 response.create 事件觸發服務器響應。

以下是常見的響應事件類型:


構建支持語音的 WebSocket 應用

為了實現實時語音交互,我將應用程序分為兩部分:

  1. WebSocket 連接代碼:用于與 OpenAI WebSocket 建立連接并發送、接收請求。
  2. 輔助函數:用于發送會話更新和處理消息。

WebSocket 連接代碼

以下是 WebSocket 連接的主要邏輯:

輔助函數

輔助函數的核心功能包括:

以下是一個解析響應事件的示例代碼:

async def _send_to_client(self, websocket: WebSocket, openai_ws: WebSocketClientProtocol) -> None:
    ...
    audio_payload = base64.b64encode(base64.b64decode(response['delta'])).decode('utf-8')
    audio_delta = {
        "event": "media",
        "media": {
            "payload": audio_payload
        }
    }
    # 將音頻增量發送到客戶端
    await websocket.send_json(audio_delta)
    ...

集成到 FastAPI 應用

在完成上述功能后,可以將其集成到 FastAPI 應用中。我在 WebSocket 服務器中設置了一個路由,允許用戶連接以發送和接收語音消息。

FastAPI 的 WebSocket API 非常適合此場景,因為其對象(如 WebSocket)是 JSON 可序列化的,并且可以直接用于路由。

以下是實現的關鍵步驟:

  1. 從終端錄制音頻,并以 _receive_from_client 函數期望的格式發送。
  2. 播放從 OpenAI 接收到的音頻。
  3. 確保以非阻塞方式處理音頻,以避免中斷其他 WebSocket 連接。

總結

通過以上步驟,您可以構建一個支持語音的 Python FastAPI 應用程序,并實現與 OpenAI 實時 API 的交互。雖然目前實時 API 的成本較高,但其強大的功能為語音應用開發提供了無限可能。

如果您對本文介紹的功能感興趣,可以訪問 mahilo 項目 GitHub 倉庫 查看完整代碼。希望本文能為您的開發提供幫助,祝您編碼愉快!


原文鏈接: https://medium.com/thedeephub/building-a-voice-enabled-python-fastapi-app-using-openais-realtime-api-bfdf2947c3e4

上一篇:

如何獲取 SerpApi 開放平臺 密鑰(分步指南)

下一篇:

旅游平臺的無縫API集成
#你可能也喜歡這些API文章!

我們有何不同?

API服務商零注冊

多API并行試用

數據驅動選型,提升決策效率

查看全部API→
??

熱門場景實測,選對API

#AI文本生成大模型API

對比大模型API的內容創意新穎性、情感共鳴力、商業轉化潛力

25個渠道
一鍵對比試用API 限時免費

#AI深度推理大模型API

對比大模型API的邏輯推理準確性、分析深度、可視化建議合理性

10個渠道
一鍵對比試用API 限時免費