Files
magic-sonar/docs/research/ai-outbound-saas.md
T
2026-08-18 01:40:02 +08:00

372 lines
30 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AI 外呼 SaaS 调研与架构指南
> 调研访问日期:2026-08-17。金额均为人民币,除非另有说明。
> 本文整合 H-259(AI/实时语音)与 H-260(产品/权限/成本)的结果;没有重新选择或比较线路供应商。
## 1. 决策摘要
**结论(建议):有条件进入 100 通受控 PoC,不直接承诺规模化商用价格。** 推荐先用公有 API 跑通业务和计量,再在真实用量、延迟和并发数据证明有收益时私有化语音模型。
| 决策项 | 推荐 | 备选 / 触发条件 |
| --- | --- | --- |
| 实时 ASR | 公有:阿里云 `fun-asr-realtime`;私有:FunASR `paraformer-zh-streaming` + FSMN-VAD | 不直接采用原版 Whisper;它不是原生流式模型 |
| 音色克隆与 TTS | 公有:阿里云 CosyVoice API;私有:CosyVoice3-0.5B | CosyVoice2-0.5B:生产工具链更成熟;IndexTTS2:质量优先、实时能力需 PoC |
| LLM | 公有:阿里云百炼 `qwen-plus-2025-12-01`;私有:Qwen3-8B/vLLM | 低成本公有备选:`qwen-flash-2025-07-28`;私有容量需 PoC |
| 实时链路 | 级联 ASR → LLM → TTS,三级流式流水,双向媒体分离并支持打断 | 端到端语音模型暂不进入 MVP,避免牺牲审计与可控性 |
| 身份与权限 | Logto organization + organization RBAC;业务库强制租户键 | MVP 不做租户自定义角色 |
| 线路 | 只定义统一适配器与契约,PoC 接用户已有的一条线路 | 不调研、不比较、不推荐线路供应商 |
目标不是复刻一个大而全的呼叫中心,而是验证四个差异点:可插拔线路、低延迟 LLM 对话、经授权的定制音色、可审计的多租户成本。
**可决策成本锚点:** 在题设线路 `0.10 元/接通分钟`下,有一手牌价支撑的低/中/高三档“线路 + 公有 AI API”小计为 `0.1456 / 0.1734 / 0.2519 元/接通分钟`;全成本分别为该值再加 `F_base/M`。由于尚未选定控制面、媒体、数据库、存储和日志供应商,`F_base` 没有可核验报价,本文不再给出全成本点估计或毛利率结论;PoC 取得账单后才能验收。阿里云 `0.30 元/分钟`仅作为项目比较基准,不是其当前官方分钟报价:官方公开的是并发包月或按呼出次数计费,并说明线路、号码和通信费另计 [^aliyun-outbound-billing]。
## 2. 证据口径与关键未知
- **事实**:可由文末一手来源核验的产品、价格、许可证或法规信息。
- **估算**:由公开单价和显式用量假设计算,或由候选硬件锚点外推;不是承诺。
- **建议**:面向 MVP 的架构和产品取舍。
- **需 PoC**:没有同一业务、同一硬件、同一并发口径的一手实测,不写成事实。
以下结论应保守使用:
1. CosyVoice3 的生产稳态并发、电话窄带音质和本项目首包延迟没有官方同口径数据,**需 PoC**。
2. IndexTTS2 的公开质量表现可作为候选信号,但实时流式吞吐没有满足本项目口径的一手数据,**不作为 MVP 实时首选**。
3. 私有部署的 10/50/100 并发配置是容量起点,不是承诺;必须用目标音色、话术长度和电话 codec 压测。
4. 电话外呼对生成合成内容标识规定的具体适用边界需法律意见;在确认前按更严格的“AI 身份显式披露 + 单独授权 + 最小留存”执行。
5. 线路 `0.10 元/分钟`的计费起点、取整和接通定义来自题设,尚非供应商合同事实;成本对该口径最敏感。
交叉核验纠正了两处易混口径:其一,CosyVoice 的 `2 元/万计费字符`且一个汉字计两个字符,因此 125 个汉字是 `0.05 元`,不是 `0.0125 元`;其二,阿里云外呼的 `0.08 元/次`明确为无论是否接通的呼出次数计费,`0.30 元/分钟`只保留为题设比较基准 [^aliyun-voice-price] [^aliyun-outbound-billing]。
## 3. 浏览器音色采集与授权
### 3.1 最小采集流程
1. 在 HTTPS 安全上下文调用 `getUserMedia`,由用户显式授予麦克风权限 [^mdn-getusermedia]。
2. 用 `MediaRecorder.isTypeSupported()` 探测格式;不能假设所有浏览器都输出同一容器或采样率 [^mdn-mediarecorder]。
3. 建议录制 15–30 秒干净、单人、无背景音乐的人声;页面展示电平、试听和重录。该时长是工程建议,不是模型最低要求。
4. 服务端解码并规范化为单声道 PCM/WAV,保留原始样本哈希;根据模型要求重采样,不能依赖浏览器直接产生 16 kHz。
5. 录制前展示用途、客户/渠道、克隆范围、共享方、期限、撤回和删除方式;保存授权文本版本、时间、操作者和样本哈希。
6. 音色只有在 `approved` 且未过期/撤回时才能发布或发起新通话。
建议状态:`draft → pending → approved → suspended/revoked/expired`。撤回立即阻止新通话,并启动样本、派生音色和缓存的删除流程;历史审计只保留依法必须的最小证据。
### 3.2 模型对比
| 模型 | 公开事实 | 适合点 | 限制 / 未知 | 结论 |
| --- | --- | --- | --- | --- |
| CosyVoice3-0.5B | 官方仓库采用 Apache-2.0,支持跨语言/零样本音色克隆与流式推理 [^cosyvoice] | 中文、体积、流式和许可平衡 | 本项目电话场景吞吐、首包和音质需实测 | 私有实时首选 |
| CosyVoice2-0.5B | 同仓库、Apache-2.0;论文报告了流式能力 [^cosyvoice2-paper] | 部署资料和工具链相对成熟 | 质量和延迟仍需本项目复测 | 保守备选 |
| IndexTTS2 | 官方仓库采用 Apache-2.0,强调零样本与情感/时长控制 [^indextts] | 精品音色和录制型话术 | 稳态流式并发无本项目一手证据 | 质量备选,不进实时主链路 |
| Fish Speech | 官方仓库提供开放模型和服务化路径 [^fish-speech] | 多语言候选 | 许可证、具体权重和商用条款应按选定版本逐项复核 | PoC 候选 |
| GPT-SoVITS | 开源社区成熟,支持少样本/零样本 [^gpt-sovits] | 快速实验 | 生产服务化、参考文本依赖和实时吞吐需额外验证 | 不作为 MVP 默认 |
不要把“支持流式”直接等同于电话实时可用。验收必须同时测:目标音色相似度、8 kHz 窄带可懂度、首包、实时因子、并发下 P95、取消响应、显存和长时间稳定性。
## 4. 实时外呼链路与延迟
### 4.1 媒体路径
```mermaid
flowchart LR
Carrier[线路双向媒体] -->|上行 RTP / G.711 8 kHz| Gateway[媒体网关]
Gateway -->|解码、连续重采样 16 kHz| VAD[VAD / 端点检测]
VAD --> ASR[流式 ASR]
ASR --> Orchestrator[会话编排器]
Orchestrator -->|上下文 + 允许动作| LLM[流式 LLM]
LLM -->|完整短句| TTS[流式 TTS / 指定音色]
TTS -->|24 kHz PCM| Gateway
Gateway -->|低通、连续重采样、G.711| Carrier
VAD -. 用户开口 .-> Interrupt[取消播放、LLM 与 TTS]
Interrupt -.-> Gateway
Interrupt -.-> Orchestrator
```
电话基线按 G.711 8 kHz 窄带处理;宽带 codec 只能在适配器声明且线路协商成功时启用。TTS 的 24 kHz 音频下采样前要低通,重采样器状态必须跨媒体帧连续,避免每帧重置造成伪影。
原版 Whisper 面向固定窗口转写,官方实现没有实时流式接口;研究/社区包装可以增量转写,但会引入延迟和回滚策略 [^whisper] [^whisper-streaming]。MVP 推荐 FunASR 的流式 Paraformer;其官方项目同时提供 VAD、标点和流式模型 [^funasr]。最终选择仍由电话噪声、口音、专有词和字级时间戳 PoC 决定。
### 4.2 打断与流水
- 上下行媒体必须分离,或由线路/网关提供可靠回声消除,否则机器人播报会误触发 VAD。
- 用户开口后,媒体网关先停止发送待播音频;编排器同时取消当前 LLM/TTS 请求并丢弃带旧 generation id 的迟到分片。
- ASR partial 只用于实时显示和提前准备,业务动作只消费稳定 final 或经确认的结构化结果。
- LLM 按短句输出,TTS 收到完整短句即开始合成;三级并行,不等待整段回复。
### 4.3 PoC 延迟目标
| 指标 | MVP 目标(建议,不是现状) | 测量边界 |
| --- | ---: | --- |
| 用户开口 → 停止机器人播放 | P95 ≤ 200 ms | 首个有效上行语音帧到最后一个下行播放帧 |
| VAD 端点判定 | P95 ≤ 300 ms | 最后一个语音帧到回合确认 |
| 流式 ASR 首个稳定片段 | P95 ≤ 600 ms | 首个语音帧到稳定文本 |
| LLM 首 token | P95 ≤ 600 ms | final/可用上下文到首 token |
| TTS 首个可播放音频块 | P95 ≤ 250 ms | 首个完整短句到音频块 |
| 用户回合结束 → 首段回复音频 | P95 ≤ 1.0 s | 端点确认到媒体网关收到可播放块 |
这些阶段存在重叠,不能简单相加推断端到端结果。若 P95 不达标,先缩短回复、预热连接和使用已批准过渡语;仍失败时结束并安排重试。MVP 不以“模型仍在生成”为由播放虚构内容。
## 5. 公有 API 与私有部署
### 5.1 公有 API:MVP 推荐
| 环节 | 推荐 | 官方价格 / 事实(访问 2026-08-17) | 折算假设 |
| --- | --- | --- | --- |
| ASR | 阿里云 `fun-asr-realtime` | `0.00033 元/秒` [^aliyun-funasr-price] | 全通话 60 秒:`60×0.00033=0.0198 元/分钟` |
| TTS/克隆 | 阿里云 CosyVoice | `2 元/万计费字符`;一个汉字计两个字符 [^aliyun-voice-price] | 机器人说话占 50%,250 汉字/播报分钟:`125 汉字×2 字符×2/10000=0.05 元/通话分钟` |
| LLM(推荐) | 阿里云百炼 `qwen-plus-2025-12-01`,非思考模式 | 中国内地、请求输入 ≤128K 时:输入 `0.8 元/百万 token`、非思考输出 `2 元/百万 token` [^aliyun-llm-price] | 中档假设输入/输出 `3000/600 token`:`(3000×0.8+600×2)/1000000=0.0036 元` |
| LLM(低成本备选) | 阿里云百炼 `qwen-flash-2025-07-28` | 中国内地、请求输入 ≤128K 时:输入 `0.15 元/百万 token`、输出 `1.5 元/百万 token` [^aliyun-llm-price] | 低档假设输入/输出 `1000/300 token`:`(1000×0.15+300×1.5)/1000000=0.0006 元` |
公有组合减少前期运维,适合获取真实的每分钟音频秒数、字符数、token、延迟和失败率。API 密钥只存密钥管理系统;供应商请求必须携带租户和通话的内部追踪 id,但不得发送无关个人数据。
### 5.2 私有部署:达到触发条件后
推荐栈:FunASR 流式 ASR/VAD + CosyVoice3(或 CosyVoice2)+ **Qwen3-8B/vLLM**。Qwen3-8B 官方模型卡列出 Apache-2.0 许可证,并给出 vLLM 部署入口 [^qwen3-8b];它是明确的私有 LLM PoC 推荐,不代表未经压测的生产容量。上线应把选定 commit、权重、许可证文本和下载来源固化到 SBOM/模型清单中。
| 规模 | 容量起点(估算) | 内存 / 存储起点 | 必须验证 |
| --- | --- | --- | --- |
| PoC(1–2 路) | 1×24 GB 消费级/数据中心 GPU;ASR 可先走 CPU | 32 GB / 100 GB SSD | 是否能同卡容纳 TTS+LLM、首包和取消 |
| 单路实时 | 同 PoC,不为单路另造架构 | 32 GB / 100 GB | 30 分钟稳定性、电话窄带音质 |
| 10 并发 | 1×24 GB GPU 起测;8 核 CPU 跑媒体/ASR | 64 GB / 200 GB | P95、显存峰值、批处理公平性 |
| 50 并发 | 2×24 GB GPU 起测,TTS 与 LLM 可拆服务 | 128 GB / 500 GB | 节点故障、排队上限、30% 利用率成本 |
| 100 并发 | 4×24 GB 或 2×80 GB GPU 起测 | 256 GB / 1 TB | 水平扩缩、冷启动、持续压测和降级 |
表中不是采购承诺。每一级先压测再扩容;禁止由 10 路结果线性外推 100 路。私有化触发条件:连续两个月的真实 API 节省额覆盖新增计算与运维,且压测达到本章延迟/SLO,并有故障值守能力。否则继续使用公有 API 更便宜。
## 6. SaaS、Logto 与租户隔离
### 6.1 权限边界
Logto 的 organization 面向多租户 SaaS,organization template 可统一组织角色/权限,organization token 可表达组织上下文;M2M 应用可获得 organization 级访问 [^logto-org] [^logto-org-template] [^logto-org-api]。
| 角色 | 最小职责 |
| --- | --- |
| `owner` | 成员、席位、订阅、集成凭据、音色审批 |
| `admin` | 业务配置与审批,不管理订阅 |
| `operator` | 话术、任务、监控,不审批自己的音色 |
| `auditor` | 只读记录、费用与审计;导出需独立权限 |
建议权限:`members:manage`、`credentials:manage`、`voices:manage`、`voices:approve`、`scenarios:manage`、`campaigns:manage`、`campaigns:execute`、`calls:monitor`、`records:read`、`records:export`、`audit:read`。MVP 不做租户自定义角色。
Logto 只负责身份、组织成员关系、角色/权限和令牌。套餐/席位、联系人合法来源、声音授权、话术版本、任务、通话、线路映射、录音/转写、用量/账单、保留/删除和业务审计都属于业务数据库。Logto 的 audit logs 聚焦认证活动,不能替代业务审计 [^logto-audit]。
### 6.2 隔离规则
- API 验证 token 的签名、`iss`、`aud`、`exp`、`organization_id` 和 scope;禁止客户端用请求体覆盖 token 的组织。
- 所有租户业务表带不可为空的 `organization_id`;查询、唯一约束、对象存储前缀、缓存 key、消息 topic 和用量聚合都包含它。
- 后台任务携带已签名/可信的组织上下文,不接受用户可控的裸 tenant id;供应商回调先由线路适配器映射到内部 call,再恢复租户。
- 每个外部集成使用独立的 organization M2M 凭据、最小 scope、短时 token 和独立吊销。线路 webhook 另做签名、时间窗和重放校验。
- 上线门禁包含两个租户的全量越权负测;跨租户读写、导出、对象 URL、缓存命中和任务消费均必须拒绝。
## 7. 整体架构
```mermaid
flowchart TB
subgraph Control[控制面]
Web[Web 控制台]
API[租户 API]
Logto[Logto]
DB[(业务数据库)]
Obj[(对象存储)]
Scheduler[任务调度]
Billing[用量 / 对账]
Audit[业务审计]
Web --> Logto
Web --> API
API --> Logto
API --> DB
API --> Obj
API --> Scheduler
API --> Audit
Billing --> DB
end
subgraph Data[实时数据面]
Adapter[线路适配器]
Media[媒体网关]
Session[会话编排]
AI[ASR / LLM / TTS]
Adapter <--> Media
Media <--> Session
Session <--> AI
end
Scheduler -->|幂等发起| Adapter
Adapter -->|标准事件| DB
Session -->|转写、结果、用量| DB
Session -->|录音索引| Obj
Adapter --> Billing
Session --> Audit
```
### 7.1 组件边界
| 组件 | 负责 | 不负责 |
| --- | --- | --- |
| 租户 API | 鉴权、配置、发布门禁、任务命令 | 实时音频处理 |
| 任务调度 | 时段、并发、频控、黑名单、幂等发起 | 供应商私有状态解释 |
| 线路适配器 | 配置校验、呼叫、事件、媒体能力、验签、用量 | 对话逻辑、租户权限 |
| 媒体网关 | RTP/codec/重采样、缓冲、播放取消 | LLM 决策 |
| 会话编排 | 回合状态、generation id、打断、工具白名单、降级 | 身份源、长期账单 |
| AI 服务 | ASR/LLM/TTS 推理和模型级计量 | 直接发起线路动作 |
| 用量/对账 | 统一量纲、供应商账单匹配、成本聚合 | 修改历史原始事件 |
| 业务审计 | 谁在何时对何租户做了什么、前后版本和关联 id | 保存密钥明文 |
控制面短暂不可用不应切断已建立的媒体会话;数据面只读取已发布的不可变话术/音色版本。实时进程不得用用户请求临时修改正在执行的版本。
### 7.2 关键数据流
1. 运营者在控制面发布已审批音色和话术版本;API 写业务库并留下审计。
2. 调度器执行黑名单、时段、频控和额度检查,用幂等键调用线路适配器。
3. 适配器把供应商 call id 映射到内部 call id/organization,标准化乱序、重复回调。
4. 接通后媒体流直接进入数据面,不绕 Web/API;会话编排固定本通使用的发布版本。
5. 每轮 ASR/LLM/TTS 记录供应商、模型、用量、延迟、结果和 generation id;不把隐式推理内容作为产品数据保存。
6. 通话结束形成唯一终态;录音进入租户隔离对象前缀,用量服务与线路账单对账。
## 8. 线路适配器契约(不做供应商选型)
最小方法:
| 方法 | 契约 |
| --- | --- |
| `ValidateConfig` | 不发起呼叫地验证必填配置和权限 |
| `GetCapabilities` | 返回地区/号码、并发、codec/采样率、双向媒体、DTMF、录音、转人工、计费口径 |
| `Originate` | 接收幂等键、主被叫、媒体参数和最小 metadata;重复调用不产生第二通 |
| `Hangup` | 幂等终止;不存在/已结束也返回稳定结果 |
| `GetCall` | 查询供应商真实状态,用于恢复和对账 |
| `GetUsage` | 返回原始计费量、单位、取整和区间 |
| `VerifyWebhook` | 校验签名、时间窗和重放,解析后才允许进入标准事件流 |
统一事件:`requested`、`ringing`、`answered`、`media_started`、`ended`、`failed`;携带 `event_id`、供应商序号/时间、内部与供应商 call id、标准原因和加密保存的原始原因。标准失败至少区分 `busy`、`no_answer`、`rejected`、`invalid_number`、`rate_limited`、`provider_error`,并由适配器声明是否安全重试。
适配器验收:同一套 mock 契约测试覆盖幂等、验签、防重放、重复/乱序事件、查询恢复、超时、限流、媒体中断和账单取整。供应商状态不得泄漏到业务状态机;新增线路只有通过契约测试才能上线。
## 9. 失败、降级与审计
| 故障 | 最小降级 | 禁止行为 |
| --- | --- | --- |
| ASR 超时/低置信 | 重试一次或播放批准的澄清语;持续失败则结束并标记重试 | 用猜测文本驱动业务动作 |
| LLM 超时/越界 | 使用已发布的确定性话术;没有安全分支则结束 | 无限重试、编造答案 |
| TTS/克隆音色失败 | 切换到已授权的内置默认音色;仍失败则结束 | 绕过授权使用其他克隆音色 |
| 打断取消失败 | 媒体网关本地立即停止发送,generation id 丢弃迟到音频 | 继续播放旧回复 |
| 线路事件重复/乱序 | 按 event id 去重,以允许的单调状态转换归并,必要时 `GetCall` 恢复 | 直接覆盖终态或重复计费 |
| 数据面节点失败 | 有明确恢复能力时重建会话;否则安全挂断并记录原因 | 跨租户迁移上下文 |
| 控制面/审计不可写 | 停止新任务;已有通话用本地有界缓冲完成或安全结束 | 无审计继续批量发起 |
审计至少覆盖:成员/权限、凭据、联系人导入、音色授权/审批/撤回、话术发布、任务启动/暂停、通话终态、导出、删除、供应商回调验证和每次 AI/线路用量。记录操作者、organization、对象、动作、结果、时间、关联 id 和发布版本;敏感内容与密钥不进审计正文。
## 10. 可复算成本模型
### 10.1 公式与统一假设
每接通分钟成本:
`C = L + A_asr + A_llm + A_tts + V + F / M`
`M = K × 60 × H × D × u`
- `L`:线路;题设固定 `0.10 元/接通分钟`。
- `A_*`:按真实音频秒、token、计费字符及供应商取整折算的 AI 变量成本。
- `V`:实时媒体、日志和可观测性变量成本。
- `F`:每月固定计算、数据库、缓存、对象存储、监控和基础运维成本。
- `K`:购买/部署并发;`H`:每日可呼小时;`D`:每月工作日;`u`:并发有效利用率。
统一规划假设:中文语速 `250 汉字/播报分钟`;ASR 按全通话时长;LLM 上下文缓存命中率按 `0%`,不使用 Batch、免费额度或缓存折扣;TTS 不复用预生成音频。API 公式按供应商返回的实际秒、token、计费字符线性计算,分项保留 6 位、展示到 4 位;账单聚合取整规则仍需用 PoC 发票核对。美元项目采用规划汇率 `1 USD = 7.20 CNY`,最终以结算汇率为准。
如果线路按尝试分钟收费,改为 `L_effective = 尝试分钟成本 / 接通率`;如果按次收费,改为 `每次价格 / (接通率 × 接通后平均分钟)`。不得把振铃分钟、接通分钟和呼出次数混为一个口径。
### 10.2 低 / 中 / 高三档(元/接通分钟)
三档均以 1 接通分钟为分母。低档使用 Qwen Flash、机器人播报 25%;中档使用 Qwen Plus 非思考、播报 50%;高档使用 Qwen Plus 思考、播报 75%,并用阿里云智能语音交互实时 ASR 标准价作为保守锚点。LLM 输入/输出分别假设为 `1000/300`、`3000/600`、`8000/1500 token`;这些用量不是模型事实,必须由 PoC 逐通计量替换。
| 组成 | 低成本档 | 中档 | 高成本档 |
| --- | --- | --- | --- |
| 线路 `L`(题设) | `0.10` | `0.10` | `0.10` |
| ASR | `fun-asr-realtime`:`60 秒×0.00033=0.0198` [^aliyun-funasr-price] | 同低档:`60×0.00033=0.0198` | 阿里云实时语音识别标准价:`1 分钟×3.50/60=0.058333` [^aliyun-voice-price] |
| LLM | `qwen-flash-2025-07-28`:`(1000×0.15+300×1.5)/1e6=0.000600` [^aliyun-llm-price] | `qwen-plus-2025-12-01` 非思考:`(3000×0.8+600×2)/1e6=0.003600` [^aliyun-llm-price] | 同一 Qwen Plus 思考输出价 `8 元/百万 token`:`(8000×0.8+1500×8)/1e6=0.018400` [^aliyun-llm-price] |
| TTS / 音色 | CosyVoice;`ceil(250×25%)=63 汉字`:`63×2×2/10000=0.025200` [^aliyun-voice-price] | `ceil(250×50%)=125`:`125×2×2/10000=0.050000` | `ceil(250×75%)=188`:`188×2×2/10000=0.075200` |
| 实时媒体变量 `V` | 自建媒体网关,无独立计量供应商:API 小计中 `V=0`;带宽、日志、录音进入 `F_base` | 同低档 | 同低档 |
| **有牌价支撑的小计 `S=L+ASR+LLM+TTS+V`** | **`0.10+0.0198+0.0006+0.0252+0=0.1456`** | **`0.10+0.0198+0.0036+0.05+0=0.1734`** | **`0.10+0.058333+0.0184+0.0752+0=0.251933≈0.2519`** |
| 基础设施摊销 | `F_base/(50×60×12×22×0.60)=F_base/475200` | `F_base/(30×60×10×22×0.50)=F_base/198000` | `F_base/(20×60×8×22×0.20)=F_base/42240` |
| **全成本 `C`** | **`0.1456+F_base/475200`** | **`0.1734+F_base/198000`** | **`0.251933+F_base/42240`** |
`F_base` 应逐月汇总控制面计算、媒体网关、数据库/缓存、对象存储、带宽、日志监控和基础运维。当前没有选定这些资源的地域、规格、供应商和保留量,因此没有一手报价;上述全成本公式明确降级为**待报价、待 PoC 的非验收估算**,不能把 `V=0`理解为媒体免费,也不能再用旧的 `0.15/0.235/0.41`作为交付结论。
私有模型只提供可复算的 PoC 计算锚点,不并入公有 API 三档:Qwen3-8B + FunASR + CosyVoice3 的模型许可证费用为 `0`,RunPod Secure Cloud RTX 4090 公布价为 `$0.74/GPU·小时` [^runpod-price],按 `7.20 元/USD`、24×7 运行,`F_gpu=0.74×7.20×24×30=3836.16 元/月`,每分钟 GPU 摊销为 `3836.16/M_gpu`。存储、流量、税费和控制面不在该价格内;更关键的是三模型同卡的实时并发 `M_gpu` 未经实测,所以私有全成本仍为**待 PoC**,RunPod 也只是价格锚点而非合规部署推荐。
### 10.3 敏感性与商业门槛
- 若 `0.10`按尝试分钟收费,接通率为 20% / 40% / 60% 时,仅线路即为 `0.50 / 0.25 / 0.167 元/接通分钟`。
- 月接通分钟减半且固定成本不变,固定摊销翻倍。
- 任一变量每增加 `0.01`,总成本等额增加 `0.01`。
- 售价 `0.30`要达到 40%贡献毛利,总成本必须不高于 `0.18`。三档留给 `F_base/M` 的上限分别为 `0.0344 / 0.0066 / -0.071933`;高档即使未计基础设施也无法达到该毛利目标。
- 阿里云公开的 `0.08 元/呼出次`若在接通率 40%、接通后平均 2 分钟下,平台费折算为 `0.08/(0.4×2)=0.10 元/接通分钟`,且仍不含线路 [^aliyun-outbound-billing]。
PoC 必测:线路计费起点/取整、接通率、平均振铃/通话时长、ASR/TTS 计费量、每分钟 LLM 输入/输出 token、缓存实际命中率、并发利用率、失败重试重复计费、录音/日志保留和账单差异。
## 11. MVP 与 Go / No-Go
### 11.1 P0
- organization、固定角色/席位、强制租户隔离。
- 浏览器录音、授权、审批、撤回和合法内置音色。
- 提示词 + 结构化话术 + 少量知识、模拟通话、不可变版本发布;不做通用低代码画布。
- 一个真实线路适配器 + mock 契约;批量任务、并发、时段、黑名单、暂停/终止。
- 级联实时会话、打断、明确降级;记录、逐通用量/成本和审计。
P1 才考虑复杂工作流画布、人工转接、AB 实验、动态多线路路由、自动质检和租户自定义角色。非目标:线路供应商调研、完整 CRM/WFM、预测式拨号、通用训练平台、未经授权的声音克隆、跨境或高风险行业直接上线。
### 11.2 100 通受控验证
用两个测试租户、三种角色、mock + 用户已有线路,只呼叫已同意的内部号码;覆盖安静/噪声、口音、连续打断、沉默、忙线、重复/乱序回调、供应商和 AI 超时。
进入 MVP 的门槛:
- 跨租户越权 0 次;未授权/过期/撤回音色调用 0 次。
- 同一幂等键不产生第二通;终态唯一,账单与内部用量差异 ≤ 5%。
- 打断和首音频达到第 4.3 节 P95 目标。
- 关键字段正确率达到业务方在测试前书面约定的阈值,不在结果出来后降低门槛。
- PoC 用真实 `F_base` 与账单算出的全成本 ≤ `0.22 元/接通分钟`,且按 `0.30`售价贡献毛利率仍 ≥ 25%。本文不把公式中的未报价项当作已经达标。
- 任一授权/标识/租户隔离门禁失败直接 No-Go;性能或成本失败则限制场景、调整价格或继续 PoC,不扩量。
## 12. 风险清单
| 优先级 | 风险 | 控制与残余未知 |
| --- | --- | --- |
| P0 | 线路计费口径/低接通率使成本失真 | 逐通对账;合同计费规则仍需用户确认 |
| P0 | 未授权声音、撤回不彻底、生成内容未标识 | 单独授权、审批门禁、AI 身份披露、删除链路、审计;具体法律适用需律师确认 |
| P0 | 跨租户数据泄漏 | 全链路 organization key、负向测试、短时 M2M 凭据 |
| P0 | 幻觉越过批准话术 | 结构化允许动作、工具白名单、确定性降级;高风险行业不进 MVP |
| P1 | 延迟、误识别和误打断导致投诉 | 电话实测、上下行分离、P95 门禁和安全结束 |
| P1 | 私有容量外推错误、低利用率负毛利 | 逐级压测,达触发条件才私有化,不预购 100 路容量 |
| P1 | 供应商/API 中断 | 有界超时、内置授权音色、确定性话术和停止新任务 |
## 13. 一手来源
以下来源访问日期均为 2026-08-17;仓库、价格和法规在实施/采购前需再次锁定版本。
[^mdn-getusermedia]: MDN, [MediaDevices.getUserMedia](https://developer.mozilla.org/docs/Web/API/MediaDevices/getUserMedia).
[^mdn-mediarecorder]: MDN, [MediaRecorder](https://developer.mozilla.org/docs/Web/API/MediaRecorder) 与 [isTypeSupported](https://developer.mozilla.org/docs/Web/API/MediaRecorder/isTypeSupported_static).
[^cosyvoice]: FunAudioLLM, [CosyVoice 官方仓库与许可证](https://github.com/FunAudioLLM/CosyVoice).
[^cosyvoice2-paper]: FunAudioLLM, [CosyVoice 2 论文](https://arxiv.org/abs/2412.10117).
[^indextts]: IndexTeam, [IndexTTS 官方仓库](https://github.com/index-tts/index-tts).
[^fish-speech]: Fish Audio, [Fish Speech 官方仓库](https://github.com/fishaudio/fish-speech).
[^gpt-sovits]: RVC-Boss, [GPT-SoVITS 官方仓库](https://github.com/RVC-Boss/GPT-SoVITS).
[^whisper]: OpenAI, [Whisper 官方仓库](https://github.com/openai/whisper).
[^whisper-streaming]: Macháček et al., [Whisper-Streaming](https://arxiv.org/abs/2307.14743).
[^funasr]: ModelScope, [FunASR 官方仓库](https://github.com/modelscope/FunASR).
[^aliyun-funasr-price]: 阿里云模型服务, [Fun-ASR 实时语音识别](https://help.aliyun.com/zh/model-studio/fun-asr-realtime).
[^aliyun-voice-price]: 阿里云智能语音交互, [产品计费](https://help.aliyun.com/zh/isi/product-overview/billing-10).
[^aliyun-llm-price]: 阿里云百炼, [模型列表与价格](https://help.aliyun.com/zh/model-studio/model-pricing).
[^aliyun-outbound-billing]: 阿里云智能外呼机器人, [产品计费](https://help.aliyun.com/zh/outboundbot/product-overview/billing).
[^qwen3-8b]: Qwen, [Qwen3-8B 官方模型卡](https://huggingface.co/Qwen/Qwen3-8B).
[^runpod-price]: RunPod, [GPU Cloud Pricing](https://www.runpod.io/pricing).
[^logto-org]: Logto, [Organizations](https://docs.logto.io/organizations).
[^logto-org-template]: Logto, [Organization template](https://docs.logto.io/authorization/organization-template).
[^logto-org-api]: Logto, [Organization-level API resources](https://docs.logto.io/authorization/organization-level-api-resources).
[^logto-audit]: Logto, [Audit logs](https://docs.logto.io/developers/audit-logs).
[^pipl]: 全国人大, [中华人民共和国个人信息保护法](http://www.npc.gov.cn/npc/c2/c30834/202108/t20210820_313088.html).
[^deep-synthesis]: 国家互联网信息办公室, [互联网信息服务深度合成管理规定](https://www.cac.gov.cn/2022-12/11/c_1672221949354811.htm).
[^ai-label]: 国家互联网信息办公室, [人工智能生成合成内容标识办法](https://www.cac.gov.cn/2025-03/14/c_1743654684782215.htm).
声音可识别自然人时属于人格权益保护范围;个人信息保护法将生物识别信息列为敏感个人信息,处理时要求特定目的、充分必要和严格保护,并对单独同意作出规定 [^pipl]。深度合成规定对人声等生物识别信息编辑及可能导致混淆的合成人声作出告知、同意和标识要求 [^deep-synthesis];生成合成内容标识办法覆盖音频显式/隐式标识 [^ai-label]。产品必须把这些要求作为发布门禁,而不是文案提示。