推出 Eleven v4认识 Eleven v4:迄今情感表现最丰富的模型。

跳至内容

如何构建 AI 语音助手:贴合品牌的语音 AI

发布时间
最近更新

收听收听本文

想象一下:你致电零售店申请退款,由类人的 AI 接听,几分钟内款项便到账。整个过程无需人工客服介入。过去仿佛只存在于虚构作品中的、能处理复杂场景的 AI 语音助手,如今已成为现实。

越来越多企业正将 AI 语音助手用于面向客户的应用。这些助手由先进的语音智能体和生成式 AI 驱动,支持意图匹配、低延迟响应及跨场景功能集成。


借助 ElevenAgents 等工具,将语音助手嵌入客户支持工作流程比以往更轻松。要构建 AI 语音助手,先明确它要完成的任务,再将语音转文本、LLM 和文本转语音连接成一条实时处理流程。添加知识库和业务工具,编写系统指令与回退规则,测试延迟和安全性,并在上线后衡量效果。

本指南将介绍如何构建与品牌高度契合的 AI 语音助手。

AI voice assistant benchmarks: <500 ms response target, 92% accuracy, and 90+ languages.

摘要

  • AI 语音助手将语音转文本、LLM 和文本转语音连接起来,创建可采取行动的对话式 AI。
  • 通过语音活动检测(VAD)将往返响应时间控制在 500 ms 以下,让语音 AI 听起来更自然,并减少用户挂断电话。
  • 集成内部知识库和工具,使 AI 能在不同场景下提供理解上下文、准确且有帮助的响应。
  • 处理情绪激烈或复杂的请求时,采用要求明确口头确认的安全措施,并转接给真人客服。
  • 使用 ElevenAPI 获取专为实时交互设计的高准确度交互式语音和音频模型。

什么是 AI 语音助手?

AI 语音助手是能理解口语、让用户与已连接系统交互的软件。它结合语音转文本、AI 模型和文本转语音技术,将对话转化为行动。

AI 语音助手不仅能转录文本,还能执行任务,例如启动应用、检索数据和控制设备。取决于所用语音模型,部分 AI 助手的声音几乎与真人录音无异。


不过,AI 语音助手并非新技术。许多消费者都在使用 Siri、Alexa 和 Google Assistant 等可响应简单命令的商用语音助手。但随着 AI 技术发展,越来越多组织正为更复杂的企业工作流程构建 AI 语音助手。

例如,Admiral 这家保险提供商,构建了 AI 语音助手,为数百万客户提供支持。该助手可回答问题、检索文档,并让人工客服摆脱重复性任务。

如果你计划为商业或工业工作流程构建 AI 语音助手,请继续阅读。我们将通过Python AI 语音助手示例,带你了解构建步骤和关键实现细节。

如何构建 AI 语音助手:明确 AI 语音智能体的职责

语音 AI 常用于自动化呼叫中心的客户支持。不过,鉴于AI 语音智能体的广泛能力,几乎可为任何用例构建 AI 语音助手,包括销售、产品和人力资源. 

无论语音智能体用于何种场景,都应确保其符合业务逻辑。要构建高性能语音助手,可咨询领域专家,了解终端用户的常见难题;然后梳理客户交互旅程,并设定可衡量的指标。

例如,若将语音 AI 用于销售漏斗,智能体必须能够提出资格预审问题。

我们的 AI 销售开发代表(SDR)Dom 就做到了这一点,实现了92% 的资格判定准确率. 

选择成功指标、渠道和升级路径

部署在企业环境中时,智能体必须稳定达成特定目标。目标越聚焦,越容易评估和微调智能体。

因此,应在开发早期提出以下问题:

  • 可接受的响应延迟是多少?
  • 预期自助解决率是多少?
  • 智能体是否需要进行多语言对话?
  • AI 助手能否在无需人工干预的情况下端到端处理基本请求?
  • 在哪些情况下应升级至人工支持?
Five questions for tuning an agent: latency, containment, languages, autonomy, and escalation.

从原始 API 构建,还是使用 ElevenAgents?

