大数跨境

实时语音与 RAG 相遇:构建特定领域的 AI 聊天机器人

实时语音与 RAG 相遇:构建特定领域的 AI 聊天机器人 索引目录
2025-07-24
1
导读:关注【索引目录】服务号,更多精彩内容等你来探索!一个基于语音的聊天机器人,它使用经过领域训练的 RAG 代理来回答社会学问题。

关注【索引目录】服务号,更多精彩内容等你来探索!

一个基于语音的聊天机器人,它使用经过领域训练的 RAG 代理来回答社会学问题。它叫做 Sociopal。

它由 LangGraph 提供支持,可以进行 RAG 校正,并且在找不到答案时还可以搜索网络。AssemblyAI 负责语音转文本,ElevenLabs 负责语音输出。

你用语音提出一个与社会学相关的问题。该应用会将你的语音转录为文本,并查询经过社会学文档训练的后端代理,然后给出答案。如果在向量数据库中找不到答案,它会返回到网页搜索并重试。

最终答案将通过 ElevenLabs 显示和大声朗读。

演示

尚未部署,但这里有一个简短的演示视频:

尚未部署,但这里有一个简短的演示视频:

安装步骤包含在 README 中。

技术实现

AssemblyAI 集成

我正在使用 AssemblyAI 的Universal-Streaming API来处理实时语音输入。大致流程如下:

1. 获取临时令牌

有一个 API 路由(/api/token)可以获取临时令牌:

const url = `https://streaming.assemblyai.com/v3/token?expires_in_seconds=60`

2. 通过 WebSocket 连接

一旦令牌准备就绪,就会打开 WebSocket 连接来传输音频:

wss://streaming.assemblyai.com/v3/ws?sample_rate=16000&formatted_finals=true&token=${token}

在前端,我使用它getUserMedia()来访问麦克风,然后将音频转换为 16 位 PCM 并通过套接字发送。AssemblyAI 会实时返回文字记录,我会在用户说话时将其显示出来。

它运行流畅,延迟低,即使是随意的讲话,记录也出奇的准确。

后端代理

后端运行一个带有/query路由的 FastAPI 应用。它接受用户查询,将其传递给 LangGraph 代理,并返回响应。

该代理使用纠正性 RAG,因此如果第一个答案不完整或不相关,它将使用改进的查询重试。它还会连接到网络搜索工具,以防答案不在向量数据库中。

最后的想法

构建这个应用是一个探索语音如何增强 AI 代理的有趣方式。AssemblyAI的实时转录和ElevenLabs的自然语音合成,让语音界面的实现变得顺畅无阻。

虽然这个模型是基于社会学数据进行训练的,但其设置实际上与领域无关。你可以将向量数据库替换成任何其他特定领域的内容,代理仍然能够正常工作。

如果您对语音用户界面或构建更智能的助手感兴趣,那么绝对值得尝试。

关注【索引目录】服务号,更多精彩内容等你来探索!


【声明】内容源于网络
0
0
索引目录
索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
内容 444
粉丝 0
索引目录 索引目录是一家专注于医疗、技术开发、物联网应用等领域的创新型公司。我们致力于为客户提供高质量的服务和解决方案,推动技术与行业发展。
总阅读12
粉丝0
内容444