DeepSeek大肥鱼教程来了!养成你的第一只鲸鱼娘

Datawhale · 人工智能

原创 Datawhale 2026-11-04 23:07 浙江 Datawhale干货 保姆教程:大肥鱼 最近,国内互联网真的快被一群「蓝色大肥鱼」占领了。 有人把她做成桌宠养在屏幕右下角,有人把她接进 QQ 当赛博闺女,还有人直接把她放去 B 站评论区搞出了一场浩浩荡荡的「赛博鱼灾」。 既然大家都想把她真正养起来,那今天我们就带大家更进一步: 直接在浏览器里,手搓一只真正能戴上耳机实时语音唠嗑、嘴巴跟着动、而且随时能插话打断的专属大肥鱼! 做这种面对面的语音互动,最大的难点就是实时感。 为了不把时间浪费在从零造轮子上,我们把底层的音频传输、说话轮次判断和实时打断,交给声网的实时通信与对话式 AI 能力来支撑;借着配套的 实时互动AI开发工具包 ,把这些能力直接接进了前端应用。 今天,我们来教大家基于这套实时系统,四步搞定,从配置国内模型到挂上角色动效,手把手带大家把属于你的那只大肥鱼真正跑起来。 一、先理解大肥鱼实时说话的原理 在浏览器里和大肥鱼面对面聊天,背后由声网对话式 AI 引擎组织对话,RTC 和 RTM 承担传输,前端负责角色呈现: 1. 对话流程与轮次调度(对话式 AI 引擎):串联语音识别(ASR)、大模型(LLM)和语音合成(TTS),判断你何时讲完、何时插话,让大肥鱼及时接话,也能在被打断时停下来。 2. 音频传输(RTC):智能体加入 RTC 频道,接收你的麦克风声音,再把合成的回复传回浏览器。RTC 提供低延迟传输、回声消除和弱网抗丢包能力。 3. 字幕与状态传递(RTM):在这个示例中,引擎输出的字幕和对话状态通过 RTM 传到前端,更新对话记录及倾听、思考、说话等状态提示。 4. 角色与动作控制(前端):渲染大肥鱼的形象,根据对话状态切换动作,让角色表现与对话过程相配合。 上面前三个部分如果全靠自己从头写,光是调通音频流传输和打断状态机就要耗费不少功夫。 这次搭建用到的声网 实时互动 AI 开发工具包 ,把 AI 编程助手需要的开发指引、命令行工具、场景示例和声网 SDK 整合起来,从而可以更快搭建实时语音、视频和对话式 AI 应用。它主要包含四部分: 开发技能(Skills):为 AI 编程助手提供接入指南,指导它使用声网能力完成开发。 命令行工具(CLI):帮助完成项目初始化、环境配置和诊断。 场景示例(Recipes):提供 60 多个场景的示例代码,方便参考和改造。 声网 SDK:为应用提供实时音视频等底层能力,支撑实际的互动体验。 配合 AI 编程助手,从配环境到拉示例,几步就能把大肥鱼跑起来。 完整保姆教程: https://recipes.agora.io/recipes/desktop-pet 二、在浏览器里养成你的大肥鱼 从官方通用脚手架演进到一只活蹦乱跳的大肥鱼,在业务代码上的改动其实极少,人设逻辑只改两行变量,而涉及底层音频传输和打断控制的代码一行都不用手写。 我们分为四步来走: 配置国内环境 → 跑通首轮通话 → 调优角色参数 → 挂载动态形象 第一步:准备官方 Quickstart,切换中国站与国内模型 我们直接基于官方 Next.js 模板( AgoraIO-Conversational-AI/agent-quickstart-nextjs )起步。 运行环境要求 Node.js 22 或更高版本 ( package.json 显式声明了 engines >=22 )。Windows 用户请使用 PowerShell 7+( pwsh ),旧版 PowerShell 5.1 处理部分脚本和路径时容易报错。 git clone https://github.com/AgoraIO-Conversational-AI/agent-quickstart-nextjs.git cd agent-quickstart-nextjs pnpm install 装好依赖后,官方模板在 app/api/invite-agent/route.ts 默认配的是美国节点( Area.US )和海外供应商(Deepgram、OpenAI、MiniMax),在国内直接启动会报错。 我们需要打开 app/api/invite-agent/route.ts (以及 app/api/stop-conversation/route.ts ),把区域改成中国站 Area.CN ,并将语音识别(STT)、大模型(LLM)和语音合成(TTS)换成国内开箱即用的组合: 语音识别侧,我们直接选用声网自研的凤鸣识别 FengmingSTT() 。新账号直接送 1000 分钟免费体验额度,最大好处是随声网账号统一鉴权,不用单独去第三方平台折腾申请 Key; 大模型和语音合成侧,支持自带 Key(BYOK)。这里我们通

查看原文