编写代码前,先决定要自行负责多少语音技术栈。你可以通过 ElevenAPI 自行连接语音转文本、LLM 和文本转语音,也可以使用将这些组件整合在一起的托管平台 ElevenAgents。

基于原始 API 构建可让你完全掌控每一层。你可以选择 LLM、编写编排代码,并自行负责轮次切换、打断处理、电话接入和监控。此路径适合有特定架构要求的团队,也是本指南 Python 演练采用的方式。

ElevenAgents 将模型、工具、知识库和工作流程集中到一个仪表盘中。它可连接 Twilio、Amazon Connect 等电话服务商,以及Salesforce、Zendesk 和 HubSpot等业务工具。它还提供上线前的模拟和自动化测试,以及上线后的成功率、CSAT 和转录文本分析。

通过以下问题进行选择:

  • 速度:ElevenAgents 让团队能在仪表盘中配置并发布智能体;原始 API 则需要构建和维护整条管线。
  • 控制力:原始 API 让你通过代码自定义每一步;ElevenAgents 则通过配置满足常见需求。
  • 运营:ElevenAgents 包含测试和分析功能;使用原始 API 时,则需自行构建监控。
  • 团队:ElevenAgents 适合由产品、支持和运营人员组成的混合团队;原始 API 适合拥有专职工程师的团队。

一种实用做法是先在 ElevenAgents 中验证用例,仅在需要更多控制力时,再将特定层迁移到自定义代码。

Comparison of Raw APIs and ElevenAgents, recommending validation in ElevenAgents first.

规划 AI 语音助手架构

明确业务目标后,将智能体功能映射到合适的技术。AI 语音助手依赖多个关键组件协同工作,将语音转为文本、触发操作并给出连贯响应。

  • 语音转文本模型捕捉口语表达,识别音素,并生成对话转录文本。
  • AI 引擎充当语音助手的大脑,范围可从简单的基于规则的算法或自然语言处理库,到大型语言模型(LLM)。
  • 文本转语音模型使用类人声音合成对话式回复,并遵循品牌规范。
AI voice assistant pipeline: audio, transcription, LLM tools, speech synthesis, and reply.

ElevenLabs 提供语音转文本和文本转对话语音及音频模型,帮助产品和工程团队设计 AI 语音助手。我们的模型支持细腻语调、情绪感知和低延迟响应。可通过ElevenAPI访问这些语音模型。

对于 AI 模型,选择很大程度上取决于语音助手的目标和要求。OpenAI GPT 模型、Gemini 和 Claude 等 LLM 虽然擅长推理,但需要额外微调才能满足特定领域需求。有时,采用更简单的神经网络或基于规则的解析器会更实用。


除语音和 AI 模型外,还需要自定义软件从对话或用户请求中提取特定实体。例如,当来电者说“我想联系销售部”时,代码必须识别“销售部”并触发相应操作。

创建 API 密钥并连接语音转文本、LLM、工具和文本转语音

在连接语音和语言模型前,需要准备 API 密钥。将外部服务工具集成到语音助手时,同样需要 API 密钥来发起 API 请求。

  • 要创建 ElevenLabs API 密钥,点击此处。
  • 要使用 OpenAI LLM,在此获取密钥。
  • 如果要连接第三方 CRM、ERP 和其他工具,请参阅官方文档以创建 API 密钥并了解支持的 API。

获取 API 密钥后,将其存储在开发环境中。

然后,通过向 API 传入正确参数来初始化和访问工具、LLM 及音频模型。

1. 首先,连接ElevenLabs Scribe v2 Realtime,进行自动语音识别。ElevenLabs Scribe v2 Realtime 可用于创建低延迟语音智能体,在不到 150 ms 内将对话转换为文本(不包括网络和应用处理时间)。 

下面是一段使用 ElevenLabs Scribe v2 Realtime 捕捉麦克风录音的 Python 代码。

