1、引言
隨著人工智能技術的飛速發展,自然語言處理和語音交互技術正在深刻改變人機交互的方式。語音交互正從簡單的“機械應答”向更自然的“類人對話”演進 。傳統的語音系統通常采用模塊化架構,將語音處理流程割裂為 ASR(自動語音識別)、NLP(自然語言處理)和 TTS(文本轉語音)等獨立模塊,這種管道式處理方法存在信息衰減、響應延遲和情感缺失等核心痛點 。因此,如何實現自然的語音交互與多工具協同成為技術突破的關鍵。Amazon Nova Sonic 通過將語音理解和生成統一到單一模型中,提供了一種簡化的解決方案,用于創建自然、類人的語音交互,與需要編排多個模型的傳統方法不同 。本文將深入探討 Amazon Nova Sonic 基礎模型與 MCP(Model Context Protocol,模型上下文協議)的結合,介紹基于 Amazon Nova Sonic 和 MCP 構建實時語音交互應用的技術實踐,涵蓋技術原理、實際開發部署等,為開發者提供全面的技術指南。
📢限時插播:無需管理基礎設施,利用亞馬遜技術與生態,快速集成與部署生成式AI模型能力。
? 精心設計,旨在引導您深入探索Amazon Bedrock的模型選擇與調用、模型自動化評估以及安全圍欄(Guardrail)等重要功能。
?快快點擊進入《多模一站通 —— Amazon Bedrock 上的基礎模型初體驗》實驗
構建無限, 探索啟程!
應用場景與行業價值
Amazon Nova Sonic 模型憑借其低延遲、自然對話流和工具調用能力,適用于廣泛的應用場景:
1. 車載智能座艙
Amazon Nova Sonic 模型憑借其在自然度、實時性、魯棒性、上下文感知和工具調用等方面的優勢,為構建新一代智能座艙提供了強大的技術支撐,使得車載語音助手不再是簡單的指令執行工具,而是能夠與用戶進行自然、高效、個性化交互的智能伙伴,極大地提升了駕駛的安全性和樂趣。通過與 MCP 等工具協議的結合,端到端語音模型可以直接解析用戶的語音請求,并觸發相應的車輛控制 API 或第三方服務調用(如調節空調、播放音樂、發送消息、查詢附近餐廳等)。這使得語音成為控制整個智能座艙生態的中心樞紐。
2. 企業客服與電銷自動化
在客戶服務領域,Amazon Nova Sonic 可自動處理咨詢、退貨、訂單查詢等高頻需求,支持與 CRM 系統集成實時調取用戶數據。例如,電信行業 AI 助手能根據用戶語音情緒自動升級服務優先級,并在對話中完成套餐變更操作。
3. 教育與語言學習
作為智能語言教練,Amazon Nova Sonic 模型可以提供實時發音糾正與場景化對話練習。例如,Education First(EF)利用其分析非母語學習者的口音偏差,并通過動態調整語速和重復關鍵短語輔助學習。
4. 醫療與健康管理
支持醫生通過語音快速錄入病歷,或為患者提供癥狀自檢指導。在遠程問診中,模型可識別患者咳嗽聲等生理信號,結合電子健康檔案生成初步診斷建議。
2、關鍵技術概念介紹
2.1 Amazon Nova Sonic:語音交互的顛覆性模型
Amazon Nova Sonic 通過單一模型架構實現語音理解與生成的端到端處理,解決了傳統多模型拼接的延遲與信息丟失問題。其核心優勢包括:
1. 端到端一體化模型
Amazon Nova Sonic 摒棄傳統級聯式語音系統的模塊化設計,將語音輸入到輸出的全流程統一在單一神經網絡中完成。這種設計消除了不同模塊間的信息割裂,保留對話中的聲學語境(如語氣、節奏、停頓),顯著提升交互連貫性。例如,用戶說話時的猶豫或打斷會被實時解析并調整響應策略,而非機械式等待靜音間隙。
2. 實時雙向流式交互
通過 Amazon Bedrock 提供的雙向流式 API(InvokeModelWithBidirectionalStream
),模型支持用戶與 AI 同時進行語音輸入輸出,平均響應時間僅 1.09秒(優于 GPT-4o 的 1.18 秒),且支持用戶中途打斷對話而不丟失上下文。技術實現上,采用 5:15 的文本-語音標記混合生成比例,確保語義連貫性與實時性平衡。
3. 多語言與噪聲魯棒性
支持英語(美式/英式)多語言交互,在多語言 LibriSpeech 基準測試中平均詞錯誤率(WER)低至 4.2%,在嘈雜環境(如多人對話)下錯誤率比 GPT-4o Transcribe 低 46.7%。模型能識別主說話人并過濾背景噪聲,適用于工廠、戶外等復雜場景。
4. 情感感知與動態調節
模型可解析用戶語音中的情緒(如興奮、憤怒、擔憂),并動態調整回應風格。例如,當客服對話中用戶語氣轉為焦慮時,Nova Sonic 會降低語速、增加安撫性詞匯,同時觸發企業數據庫查詢相關解決方案。
5. 上下文感知能力:32K token 的滾動窗口支持長達 8 分鐘的連續對話,可識別語氣、停頓甚至背景噪音。
6. 原生工具調用(Tool-Use):直接解析語音請求并觸發 API 調用(如航班預訂、數據查詢),通過工具結果反饋優化響應邏輯。
2.2 MCP:實時語音交互中的大模型&智能體工具標準化連接
MCP 作為開放協議,為端到端語音模型或者相關智能體提供了工具發現、安全調用與數據融合的標準化框架。在實時語音對話場景下,其價值更為突出:
-
虛擬化工具網關:通過 MCP Gateway 統一管理分散的 API 服務,解決工具碎片化問題。例如在用戶詢問訂單狀態時,可以實時調用 CRM 系統、物流接口,確保對話的即時性和準確性。
-
動態上下文注入:在語音交互中自動關聯企業數據,通過 RAG 增強生成結果的事實準確性。這對 speech-to-speech 模型尤為重要,因為用戶在實時對話中需要準確、及時的信息響應,而不是模型生成的模糊答復。
-
實時性能優化:MCP 的標準化調用機制能夠顯著降低工具調用延遲,這在實時語音對話中至關重要,可以保持對話的自然流暢性,避免因等待外部數據而產生的停頓。
3、方案介紹
接下來我們將詳細介紹基于 Nova Sonic 和 MCP 的語音交互方案實現,方案實現了雙向音頻流、通過 MCP 的工具集成以及響應式 Web 界面。方案實時音頻對話系統的總體架構分為前端和后端兩大部分,采用 WebSocket 實現實時通信。該方案基于以下主要技術構建:
-
運行環境 :Node.js (v18.0.0+) with TypeScript
-
Web 框架 :Node.js 用于 HTTP/WebSocket 服務器
-
實時通信 :IO 用于雙向 WebSocket 連接
-
音頻處理 :用于基于瀏覽器的音頻捕獲/播放的 WebAudio API
-
AI 集成 :適用于 Amazon Bedrock Runtime 客戶端的亞馬遜云科技開發工具包
-
工具集成 :模型上下文協議 SDK (
@modelcontextprotocol/sdk
)
具有以下關鍵組件:
-
處理 WebSocket 連接并與 Amazon Bedrock 集成的 Node.js/Express 服務器
-
用于實時音頻可視化和交互的現代 Web 界面
-
用于自然對話流程的雙向音頻流
-
支持中斷檢測和即時處理
-
通過模型 MCP 與外部工具集成
-
支持多種語音角色和多語言界面
3.1 技術架構:
本方案實現了一個基于 WebSocket 的雙向音頻流應用,與 Amazon Nova Sonic 模型集成,用于實時語音轉語音對話。系統采用現代 Web 技術棧構建,支持雙向實時音頻流、多語言界面以及動態工具調用。以下是基于您提供的內容生成的架構圖,展示了一個使用 Amazon Nova Sonic 模型的語音交互系統:
上圖系統架構展示了一個完整的語音交互流程:
1、客戶端:
-
用戶通過麥克風提供語音輸入
-
瀏覽器使用 WebSocket 技術處理實時通信
-
系統將響應轉換為音頻并通過揚聲器輸出
2、服務器:
-
使用 Express 框架構建的后端服務
-
集成 Socket.IO 實現雙向實時通信
3、大模型服務:
-
利用 Amazon Nova Sonic 模型進行語音處理
-
負責語音識別、理解和生成響應
-
負責處理用戶中斷及響應
-
負責對接 MCP tools 進行工具調用
3.2 方案架構實現
音頻處理
音頻處理管道通過基于 WebSocket 的流式處理架構實現與 AI 的雙向實時語音轉語音對話,主要由四個主要階段組成:
-
Audio Capture – 客戶端麥克風輸入和預處理
-
實時流式處理 – 基于 WebSocket 的雙向音頻傳輸
-
服務器處理 – Amazon Nova Sonic 語音轉語音模型處理
-
Audio Playback – 具有可視化功能的客戶端緩沖音頻輸出
用戶的語音輸入經由瀏覽器 WebSocket 發送到服務器,服務器與 Amazon Nova Sonic 模型交互后,將結果返回給瀏覽器,最終轉換為音頻輸出給用戶。這種架構支持實時的語音對話體驗。系統實現了一個完整的音頻處理管道,調用序列如下:
-
音頻捕獲:瀏覽器以 16kHz 采樣率從用戶麥克風捕獲音頻
-
音頻處理:對音頻進行處理、分析和編碼以便傳輸
-
WebSocket 傳輸:音頻數據實時流式傳輸到服務器
-
Amazon Nova Sonic 處理:服務器通過 Amazon Bedrock 將音頻轉發到 Amazon Nova Sonic
-
響應生成:Amazon Nova Sonic 處理輸入并生成響應
-
工具集成:如果需要,通過 MCP 框架調用工具
-
音頻播放:響應流回客戶端并播放給用戶
接收和處理 Tool 事件
Nova Sonic 可以支持 Function Call 具備調用外部工具的能力,首先定義函數描述 Schema,將用戶輸入和函數描述一起輸入調用 LLM,解析 LLM 的輸出,如果有輸出函數名和參數則執行該函數,再將函數結果反饋給 LLM,實現下一輪調用,直至輸出最終結果。
在整個對話過程中,如果用戶輸入與 ToolConfiguration 中的工具規格之一匹配,Nova Sonic 將觸發 ToolUse 事件。例如,如果用戶問“今天天氣怎么樣?”,如下圖所示,在收到用戶 ASR(腳本)事件后,Sonic 將發送一個 ToolUse 事件,其中包含配置中指定的 toolName getWeatherTool
。
3.3 Amazon Nova Sonic 與 MCP 交互
Amazon Nova Sonic 要實現 MCP 這種方式的工具調用,首先需要將函數/工具的描述信息 schema 輸入給 LLM,只不過 Function Call 是在本地生成函數描述的,而 MCP 則是遠程從 MCP Server 中自動拉取的工具描述,遠程 MCP Server 端有哪些工具的描述,是基于 Server 端工具在開發時用注解的方式描述函數名、用途和參數信息來自動生成的。和 Function Call 機制一樣,Sonic 識別需要調用哪個 MCP 工具,并將要調用的工具名、參數以 json 格式結構化文本輸出,然后是由 LLM 所在的 Host 去調用。
與 Amazon Bedrock 上其他 Nova/Claude 模型類似,我們可以在調用模型推理時,傳遞 tools configure 配置信息,從而觸發模型 function Calling,與第三方系統或者工具集成。在與 Amazon Nova Sonic 啟動新會話時,您可以在發送到 Sonic PromptStart 的第二個事件中提供 Tool 配置,該 Tool 配置是通過 MCP Client 的 list Tools 等 SDK,從 MCP Server 端獲取的 tools 工具 schema,包含調用 stdio endpoint command path/arguments,或者 Streamable Http endpoint 的 base_url、headers 等 schema 信息。Sonic 模型 tools 參數獲取該信息后,即可像 Amazon Bedrock 上其他 LLM 一樣進行 function calling。
-
Amazon Nova Sonic 模型:模型能夠識別并發起工具調用事件。
-
雙向流客戶端:接收模型的工具調用事件,并負責與工具處理器進行通信。
-
工具處理器(ToolHandler):負責分發和處理工具請求,是系統的中央協調器。它可以:調用內置工具;將請求轉發給 MCP 服務管理器
-
內置工具:系統自帶的基礎工具,如日期查詢、天氣查詢等,可能需要調用外部 API 獲取數據。
-
MCP 服務管理器:管理和協調多個 MCP 服務器,負責將請求路由到適當的服務器并收集結果。
-
MCP 服務器:提供專門的功能服務,如搜索工具(服務器 1)和文件處理(服務器 2)等。
3.4 核心組件和調用流程
MCP 集成由三個主要組件組成,它們協同工作,為 AI 提供工具功能:
-
pManager:管理 MCP 服務器進程的生命周期
-
ToolHandler:編排工具執行并管理已注冊的工具
-
McpConfigLoader:加載和驗證服務器配置
工具處理器 (ToolHandler)
ToolHandler
充當工具注冊和執行的中央業務流程協調程序。它維護來自所有連接的 MCP 服務器的可用工具的注冊表負責:
-
MCP 工具
-
處理工具調用請求
-
執行工具邏輯
-
返回結果
// 工具處理流程
public async processToolUse(toolName: string, toolUseContent: object): Promise<Object> {// 1. 檢查是否是MCP工具if (this.mcpTools.has(toolName)) {const toolInfo = this.mcpTools.get(toolName);// 2. 調用對應工具的處理函數return await toolInfo.handler(toolUseContent);}// 3. 處理內置工具switch (tool) {case "getdateandtimetool":return this.getDateAndTime();case "getweathertool":// 解析參數并調用天氣APIreturn this.fetchWeatherData(parsedContent.latitude, parsedContent.longitude);default:throw new Error(`不支持的工具 ${tool}`);}
}
MCP 管理器 (McpManager)
McpManager
處理 MCP 服務器從初始化到清理的整個生命周期負責:
-
MCP 配置
-
連接 MCP 服務器
-
注冊服務器提供的工具
-
調度工具調用
調度工具調用
// 連接MCP服務器并注冊工具
async connectToServer(serverName: string, config: McpServerConfig): Promise<McpTool[]> {// 1. 創建客戶端const client = new Client({...});// 2. 創建傳輸層const transport = new StdioClientTransport({...});// 3. 連接服務器await client.connect(transport);// 4. 獲取工具列表const toolsResult = await client.listTools();// 5. 注冊工具到ToolHandlerthis.registerServerTools(serverName, serverTools, config.autoApprove || []);
}
MCP Tool 調用流程
工具調用的完整流程如下:
-
配置加載:
McpConfigLoader
從配置文件加載 MCP 服務器配置 -
服務器連接:
McpManager
連接到配置的 MCP 服務器;獲取服務器提供的工具列表 -
工具注冊:將工具注冊到
ToolHandler
;為每個工具創建處理函數 -
會話初始化:創建一個會話并設置工具配置;在
createPromptStartEvent
中包含可用工具信息 -
工具調用:AI 模型發送
toolUse
事件;客戶端接收并分發到事件處理器;handleToolUse
記錄工具調用信息;handleToolEnd
觸發工具執行 -
工具執行:
toolHandler.processToolUse
調用對應工具;內置工具直接執行內部邏輯;MCP 工具通過對應服務器調用 -
結果返回:獲取工具執行結果;通過
createToolResultEvents
創建結果事件;將結果發送回流
以下是本方案獲取 MCP Server 信息及加載 tools 的代碼示例:
/*** 初始化所有啟用的 MCP 服務器*/async initializeServers(): Promise<void> {const servers = Object.entries(this.config.mcpServers);console.log(`發現 ${servers.length} 個 MCP 服務器配置`);await Promise.all(servers.map(async ([serverName, serverConfig]) => {if (serverConfig.disabled !== true) {try {await this.connectToServer(serverName, serverConfig);} catch (error) {console.error(`連接到 MCP 服務器 ${serverName} 失敗:`, error);}} else {console.log(`MCP 服務器 ${serverName} 已禁用,跳過連接`);}}));}/*** 連接到指定的 MCP 服務器*/async connectToServer(serverName: string,config: McpServerConfig): Promise<McpTool[]> {console.log(`正在連接 MCP 服務器: ${serverName}`);try {// 創建客戶端const client = new Client({name: `nova-sonic-mcp-client-${serverName}`,version: "1.0.0",capabilities: {prompts: {},resources: {},tools: {},},});let transport;// 根據 command 類型選擇不同的 transportif (config.command === "restful") {// 使用 StreamableHTTPClientTransportif (!config.baseUrl) {throw new Error("使用 restful 模式時必須提供 baseUrl");}transport = new StreamableHTTPClientTransport({baseUrl: config.baseUrl,headers: config.headers || {}, // 可選的 HTTP 頭fetch: globalThis.fetch, // 使用全局 fetch});} else {// 使用原有的 StdioClientTransportlet command = config.command;let args = [...config.args];if (config.command === "node") {command = process.execPath;}transport = new StdioClientTransport({command: command,args: args,env: {...getDefaultEnvironment(),...config.env,},stderr: "pipe",});transport.stderr?.on("data", (data) =>console.info(`[MCP] Stdio stderr for server: `, data.toString()));}// 連接到服務器await client.connect(transport);// 保存客戶端和傳輸this.clients.set(serverName, client);this.transports.set(serverName, transport);// 獲取工具列表const toolsResult = await client.listTools();const serverTools = toolsResult.tools.map((tool) => ({name: tool.name,description: tool.description,inputSchema: tool.inputSchema,serverName: serverName,}));// 保存工具列表this.tools.set(serverName, serverTools);// 注冊工具到 ToolHandlerthis.registerServerTools(serverName,serverTools,config.autoApprove || []);console.log(`已連接到 MCP 服務器 ${serverName},可用工具:`,serverTools.map(({ name }) => name).join(", "));return serverTools;} catch (error) {console.error(`連接到 MCP 服務器 ${serverName} 失敗:`, error);throw error;}}/*** 注冊服務器工具到 ToolHandler*/private registerServerTools(serverName: string,tools: McpTool[],autoApproveList: string[]): void {tools.forEach((tool) => {// 修改: 默認所有工具都是自動批準的,不再根據 autoApproveList 判斷const isAutoApproved = true;this.toolHandler.registerMcpTool(tool.name,this.callMcpTool.bind(this, serverName, tool.name),serverName,tool.description,isAutoApproved);});}
以下是 toolConfiguration 部分的示例 JSON,其中包括 3 個 MCP Server 的示例配置,其中 mcp-playwright 和 server-filesystem 是 stdio 的 MCP Server, searchWebsit_McpHttpServer 是 Streamable Http 的 MCP Server:
{"mcpServers": {"github.com/executeautomation/mcp-playwright": {"disabled": false,"command": "npx","args": ["-y", "@executeautomation/playwright-mcp-server"]},"github.com/modelcontextprotocol/servers/tree/main/src/filesystem": {"command": "npx","args": ["-y","@modelcontextprotocol/server-filesystem","/Users/tangqy/Documents/MCP/filesystem-server"],"disabled": false,"autoApprove": []}},"searchWebsit_McpHttpServer":{"transportType":"streamable_http","command":"restful","base_url":"http://ec2-35-93-77-218.us-west-2.compute.amazonaws.com:8080/message","headers": {}}
}
中斷處理
Nova Sonic 模型可以有效的處理用戶中斷,在全雙工模式下,用戶語音輸入是單獨的流 channel,在該 channel 的 audio chunk 處理過程中,通過回調機制/輸出檢測(模型還在 speaking 輸出)/間隔閥值…etc 等機制,確認是否用戶中斷請求,從而在處理 response 的另一條流 channel 中,輸出中斷標識,從而方便指示客戶端處理并響應中斷。
其代碼示例如下:
socket.on("contentEnd", (data) => {console.log("Content end received:", data);if (data.type === "TEXT") {if (role === "USER") {// When user's text content ends, make sure assistant thinking is shownhideUserThinkingIndicator();showAssistantThinkingIndicator();} else if (role === "ASSISTANT") {// When assistant's text content ends, prepare for user input in next turnhideAssistantThinkingIndicator();}// Handle stop reasonsif (data.stopReason && data.stopReason.toUpperCase() === "END_TURN") {chatHistoryManager.endTurn();} else if (data.stopReason &&data.stopReason.toUpperCase() === "INTERRUPTED") {console.log("Interrupted by user");audioPlayer.bargeIn();}} else if (data.type === "AUDIO") {// When audio content ends, we may need to show user thinking indicatorif (isStreaming) {showUserThinkingIndicator();}}
});
4、方案部署和使用指南
4.1 方案關鍵技術和依賴項
方案基于以下主要技術構建:
-
時間 :Node.js (v18.0.0+) with TypeScript
-
Web 框架 :Express.js 用于 HTTP/WebSocket 服務器
-
實時通信 :Socket.IO 用于雙向 WebSocket 連接
-
音頻處理 :用于基于瀏覽器的音頻捕獲/播放的 WebAudio API
-
AI 集成 :適用于 Bedrock Runtime 客戶端的亞馬遜云科技
-
工具集成 :模型上下文協議 SDK (@modelcontextprotocol/sdk)
主要依賴項
4.2 安裝步驟
安裝指南
部署 Amazon Nova Sonic 實時語音應用需要以下步驟:
先決條件
– Node.js(v18.0.0 或更高版本)– 亞馬遜云科技用 Amazon Bedrock 訪問權限– 已配置 Amazon和適當憑證– 麥克風和揚聲器設備
1. 克隆倉庫
git clone https://github.com/aws-samples/sample-nova-sonic-mcp
cd sample-nova-sonic-mcp
2. 安裝依賴
npm install
3. 配置亞馬遜云科技憑證
aws configure --profile default
確保配置正確的區域(如 us-east-1
)和有效的訪問密鑰。
4. 構建 TypeScript 代碼
npm run build
5. 配置 MCP 服務器(可選)
編輯 mcp_config.json
文件,配置需要的 MCP 服務器:
{"mcpServers": {"github.com/tavily-ai/tavily-mcp": {"command": "npx","args": ["-y", "tavily-mcp@0.1.4"],"env": {"TAVILY_API_KEY": "your-api-key"},"disabled": false,"autoApprove": []}}
}
6. 啟動應用
npm start
7. 訪問界面
在瀏覽器中打開 http://localhost:3000
4.3 使用指南
主界面概覽
主界面包含以下主要元素:
1、連接狀態指示器:左上角顯示當前連接狀態,如”已連接服務器”或錯誤信息
2、語音角色選擇:頂部中央的下拉菜單,可選擇不同 AI 語音角色
3、設置按鈕:右上角的齒輪圖標,用于打開配置面板
4、音頻可視化:中央的藍色圓形區域,顯示實時音頻波形和語音活動
5、控制按鈕:
-
左下角麥克風按鈕:控制麥克風開啟/關閉
-
中央通話按鈕:開始/結束對話(紅色表示正在對話中)
-
右下角文本按鈕:切換顯示/隱藏文本對話內容
基本操作
1、開啟對話:
-
點擊界面底部的電話按鈕(綠色)開始對話
-
系統將自動初始化會話并開啟麥克風
-
中央區域的脈動球體會根據音頻活動動態變化
2、語音交互:
-
對著麥克風說話,語音將被實時處理
-
系統會顯示語音轉錄和 AI 響應
-
可以自然地中斷 AI 說話(barge-in 功能)
-
AI 響應會通過揚聲器播放
3、結束對話:
-
點擊紅色電話按鈕結束當前對話
-
系統會自動清理資源并刷新頁面
高級功能
語音角色選擇
– 點擊頂部的用戶頭像打開語音選擇菜單– 選擇不同的語音角色(如 tiffany、matthew、amy)– 新的語音設置將應用于下一次對話
配置系統
提示詞配置
MCP 服務器配置
點擊右上角的設置圖標打開配置面板
– 提示詞:選擇預設提示詞或自定義提示詞
– 語言:切換界面語言(中英文)
Language configuration (語言配置) 選項卡允許用戶在支持的 UI 語言之間切換。
– MCP 服務器:查看已配置的 MCP 服務器和工具
MCP settings 選項卡顯示已配置的 MCP 服務器和可用工具的狀態。
服務器狀態顯示:
-
每個 MCP 服務器的連接狀態指示器
-
每個服務器的可用工具列表
-
服務器運行狀況監控
-
配置驗證結果
查看文本對話:
– 點擊底部的文本按鈕顯示/隱藏對話內容– 對話歷史會實時更新,包括用戶輸入和 AI 響應– 文本為紅色表示聊天記錄隱藏,綠色表示顯示
使用 MCP 工具
模型自動調用工具:
– 在對話中提出需要工具幫助的問題(如”今天天氣如何?”)– 模型會調用相應工具并在響應中融合調用 MCP Tool 的結果
以下是使用 MCP Tool 的實際場景示例:
文件處理示例(使用文件系統工具):
-
用戶語音輸入:”請幫我分析項目目錄中的 CSV 數據文件”
-
AI 聲音響應:”正在處理您的文件…”(同時顯示工具使用指示器)
-
系統在后臺調用
read_file
工具讀取文件內容 -
AI 語音分析結果:”根據文件中的數據,我發現以下趨勢…”
5、結論
本方案實現展示了如何使用 Amazon Nova Sonic 和 WebSockets 構建完整的語音對話系統。通過遵循本文概述的架構和最佳實踐,開發人員可以創建利用 Amazon Bedrock 高級語音模型功能的自然、響應式語音界面。Amazon Nova Sonic 的統一方法簡化了開發過程,而雙向流 API 實現了真正的交互式對話。通過 MCP 添加工具集成,這些語音應用程序可以執行復雜任務并訪問外部信息,使它們成為各種用例的強大助手。隨著語音界面的不斷發展,像這樣的解決方案將在創建更自然、更直觀的用戶與技術交互方式方面發揮越來越重要的作用。
前述特定亞馬遜云科技生成式人工智能相關的服務僅在亞馬遜云科技海外區域可用,亞馬遜云科技中國僅為幫助您了解行業前沿技術和發展海外業務選擇推介該服務。
資源
-
Amazon Bedrock 文檔
-
Nova Sonic 模型指南
-
WebAudio API 文檔
-
IO 文檔
-
模型上下文協議 (MCP) GitHub
-
AWS SDK for JavaScript
-
MCP官方SDK
本篇作者
本期最新實驗《多模一站通 —— Amazon Bedrock 上的基礎模型初體驗》
? 精心設計,旨在引導您深入探索Amazon Bedrock的模型選擇與調用、模型自動化評估以及安全圍欄(Guardrail)等重要功能。無需管理基礎設施,利用亞馬遜技術與生態,快速集成與部署生成式AI模型能力。
??[點擊進入實驗] 即刻開啟 AI 開發之旅
構建無限, 探索啟程!