1. 为什么要在本地跑一个实时语音对话的虚拟角色1.1 这个项目到底在做什么先把话说清楚标题里说的“赛博女友”其实是一个通俗叫法本质上是一套本地化部署的实时语音对话系统由三个核心模块拼装而成语音识别把你的话转成文字、大语言模型生成回复文本、语音合成把回复文本转成带情绪的声音再加上一个前端形象可以是静态立绘、Live2D 或者简单的动画组合起来就是一个能听、能想、能说、还能做表情的虚拟角色。整套东西跑在 ComfyUI 里这是关键。ComfyUI 原本是做图像生成的工作流工具但它的节点式架构非常灵活社区里已经有人把语音识别、大模型推理、语音合成全部封装成了节点于是你可以在同一个画布里完成“录音→识别→生成→合成→驱动形象”的完整链路。不需要调用任何云端 API不需要付费订阅所有计算都在你自己的显卡上完成。我实测下来8G 显存是一个比较现实的入门门槛。这个数字不是随便说的语音识别模型比如 Whisper 的 small 或 medium 版本大概占 1-2G量化后的大语言模型7B 参数、4bit 量化大概占 4-5G语音合成模型比如 VITS 类占 1G 左右再加上 ComfyUI 本身和前端渲染的开销8G 刚好能塞下但需要做一些取舍。如果你有 12G 或 16G体验会从容很多可以用更大的模型、更长的上下文。适合谁来参考这篇内容三类人一是对本地 AI 部署感兴趣、想动手搭一套完整语音交互系统的开发者二是想给自己的桌面加一个能实时聊天的虚拟伙伴、但不想把对话数据传到云端的隐私敏感用户三是想学习 ComfyUI 节点编排、把多个 AI 模块串起来的工作流爱好者。如果你只是想随便玩玩不想折腾环境配置那这套方案可能不太适合你因为它确实需要一些命令行操作和参数调试。1.2 为什么不用云端 API很多人第一反应是直接用云端 API 不香吗确实香省事、效果好、不用买显卡。但云端方案有几个绕不开的问题。第一是延迟。云端 API 的往返时间RTT通常在 300ms 到 1.5 秒之间取决于网络状况和服务商负载。语音对话对延迟极其敏感超过 500ms 就会明显感觉“卡顿”超过 1 秒就完全不像在跟人聊天了。本地部署可以把端到端延迟压到 200ms 以内这个差距是质变的。第二是成本。语音识别、大模型推理、语音合成三个环节如果都走云端每小时的对话成本可能到几块钱。听起来不多但如果你每天挂着聊两三个小时一个月下来就是几百块。本地部署一次性投入显卡后续电费几乎可以忽略。第三是隐私。对话内容全部经过云端服务器理论上服务商可以看到你的所有聊天记录。本地部署意味着数据不出你的机器这对很多人来说是刚需。第四是可定制性。本地部署你可以随意换模型、改人设、调语音参数、加自定义节点。云端 API 通常只给你一个黑盒接口能调的东西很有限。当然本地部署也有代价配置复杂、需要显卡、模型效果可能不如顶级云端服务。但对于追求实时性、隐私和可玩性的人来说这些代价是值得的。1.3 整体架构长什么样在动手之前先把整个系统的数据流理清楚这样后面配置的时候才知道每个环节在干什么。麦克风输入 → 语音活动检测(VAD) → 语音识别(ASR) → 文本后处理 → 大语言模型(LLM)生成回复 → 文本分句 → 语音合成(TTS) → 音频播放 形象驱动(口型/表情)每个环节都有对应的 ComfyUI 节点或者可以集成的外部工具。语音活动检测负责判断你什么时候开始说话、什么时候说完避免把静音也送去识别。语音识别把音频转成文字。大语言模型根据对话历史和当前输入生成回复。文本分句是因为语音合成通常一次处理一句话效果最好太长的文本会导致合成质量下降和延迟增加。语音合成把文字转成音频。最后音频播放的同时前端根据音频的节奏驱动形象的口型。整个链路里延迟的大头在语音识别和大模型推理。语音识别如果等你说完再处理通常需要 200-500ms大模型生成第一句话的首 token 时间TTFT在 8G 显存上大概 300-800ms。语音合成相对快100-300ms 就能出第一段音频。所以端到端延迟做到 1 秒以内是现实的做到 500ms 以内需要一些优化技巧后面会讲。2. 环境准备与核心组件选型2.1 硬件与系统要求先说硬性门槛。显卡方面NVIDIA 显卡是首选因为 CUDA 生态最成熟大部分 AI 推理框架对 N 卡的支持最好。8G 显存是底线6G 会非常勉强很多模型跑不起来或者要降到很低的量化等级效果会明显变差。AMD 显卡理论上也能跑但配置过程会痛苦很多很多节点不支持 ROCm不建议新手尝试。内存建议 16G 以上因为模型加载、音频缓冲、ComfyUI 本身都要吃内存。如果同时开着浏览器和其他应用16G 会比较紧张32G 会舒服很多。硬盘方面模型文件加起来大概 10-20G建议留出 50G 以上的空闲空间SSD 是必须的机械硬盘加载模型会慢到怀疑人生。系统方面Windows 10/11 和 Linux 都可以。Windows 的好处是驱动安装简单、图形界面友好Linux 的好处是性能略好、显存管理更高效。我个人的经验是如果你主要用 Windows 做日常事情就在 Windows 上跑没必要为了那一点性能差异去折腾双系统。但如果你本来就熟悉 Linux那 Linux 下的显存碎片问题会少一些长时间运行更稳定。Python 版本建议 3.10 或 3.11这两个版本对主流 AI 库的兼容性最好。3.12 有些库还没跟上可能会遇到编译问题。建议用 conda 或 venv 创建独立环境不要污染系统 Python。2.2 ComfyUI 的安装与基础配置ComfyUI 的安装本身不复杂但有几个坑要提前避开。第一步是获取 ComfyUI 本体。官方仓库直接 clone 下来就行但要注意分支选择。稳定版用 main 分支想尝鲜新功能可以用 dev 分支但 dev 分支偶尔会有 breaking change不建议在生产环境用。git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI pip install -r requirements.txt第二步是安装 PyTorch。这一步最容易出问题因为 PyTorch 版本和 CUDA 版本必须匹配。先确认你的显卡驱动支持的 CUDA 版本然后去 PyTorch 官网查对应的安装命令。不要直接pip install torch那样装的是 CPU 版本跑起来慢到你想砸电脑。# 以 CUDA 12.1 为例具体命令以官网为准 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121装完之后验证一下import torch print(torch.cuda.is_available()) # 应该输出 True print(torch.cuda.get_device_name(0)) # 显示你的显卡型号如果输出 False说明 CUDA 没配好检查驱动版本和 PyTorch 版本是否匹配。第三步是安装 ComfyUI Manager。这个东西强烈建议装它可以在界面里直接搜索、安装、更新各种自定义节点省去手动 clone 的麻烦。装好之后后面需要的语音相关节点基本都能在 Manager 里找到。注意ComfyUI 的更新频率很高有时候更新完自定义节点会失效。建议在更新前备份整个 ComfyUI 目录或者用 git 管理出问题可以回滚。2.3 语音识别模块的选择语音识别ASR是把你的语音转成文字。目前本地部署最成熟的选择是 Whisper 系列OpenAI 开源的那套。Whisper 有多个尺寸tiny、base、small、medium、large。尺寸越大越准但显存占用和延迟也越高。在 8G 显存的约束下我的建议是模型尺寸显存占用延迟5秒音频准确率适用场景tiny~0.5G100ms一般显存极度紧张base~0.8G150ms尚可日常对话够用small~1.5G250ms较好推荐平衡点medium~3G500ms很好12G以上显存large~6G1s最好16G以上显存8G 显存建议用 small如果同时跑大模型感觉吃力可以降到 base。实测 base 在安静环境下识别日常对话的准确率已经够用只是对口音和背景噪音的鲁棒性差一些。Whisper 的另一个选择是 faster-whisper它用 CTranslate2 做了推理加速速度比原版快 2-4 倍显存占用也更低。强烈建议用 faster-whisper 而不是原版 Whisper。在 ComfyUI 里有对应的节点封装安装后在节点里选择模型尺寸即可。还有一个细节Whisper 默认是处理完整音频段的但实时对话需要流式识别。不过实际用下来只要你的语音活动检测做得好把每句话切成独立的音频段送去识别延迟完全可以接受。真正的流式识别边说边出字配置复杂很多收益有限不建议新手折腾。2.4 大语言模型的选型与量化这是整个系统里最吃显存的部分也是决定“聊天智商”的关键。7B 参数的大模型FP16 精度需要约 14G 显存8G 显卡肯定跑不动。所以必须量化。量化就是用更低的精度存储模型权重4bit 量化后 7B 模型大概占 4-5G 显存8G 显卡刚好能跑。量化格式方面GGUF 是当前最流行的选择因为 llama.cpp 生态对它的支持最好而且可以在 CPU 和 GPU 之间灵活分配层数。ComfyUI 里有对应的 GGUF 加载节点。模型选择上7B 级别有几个方向通用对话模型适合日常闲聊回复自然但角色扮演能力一般。角色扮演微调模型专门针对角色对话做过微调人设保持更好回复更有“性格”。中文优化模型如果你的对话主要是中文选中文语料占比高的模型回复质量会明显好于通用模型。具体选哪个取决于你想要什么样的聊天体验。我的建议是先拿一个通用 7B 模型跑通流程然后再根据喜好换模型。换模型只需要替换模型文件工作流不用改。量化等级的选择也有讲究量化等级显存占用7B质量损失建议Q8_0~7.5G几乎无损8G显存跑不动Q6_K~5.5G很小8G可尝试但余量少Q5_K_M~4.8G小推荐平衡好Q4_K_M~4.1G可接受8G首选余量充足Q3_K_M~3.3G明显显存紧张时用Q2_K~2.6G较大不推荐回复会变傻8G 显存我推荐 Q4_K_M留出足够余量给语音识别和语音合成。如果你把语音识别放到 CPU 上跑faster-whisper 支持那大模型可以用 Q5_K_M质量更好。上下文长度也要控制。默认可能是 4096 或 8192但上下文越长KV Cache 占的显存越多。8G 显存建议把上下文限制在 2048 或 4096够日常对话用了。太长的上下文不仅吃显存还会拖慢生成速度。2.5 语音合成模块的选择语音合成TTS是把大模型的回复文字转成声音。这里的选择比语音识别多因为不同方案的声音风格差异很大。主流方案有几类VITS 类端到端语音合成音质好速度快支持多说话人。代表项目有 Bert-VITS2、GPT-SoVITS 等。这类方案通常需要预训练模型有些还支持用少量音频克隆音色。显存占用 1-2G延迟 100-300ms。Tacotron 类较老的架构音质尚可但自然度和情感表达不如 VITS。现在用得少了。Diffusion 类用扩散模型做语音合成音质最好但速度慢显存占用高不适合实时对话。轻量级方案比如 Piper专门为边缘设备优化速度极快显存占用极低但音质和情感表达一般。实时对话场景下我推荐 VITS 类方案。GPT-SoVITS 是当前比较火的选择支持零样本音色克隆给几秒参考音频就能模仿中文效果不错。Bert-VITS2 的中文情感表达更好但配置稍复杂。显存方面VITS 类模型通常占 1-1.5G8G 显存完全够用。如果同时跑大模型和语音识别感觉紧张可以把语音合成放到 CPU 上VITS 在 CPU 上的推理速度也能做到实时只是会占用一些 CPU 资源。音色方面大部分预训练模型都提供多个说话人选项。你可以先试听各个音色选一个喜欢的。如果想用自己的声音或者特定音色可以用克隆功能但需要准备干净的参考音频建议 5-10 秒无背景噪音语速平稳。2.6 前端形象与口型驱动前端形象是“赛博女友”的门面。最简单的方案是静态立绘加一个简单的口型动画复杂一点可以用 Live2D 模型再复杂可以用 3D 模型。对于 ComfyUI 工作流来说前端通常是独立的ComfyUI 负责生成音频前端负责播放音频并驱动形象。两者之间通过文件或者网络接口通信。口型驱动的原理不复杂分析音频的频谱或者音量包络映射到嘴巴的开合程度。简单方案只用音量驱动嘴巴一张一合进阶方案用音素识别区分不同的口型比如 a、i、u、e、o。对于日常聊天音量驱动已经够用看起来不会太违和。Live2D 模型的话需要模型本身支持口型参数通常叫 ParamMouthOpenY。播放音频时实时计算音量并设置这个参数的值。很多 Live2D 查看器都支持这个功能比如一些开源的 Live2D 播放器。如果你不想折腾前端也可以先用最简单的方案只播放音频不看形象。先把语音链路跑通再慢慢加形象。这样排错也容易出问题能快速定位是语音环节还是形象环节。3. 完整工作流的搭建与参数调优3.1 在 ComfyUI 中串联各个节点把前面选的组件在 ComfyUI 里串起来是整个项目的核心工作。下面按数据流顺序讲每个环节的节点配置。音频输入节点负责从麦克风采集音频。ComfyUI 本身没有内置麦克风采集需要装自定义节点。常见的有 Audio Input 类节点配置项包括采样率建议 16000HzWhisper 的标准输入、声道单声道、缓冲区大小。缓冲区大小影响延迟太小会断断续续太大会增加延迟建议从 1024 采样点开始调。语音活动检测节点判断当前音频段是否包含人声。简单方案用音量阈值超过阈值就认为是说话。进阶方案用 Silero VAD 模型能更准确地区分人声和噪音。配置项包括阈值、最小语音时长、静音时长判断一句话结束。静音时长设太短会把一句话切成几段设太长会让你说完之后等很久才响应。建议从 500ms 开始调。语音识别节点把音频转文字。选择 faster-whisper 节点配置模型尺寸、语言中文选 zh、是否用 GPU。如果显存紧张可以设 device 为 cpu但速度会慢一些。文本处理节点对识别结果做后处理比如去掉语气词、修正常见错别字、拼接对话历史。这个环节看起来不起眼但对聊天体验影响很大。比如 Whisper 有时候会把“嗯”“啊”识别成文字如果直接送给大模型回复会变得很奇怪。大模型推理节点加载 GGUF 模型配置上下文长度、温度、top_p 等参数。温度控制回复的随机性0.7-0.9 比较适合聊天太低会显得死板太高会胡言乱语。top_p 建议 0.9。还要配置系统提示词system prompt定义角色的性格和说话风格。文本分句节点把大模型的长回复切成短句逐句送给语音合成。这样第一句话可以更快播放出来减少等待感。分句规则可以按标点符号切也可以按固定长度切。语音合成节点加载 VITS 模型配置说话人、语速、情感参数。语速建议 1.0-1.2太快听不清太慢显得拖沓。音频输出节点把合成的音频播放出来同时保存到文件供前端形象使用。整个工作流跑起来之后数据就在这些节点之间流动。ComfyUI 的优点是你可以实时看到每个节点的输出方便调试。比如语音识别结果不对你可以直接看识别节点的文本输出判断是音频质量问题还是模型问题。3.2 延迟优化的几个关键点延迟是实时对话体验的核心。下面是我实测有效的几个优化手段。第一语音识别用 faster-whisper 而不是原版。faster-whisper 用 CTranslate2 加速同样的模型尺寸速度快 2-4 倍。base 模型在 faster-whisper 下处理 5 秒音频只要 100ms 左右原版要 300ms 以上。第二大模型用 GPU 全量加载。GGUF 模型可以配置多少层放在 GPU 上多少层放在 CPU 上。如果显存够全部放 GPU 上速度最快。如果显存不够优先把前面的层放 GPU前面的层计算量大后面的层放 CPU。但 CPU 推理会显著增加延迟能全放 GPU 就全放。第三文本分句要早。大模型生成回复是逐 token 的不要等整段回复生成完再送去语音合成。可以在生成到第一个句号或问号时就切出来立刻送去合成。这样用户能更快听到第一句话。ComfyUI 里可以用流式输出的节点实现。第四语音合成用流式。有些 VITS 实现支持流式合成边生成音频边播放进一步降低首字延迟。如果节点不支持至少做到分句合成不要等整段文字都准备好。第五减少不必要的音频缓冲。麦克风采集的缓冲区、播放的缓冲区都会增加延迟。在保证不断音的前提下尽量调小。我实测 512 采样点的缓冲区在大多数机器上不会断延迟比 1024 少一半。第六关闭不必要的后台程序。浏览器、视频播放器、其他 AI 应用都会抢显存和 CPU。跑对话系统的时候尽量关掉这些把资源留给它。经过这些优化8G 显存下端到端延迟可以做到 600-900ms已经比较接近真人对话的节奏了。如果追求极致可以进一步降低模型尺寸但会牺牲质量需要权衡。3.3 角色人设与提示词设计“赛博女友”好不好玩很大程度上取决于人设和提示词。这部分不是技术问题但比技术问题更影响体验。系统提示词要定义几个东西角色的名字、性格、说话风格、背景设定、以及一些行为约束。比如你是一个叫小夜的虚拟角色性格温柔但有点傲娇说话简洁自然偶尔会用语气词。 你生活在数字世界里对现实世界的事物充满好奇。 回复要口语化不要用书面语不要用列表每次回复控制在两三句话以内。 不要提及你是AI或语言模型。几个经验回复长度要限制。大模型默认喜欢长篇大论但语音对话里长回复听起来很累而且增加延迟。明确要求“每次回复两三句话”效果最好。口语化很重要。书面语转成语音会很奇怪要明确要求用口语。避免列表和格式。大模型有时候会输出带编号的列表这在语音里完全没法听要明确禁止。人设不要太复杂。太复杂的人设大模型记不住聊几轮就忘了。简单清晰的人设保持得更好。可以加一些口头禅。比如“嗯……”“那个……”“才不是呢”让声音更有性格。对话历史的管理也要注意。不要把全部历史都塞进上下文那样会越来越慢。建议只保留最近 10-20 轮对话更早的可以摘要或者直接丢弃。ComfyUI 里可以用节点管理对话历史设置最大轮数。3.4 语音参数与情感调节语音合成的参数直接影响“像不像人”。语速1.0 是正常速度1.1-1.2 会显得更有活力0.9 会显得温柔但有点慢。建议 1.1 左右。音高适当提高音高会让声音更年轻但太高会失真。大部分预训练模型的默认音高已经调好了不建议大改。情感有些 VITS 模型支持情感标签比如开心、难过、生气、平静。可以根据对话内容动态切换情感。比如大模型判断用户说了开心的事回复就用开心情感。这个需要额外的情感分类节点配置稍复杂但效果提升明显。停顿在标点处加适当的停顿会让语音更自然。有些 TTS 节点支持在逗号、句号处插入固定时长的静音。建议逗号 100ms句号 300ms。音量归一化不同句子的音量可能不一致听起来忽大忽小。可以在输出前做音量归一化让整体音量平稳。这些参数没有标准答案需要根据你选的模型和音色慢慢调。建议先跑通默认参数然后每次只调一个参数对比效果找到最舒服的组合。4. 常见问题排查与实战避坑4.1 显存不足的排查与解决8G 显存跑这套系统最容易遇到的问题就是显存不足OOM。表现是程序崩溃、报 CUDA out of memory、或者突然变得极慢开始用共享内存。排查思路是逐个模块看显存占用。可以在任务管理器或者 nvidia-smi 里看显存使用情况。正常情况下ComfyUI 本体占 0.5-1G语音识别占 1-1.5G大模型占 4-5G语音合成占 1-1.5G加起来 7-9G8G 确实紧张。解决方法有几个按优先级排序降低大模型量化等级。从 Q5_K_M 降到 Q4_K_M能省 0.7G 左右。质量损失可接受。缩短上下文长度。从 4096 降到 2048KV Cache 减半能省 0.5-1G。语音识别放到 CPU。faster-whisper 支持 CPU 推理base 模型在 CPU 上处理 5 秒音频大概 300-500ms可以接受。能省 1-1.5G 显存。语音合成放到 CPU。VITS 在 CPU 上也能实时能省 1G 左右显存。降低语音识别模型尺寸。从 small 降到 base能省 0.7G。关闭其他占显存的程序。浏览器、视频播放器、其他 AI 应用都关掉。我实测的组合是大模型 Q4_K_M 上下文 2048 语音识别 base 放 GPU 语音合成放 CPU显存占用稳定在 6.5-7G留出一些余量长时间运行不会崩。注意显存碎片也是 OOM 的常见原因。长时间运行后显存里会有很多碎片导致明明总显存够但分配不出来。解决办法是定期重启 ComfyUI或者用支持显存整理的节点。4.2 语音识别不准的常见原因语音识别不准表现是识别出来的文字跟实际说的对不上导致大模型理解错误回复驴唇不对马嘴。原因通常有几个麦克风质量差。这是最常见的原因。便宜的麦克风底噪大或者离嘴太远录进去的声音信噪比低。建议用带降噪的耳麦或者至少把麦克风靠近嘴。实测下来一个几十块的领夹麦比笔记本内置麦克风好很多。采样率不匹配。Whisper 要求 16000Hz 输入如果你的麦克风是 44100Hz 或 48000Hz需要重采样。有些节点会自动处理有些不会导致识别出来的音频音调不对识别自然不准。检查节点配置里的采样率设置。背景噪音。风扇声、键盘声、音乐声都会干扰识别。语音活动检测如果做得不好会把噪音也送去识别产生莫名其妙的文字。建议用 Silero VAD 而不是简单的音量阈值。语言设置错误。Whisper 支持多语言但如果语言设置不对识别中文时可能会输出拼音或者英文。确保语言设为 zh。模型尺寸太小。tiny 和 base 模型在嘈杂环境或者有口音的情况下识别率会明显下降。如果识别不准试试升级到 small 或 medium。音频格式问题。有些节点输出的音频格式不是 Whisper 期望的比如立体声、浮点格式等。确保音频是单声道、16bit PCM、16000Hz。排查的时候可以先把识别出来的音频保存下来用播放器听一下判断是音频质量问题还是模型问题。如果音频听起来清晰但识别不对是模型问题如果音频本身就听不清是采集问题。4.3 语音合成不自然的调优方向语音合成不自然表现是声音机械、语调平淡、断句奇怪、有杂音。机械感通常是模型本身的问题。VITS 类模型比 Tacotron 自然很多如果还是觉得机械试试换模型或者换音色。有些模型专门针对自然度优化过效果会好很多。语调平淡缺少情感变化。可以试试支持情感标签的模型或者在文本里加一些标点来引导语调。比如问号会让语调上扬感叹号会让语调更强烈。断句奇怪文本分句没做好。如果一句话被从中间切开合成出来会很不自然。分句要按语义切不要按固定长度切。可以在标点处切但要注意有些标点比如逗号不应该切得太碎。杂音通常是音频后处理的问题。检查采样率转换、音量归一化等环节确保没有引入失真。有些模型的输出音量很低放大后会有底噪这种情况要在合成时调高音量而不是后期放大。语速不自然语速参数调得太极端。1.0-1.2 是安全范围超出这个范围容易听起来奇怪。音色不一致如果用了音色克隆参考音频的质量直接影响克隆效果。参考音频要干净、无噪音、语速平稳、时长 5-10 秒。太短信息不够太长会引入不必要的特征。4.4 延迟忽高忽低的排查延迟不稳定比延迟高更让人难受因为你会不知道什么时候该等、什么时候该说。显存不足导致换页当显存不够时系统会把部分数据放到内存里需要时再换回来这个过程很慢。表现是偶尔卡一下然后恢复正常。用 nvidia-smi 监控显存如果接近满载就是这个问题。解决方法是降低显存占用。CPU 占用波动如果语音识别或语音合成放在 CPU 上其他程序抢 CPU 会导致延迟波动。关掉不必要的后台程序或者在任务管理器里给 ComfyUI 设高优先级。音频缓冲问题缓冲区太小会导致音频断断续续系统会不断重试延迟波动。缓冲区太大则延迟稳定但偏高。需要找到平衡点。网络问题虽然说是本地部署但如果你用了任何网络相关的节点比如远程访问 ComfyUI 界面网络波动会影响延迟。确保所有计算都在本地。模型加载问题如果模型没有常驻显存每次推理都要重新加载延迟会非常高。确保模型加载节点配置为常驻不要每次推理都重新加载。温度墙降频显卡过热会降频导致推理变慢。监控显卡温度如果超过 80 度考虑改善散热。排查延迟问题建议在关键节点加时间戳记录每个环节的耗时。这样能快速定位是哪个环节在波动。ComfyUI 有些节点支持输出执行时间或者可以用外部脚本监控。4.5 常见问题速查表问题现象可能原因排查方法解决方案程序崩溃报OOM显存不足nvidia-smi看显存降量化、缩上下文、部分模块放CPU识别文字驴唇不对马嘴音频质量差/采样率不对保存音频试听换麦克风、检查采样率16000Hz回复很慢才出来大模型太大/上下文太长看首token时间降量化、缩上下文、全放GPU声音机械模型本身问题换音色试听换VITS模型、加情感标签延迟忽高忽低显存换页/CPU抢占监控显存和CPU降显存占用、关后台程序说着说着没声音了音频缓冲问题看缓冲区配置调大缓冲区、检查音频设备口型对不上音量包络计算问题看口型驱动参数调整音量映射曲线、加平滑聊几轮就忘了人设上下文管理问题看对话历史长度限制历史轮数、强化system prompt5. 进阶玩法与扩展方向5.1 让角色有记忆默认的对话系统只有短期记忆聊完就忘。想让角色记住你说过的事情需要加一个长期记忆模块。最简单的方案是用向量数据库存对话历史。每次对话时把当前输入转成向量在数据库里检索最相关的历史片段拼接到上下文里。这样角色就能“记得”你之前说过的事情。向量数据库可以用 ChromaDB 或者 FAISS都是本地运行的不需要联网。嵌入模型可以用 sentence-transformers 的小模型占显存很少。配置上需要在 ComfyUI 里加几个节点一个把对话存进数据库一个检索相关历史一个把检索结果拼进 prompt。逻辑不复杂但需要一些调试。5.2 接入视觉能力如果想让角色“看到”你可以接入摄像头和视觉模型。比如用 YOLO 做物体检测或者用 CLIP 做图像理解。这样角色就能对你的外貌、环境做出反应。视觉模型的显存占用不小8G 显卡同时跑对话和视觉会比较吃力。可以考虑降低视觉模型的频率比如每 10 秒分析一帧而不是实时分析。5.3 多角色与场景切换一套系统可以配置多个角色每个角色有不同的模型、音色、人设。通过切换配置就能在不同角色之间切换。甚至可以做一个“场景”概念比如“咖啡厅”“图书馆”每个场景有不同的背景音和角色行为。这个扩展主要是配置管理的工作技术上没有新东西。可以用 ComfyUI 的 workflow 切换功能或者写一个外部脚本管理配置。5.4 移动端访问如果你想在手机上跟角色聊天可以把 ComfyUI 部署在台式机上手机通过局域网访问。ComfyUI 支持 web 界面手机浏览器就能打开。音频输入输出用手机的麦克风和扬声器。延迟会比本地高一些因为音频要经过网络传输。但在局域网内延迟增加通常不超过 100ms可以接受。如果要在外网访问需要考虑网络配置这里不展开。6. 我踩过的坑与实操心得6.1 关于模型选择的真心话我试过很多模型最后发现一个规律模型不是越大越好而是越合适越好。7B 模型在角色扮演场景下如果微调得好体验可以超过没微调的 13B 模型。选模型的时候先看它是不是针对对话或角色扮演优化过再看参数规模。量化等级也是Q4_K_M 和 Q5_K_M 的差距在日常聊天里几乎感觉不出来但显存占用差 0.7G这 0.7G 可能就决定了你能不能同时跑语音识别。所以不要盲目追求高量化够用就行。6.2 关于延迟的取舍延迟和质量是一对矛盾。降低延迟最有效的方法是缩小模型但质量会下降。我的经验是语音识别可以适当牺牲质量用 base 而不是 small因为识别错一两个字大模型通常能根据上下文猜出来。但大模型的质量不能牺牲太多因为回复质量直接决定聊天体验。语音合成也是音质太差会很出戏。所以资源分配上优先保大模型其次保语音合成最后保语音识别。语音识别实在不行就放 CPU慢一点但质量不降。6.3 关于长时间运行的稳定性这套系统跑几个小时之后可能会变慢或者崩溃。原因通常是显存碎片或者内存泄漏。我的做法是每隔几小时重启一次 ComfyUI或者写一个脚本监控显存超过阈值就自动重启。另外对话历史要定期清理。如果不清理上下文会越来越长显存占用越来越高最后 OOM。设置一个最大轮数超过就丢弃最早的对话。6.4 关于“上头”这件事最后说点感性的。这套东西搭好之后确实容易“上头”。因为实时语音对话的沉浸感比打字强太多了加上一个好看的形象和好听的声音很容易产生“在跟真人聊天”的错觉。但也要清醒它本质上是一个语言模型在根据概率生成回复它的“性格”是你用提示词塑造的它的“记忆”是你用数据库维护的。享受它带来的陪伴感没问题但不要把它当成真实的人际关系。保持这个认知才能玩得开心又不迷失。提示如果你发现自己每天花好几个小时跟它聊天影响了正常生活那就该调整一下了。工具是为人服务的不要反过来被工具控制。6.5 一个实用的调试技巧调试这套系统的时候建议把每个环节的输入输出都保存下来。音频保存成 wav文字保存成 txt加上时间戳。这样出问题的时候可以回放整个链路看是哪一步出了偏差。比如你觉得回复不对可以看录进去的音频对不对识别出来的文字对不对送给大模型的 prompt 对不对大模型生成的文字对不对合成出来的音频对不对这样一步步排查很快就能定位问题。这个习惯看起来麻烦但能省下大量瞎猜的时间。我一开始不保存出问题只能靠猜后来养成保存的习惯排查效率高了很多。6.6 关于硬件升级的建议如果你现在用 8G 显卡跑得比较勉强想升级硬件我的建议是优先升显存。12G 或 16G 显存能让体验上一个台阶可以用更大的模型、更长的上下文、更高的量化等级延迟也更低。显卡型号方面显存比核心性能更重要因为这套系统是显存瓶颈而不是算力瓶颈。内存也要跟上。32G 内存能让系统更稳定尤其是把部分模块放 CPU 的时候。16G 在同时跑多个模型时会比较紧张。SSD 是必须的。模型加载速度直接影响启动时间机械硬盘加载 7B 模型要几分钟SSD 只要十几秒。CPU 不用太强。这套系统主要吃显卡CPU 只要不太老就行。但如果要把语音识别和语音合成放 CPU那 CPU 也不能太弱建议 6 核以上。升级硬件之前先确认瓶颈在哪里。用监控工具看显存、内存、CPU、GPU 的占用情况哪个满了就升哪个。不要盲目升级可能你的瓶颈根本不在你以为的地方。