async def run(
    self,
    audio_queue: asyncio.Queue[bytes],
    on_partial: Callable[[str], None],
    on_committed: TranscriptHandler,
) -> None:
    audio_format = AudioFormat(f"pcm_{self.settings.audio_sample_rate}")
    connection = await self.client.speech_to_text.realtime.connect(
        RealtimeAudioOptions(
            model_id="scribe_v2_realtime",
            audio_format=audio_format,
            sample_rate=self.settings.audio_sample_rate,
            commit_strategy=CommitStrategy.VAD,
            vad_silence_threshold_secs=0.45,
            min_speech_duration_ms=120,
        )
    )

2. 接下来,将转录文本发送给具备强大推理能力的 LLM 以生成回复。本例使用 OpenAI GPT-4o mini。

以下是在 Python 代码中将转录文本发送给 LLM 的方式。

async def _stream_completion(self) -> tuple[str, list[dict[str, str]]]:
    response = await self.client.chat.completions.create(
        model=self.settings.openai_model,
        messages=[self.messages[0], *self.messages[-12:]],
        tools=TOOLS,
        tool_choice="auto",
        parallel_tool_calls=False,
        temperature=0.4,
        stream=True,
    )

3. 收到 LLM 输出后,使用ElevenLabs v4 Turbo将其转换为逼真的语音回复。我们的文本转语音模型情感表现力强,专为实时交互设计,模型推理延迟低至约 100 ms(仅指模型推理时间。实际端到端延迟会因所在地、所用端点类型等因素而异)。

以下代码展示智能体如何使用 WebSocket,通过 ElevenLabs 文本转对话 API 流式传输语音回复。

async def stream(self, text: str) -> AsyncIterator[bytes]:
    query = urlencode(
        {
            "model_id": self.settings.elevenlabs_tts_model_id,
            "output_format": "pcm_24000",
        }
    )
    url = f"wss://api.elevenlabs.io/v1/text-to-dialogue/stream-input?{query}"
    voice_id = self.settings.elevenlabs_voice_id


    async with websockets.connect(url, max_size=2**20, ping_interval=20) as socket:
        await socket.send(
            json.dumps(
                {
                    "voices": [voice_id],
                    "xi_api_key": self.settings.elevenlabs_api_key,
                }
            )
        )
        await socket.send(
            json.dumps(
                {
                    "inputs": [
                        {"text": text, "voice_id": voice_id, "new_turn": False}
                    ]
                }
            )
        )
        await socket.send(json.dumps({"close_socket": True}))

自动语音识别智能体应能轻松处理多轮对话。为此,需要一个能判断语音何时开始和结束的语音智能体。

设计自然且不偏离主题的对话

传统的交互式语音应答(IVR)系统无法处理预设场景之外的情况。当被要求解决规则中未定义的问题时,这些IVR 无法提供令人满意的响应。此外,它们的声音也不总是自然,影响客户体验。

借助先进的 AI 和语音模型,语音助手可以更自然地响应并处理边缘情况。你可以设计智能体需要预判的不同场景,以及无法解决问题时的升级路径。例如,有些客户来电查询配送状态,另一些可能因产品缺陷感到沮丧,坚持要求与客户体验经理沟通。

编写系统指令、轮次切换规则和回退回复

为处理不同场景,可在 AI 语音智能体应用中创建特定逻辑处理代码和系统提示词。

例如,以下系统提示词可检测挫败情绪,并要求 LLM 以更具同理心的方式回应。

