Skip to content

使用 Azure AI Voice Live 为 .NET 应用构建实时语音助手

解决传统语音交互延迟高、缺乏自然流畅感的痛点:通过 Azure AI Voice Live SDK 实现低延迟的双向 WebSocket 通信,让 .NET 应用能够构建具备实时响应能力的语音助手。

为什么需要这个技能

传统的语音 AI 通常采用“语音转文字 文字处理 文字转语音”的串行流水线,这导致响应延迟高且无法在 AI 说话时进行自然的打断。

Azure AI Voice Live 采用实时多模态模型(如 GPT-4o-realtime),通过 WebSocket 维持长连接,允许音频流和文本流实时双向传输。这意味着开发者可以创建出像真人一样能够快速反应、支持实时打断并具有情感波动起伏的语音交互体验。

适用场景

  • 智能客服系统:需要极低延迟响应,模拟真实人类对话的场景。
  • 实时口译/陪练:需要实时监听用户输入并即时给出语音反馈的应用。
  • 无障碍辅助工具:为视障用户提供实时语音引导和交互界面。
  • 游戏 NPC 交互:构建能够实时感知玩家语音并作出反应的智能角色。

核心工作流

1. 环境配置与初始化

首先安装必要的 NuGet 包(包含身份验证和音频处理库 NAudio),并配置 Azure 资源端点和模型参数。推荐使用 DefaultAzureCredential 进行安全认证。

bash
dotnet add package Azure.AI.VoiceLive
dotnet add package Azure.Identity
dotnet add package NAudio

2. 建立会话与参数设定

通过 VoiceLiveClient 启动 WebSocket 会话,并配置 VoiceLiveSessionOptions。关键点在于同时开启 TextAudio 两种模态,并设置语义语音活动检测(VAD)以实现自然的对话流转。

csharp
var sessionOptions = new VoiceLiveSessionOptions()
{
    Instructions = "You are a helpful AI assistant. Respond naturally.",
    Voice = new AzureStandardVoice("en-US-AvaNeural"),
    TurnDetection = new AzureSemanticVadTurnDetection()
    {
        Threshold = 0.5f,
        SilenceDuration = TimeSpan.FromMilliseconds(500)
    },
    Modalities = { InteractionModality.Text, InteractionModality.Audio }
};
await session.ConfigureSessionAsync(sessionOptions);

3. 实时事件处理

使用 GetUpdatesAsync() 异步迭代处理服务器推送的事件。开发者需要根据事件类型(如 SessionUpdateResponseAudioDelta 为音频碎片,SessionUpdateResponseTextDelta 为文本碎片)实时驱动客户端的播放器或 UI 界面。

4. 集成函数调用(Function Calling)

定义 VoiceLiveFunctionDefinition 允许 AI 在对话过程中调用外部 API(如查询天气)。当收到 SessionUpdateResponseFunctionCallArgumentsDone 事件时,执行本地逻辑并将结果通过 FunctionCallOutputItem 回传给 AI。

下载和安装

下载 azure-ai-voicelive-dotnet 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