SYSTEM_PROMPT = ""You are a calm, empathetic voice assistant for customer support.
Speak naturally in short, clear sentences that are easy to hear. Answer from
retrieved company information when relevant; say when the answer is uncertain
rather than inventing a policy. Use tools for customer lookup and support
requests. Before creating a ticket or transferring a caller, request explicit
verbal confirmation through the tool flow and wait for a clear yes. Never ask
for passwords, full payment card numbers, or authentication codes. Do not claim
a ticket was created, a contact was found, or a transfer completed unless the
tool confirms it. Keep responses concise and avoid markdown when speaking.
"""

AI 对话绝不应让人感到仓促或被打断。语音模型必须检测用户何时停止说话,并及时回复。ElevenLabs Scribe v2 Realtime 可在监听麦克风输入时启用 VAD。不同于仅依赖静音时长的传统 VAD,ElevenLabs Scribe v2 Realtime 使用深度学习算法判断客户是否已说完。

要启用 VAD,请在与语音转文本 API交互时在代码中设置该参数。

commit_strategy=CommitStrategy.VAD,

接下来,如果智能体无法令人满意地回答客户请求,应提供礼貌、尊重的回退回复。同样,AI 智能体在转录对话时也可能遇到错误。代码应处理技术问题,并坦诚地与客户沟通。

要提供回退回复,可在代码中使用条件逻辑。例如,以下代码会捕捉语音转文本 API 的错误状态,并触发相应回复。

connection.on(RealtimeEvents.ERROR, handle_error)
connection.on(RealtimeEvents.AUTH_ERROR, handle_error)
connection.on(RealtimeEvents.CLOSE, stopped.set)

构建知识和工具层,确保回复可靠


LLM 具备强大的推理能力,使 AI 语音助手能够自然响应。但对话自然不一定意味着准确。没有依据数据时,LLM 可能产生幻觉,导致语音智能体给出看似合理却不准确的答案。

例如,当你询问 GPT-4o mini 某款刚推出的产品时,它无法自信地给出答案。为此,需要通过检索增强生成(RAG)系统将 LLM 连接到内部知识库。RAG 让 LLM 能参考内部产品指南并生成准确答案。

添加检索、API 操作、权限和人工转接

要使用 RAG,需要创建向量数据库。向量数据库将文档作为多维空间中的数值表示进行存储。以下代码展示语音智能体如何在查询 LLM 前从向量存储中检索相关文档。

def search(self, query: str, top_k: int = 3) -> list[dict[str, str | float]]:
    query_vector = _vectorize(query)
    ranked = sorted(
        (
            (_cosine(query_vector, chunk.vector), chunk)
            for chunk in self.chunks
        ),
        key=lambda item: item[0],
        reverse=True,
    )
    return [
        {"source": chunk.source, "text": chunk.text, "score": score}
        for score, chunk in ranked[: max(0, top_k)]
        if score > 0

除 RAG 外,AI 语音助手可能还需要访问 CRM、ERP 和其他企业系统。这让语音智能体能在生成回复时,调用客户数据、历史交易和市场趋势等必要信息作为上下文。

例如,你可以通过 API将 ElevenLabs 与 HubSpot 集成。这样,你可以利用 CRM 知识库解决常见问题、创建工单,并携带完整对话上下文升级支持。

以下代码可让语音智能体在 HubSpot 中创建支持工单。

esponse = await self.client.post(
    "/crm/v3/objects/tickets",
    json={
        "properties": {
            "subject": title,
            "content": description,
            "hs_pipeline": "0",
            "hs_pipeline_stage": "1",
        }
    },
)
response.raise_for_status()
ticket = response.json()
if contact_email:
    contact_response = await self.search_contact(contact_email)
    results = contact_response.get("results", [])
    if results:
        await self.client.put(
            f"/crm/v4/objects/tickets/{ticket['id']}/associations/contacts/{results[0]['id']}",
            json=[{"associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 16}],
        )
return {"mode": "live", "id": ticket.get("id"), "title": title}

虽然AI 语音智能体可加快问题解决速度,但客户必须了解可选方案,尤其是当其操作可能显著影响账户时。与基于文本的聊天机器人不同,通过语音列出选项需要更多安全措施。一旦客户在通话中作出选择,之后可能很难撤销。

在这种情况下,建议验证来电者身份并获得口头确认。例如,若客户想取消购买,语音智能体必须明确询问:“你确定要取消订单吗?”并等待回答。

以下为示例。

def request(self, name: str, arguments: dict[str, Any]) -> str:
    self.pending = PendingAction(name=name, arguments=arguments)
    if name == "create_support_ticket":
        return "I can create that support ticket. Would you like me to submit it?"
    return "I can transfer you to a human support agent. Should I start the transfer?"

def resolve(self, text: str) -> tuple[ConfirmationState, PendingAction | None]:
    if self.pending is None:
        return ConfirmationState.NONE, None

    answer = re.sub(r"[^a-z']+", " ", text.lower()).strip()
    if answer in {
        "yes", "yes please", "yeah", "yeah please", "yep", "sure",
        "please do", "confirm", "do it",
    }:
        action, self.pending = self.pending, None
        return ConfirmationState.CONFIRMED, action
    if answer in {"no", "nope", "dont", "do not", "cancel", "stop"}:
        self.pending = None
        return ConfirmationState.DECLINED, None
    return ConfirmationState.PENDING, None

如何通过 AI 语音智能体验证来电者身份

AI 语音智能体在分享账户详情或修改账户前,应确认正在与谁交谈。来电者电话号码是有用信号,但不能证明身份。应结合其他验证方式:

  • 将来电号码与 CRM 中的客户记录匹配。
  • 询问只有账户持有人才知道的信息,例如最近的订单日期。
  • 通过工具调用根据记录验证答案,绝不能依赖 LLM 判断答案是否正确。
  • 限制未经验证的来电者可执行的操作,例如允许查询订单状态,但不允许取消订单。

按照上述系统提示词的要求,不要在对话中涉及密码、完整支付卡号和身份验证代码。

verify caller identify with a voice agent

具备实时通话转接和升级功能的 AI 语音智能体

实时转接会将来电者转给人工客服,无需重复说明情况。在 暖转接中,语音智能体会在接通前将转录内容和上下文传递给人工客服。常见触发条件包括:

  • 来电者要求与真人沟通。
  • 来电者听起来很沮丧,或对话带有强烈情绪。
  • 智能体在给出回退回复后仍无法解决请求。
  • 请求需要人工批准才能执行操作。

在某些情况下,AI 智能体需要将通话升级转接给人工客服。语音智能体通常会检测表示挫败感的意图或触发转接的特定词语。在代码中,通话转接必须无缝完成,让客户感受不到转接过程。

Guidance on four human-handoff triggers and passing transcript context during warm transfer.

切换前,将转录文本、客户详情和其他辅助上下文传递给实时支持团队。ElevenLabs 提供转接至号码工具,可将由 AI 智能体处理的通话路由至 SIP 中继或 Twilio 电话号码。

以下代码展示 Twilio 会议转接。

account = self.settings.twilio_account_sid
call_sid = self.settings.twilio_call_sid
conference = f"support-{call_sid}"
room = xml.sax.saxutils.escape(conference)
twiml = f"<Response><Dial><Conference>{room}</Conference></Dial></Response>"
api = f"https://api.twilio.com/2010-04-01/Accounts/{account}"
auth = (account, self.settings.twilio_auth_token)
async with httpx.AsyncClient(timeout=15.0, auth=auth) as client:
    agent_call = await client.post(
        f"{api}/Calls.json",
        data={
            "To": self.settings.handoff_number,
            "From": self.settings.twilio_from_number,
            "Twiml": twiml,
        },
    )
    agent_call.raise_for_status()
    caller_call = await client.post(
        f"{api}/Calls/{call_sid}.json",
        data={"Twiml": twiml},
    )
    caller_call.raise_for_status()

在 ElevenAgents 中无代码构建 AI 语音助手

如果不需要自定义代码,可在 ElevenAgents 中发布同样的助手。步骤与上述架构相对应,只需在仪表盘中配置各层,无需编写代码。

  1. 创建智能体,并在系统提示词中描述其职责,包括语气、范围和何时升级。
  2. 从声音库中选择声音,或自行设计、克隆声音,并设置智能体应使用的语言。
  3. 添加知识库,让智能体能根据文档回答问题。
  4. 连接 CRM、帮助台等工具和集成,使智能体能够采取操作。
  5. 为助手无法解决的通话设置转接至人工客服。
  6. 上线前运行模拟和自动化测试,检查其行为。
  7. 将智能体部署到电话号码或渠道,然后查看成功率、CSAT 和转录文本。

无论通过代码构建还是无代码构建,下文的测试和衡量建议都适用。

如何构建契合品牌的 AI 语音助手

组织可定制 AI 智能体的声音以体现品牌。一致的对话语气有助于建立信任。借助 ElevenLabs,可通过多种方式定制 AI 智能体声音。

  • ElevenLabs 声音库提供超过 20,000 种以 90 多种语言自然说话的 AI 语音。从充满活力到沉稳自信,你都能浏览并使用合适的声音来匹配品牌语气。
  • ElevenLabs 声音设计让你通过文本提示词创建独特的声音特征。描述语速、音调、情感和其他声音特质,即可获得所需声音。
  • ElevenLabs AI 语音克隆通过分析一段语音录音,创建声音的数字副本。


除确保情感和细微差别准确外,审查 AI 语音的发音也很重要,尤其是特殊名称。如有需要,可创建供语音模型参考的发音词典。

Comparison of voice library, voice design, and voice cloning options, plus pronunciation guidance.

上线前测试延迟、打断、准确度和安全性

上线前,应严格测试 AI 语音智能体,确保其在不同场景下稳定运行。

  • 延迟测试:响应超过 700 ms 的智能体会让客户感觉不自然。根据设置不同,网络速度、LLM、语音模型和第三方 API 都会影响延迟。理想情况下,应将对话延迟控制在 500 ms 以下。
  • 打断测试:检查智能体是否能处理中途打断。具体来说,智能体应丢弃输出音频帧、停止 TTS,并在不丢失上下文的情况下继续捕捉语音输入。
  • 轮次切换测试:用户停止说话时,智能体应自然接话。评估智能体接话时机是否恰当,以及是否会在用户说话时打断。详细指南请阅读ElevenLabs 如何处理轮次切换。
  • 准确度测试:STT 层的任何不准确都会向下游传递。确保语音助手即使在嘈杂环境中也能理解语音。此外,语音模型必须始终准确转录不同口音的语音。
  • 安全测试:确保护栏能够阻止违反品牌政策的系统行为。如果交互带有强烈情绪,智能体必须依照预设指南温和地转交给人工客服。
Pre-launch checklist: latency, interruptions, turn-taking, transcription accuracy, and safety.

衡量结果并改进语音助手开发

通过内部测试标准后,AI 语音智能体便可为实际部署做好准备。不过,这并非开发生命周期的最终目标。部署后的迭代同样重要,可确保 AI 语音智能体持续解决客户请求。

通过对话式 AI指标的反馈来发现 AI 助手的不足。然后逐步优化应用逻辑、API 集成、模型选择和技术栈其他组件,提升对话式 AI 性能。

跟踪自助解决率、解决率、客户满意度和失败模式


持续根据行业基准衡量 AI 助手。可跟踪的指标包括:

  • 自助解决率:跟踪由 AI 智能体成功解决的对话数量。
  • 升级率:衡量最终需要人工介入的通话。
  • 词错误率:衡量 AI 转录音频准确程度的基准指标。
  • 幻觉率:突出显示 LLM 生成不准确但看似合理答案的事件。
  • CSAT:反映客户对 AI 语音智能体满意程度的反馈。


深入了解对话式 AI 指标。

使用 ElevenAPI 开始构建 AI 语音助手

ElevenAPI简化 AI 语音助手开发。借助领先的文本转语音和语音转文本模型,可创建能融入企业工作流程、理解上下文的对话式 AI 智能体。我们的语音和音频模型持续提供高准确度和低延迟,实现自然的客户体验。

在此获取ElevenAPI API 密钥,并查看官方文档,开始构建。

常见问题:构建 AI 语音助手

作者

Jack Limebear 隶属于增长团队,负责博客和洞察页面的内容撰写与策略。加入 ElevenLabs 前,他曾在多家快速成长的 SaaS 初创公司和世界 500 强企业,拥有十余年内容策略管理经验。剑桥大学英语文学硕士。

相关内容

用高质量 AI 音频创作