简体中文 · English
Tincall 是最低支持 iOS 26 的原生 AI 语音通话 App。支持手机直连模型、自有后端,以及 MCP(模型上下文协议,让外部 AI 调用 Tincall 的通话工具);收音、语音识别、语音合成、播放及本地记录由手机处理。
本仓库公开源码供个人使用、修改与按许可分享。使用范围见 许可,第三方组件保留其独立许可,见 第三方声明。源码公开不代表采用无限制的开源许可。
“连接端”是部署在自己的云端、电脑或服务器上的服务,负责连接手机和外部 AI、转发消息并管理通话状态。点击下表中的方式名称可查看对应配置步骤。
| 方式 | AI 与上下文在哪里 | 需要准备什么 | 回复方式 |
|---|---|---|---|
| 独立模式 | 手机直连所选模型 API | 模型、STT、TTS 的配置;日常通话不需要云端 | 模型增量流式回复,手机分段合成播放 |
| 普通 MCP | 外部 AI 平台 | Tincall 连接端、对应联系人的 MCP 配置、正在运行并能调用工具的 AI | AI 用 tincall_reply({call, text}) 提交完整回复,call 为工具返回的 8 字符通话标记,默认等待下一句话 |
| MCP+唤醒桥 | 外部 AI 平台 | 连接端、唤醒订阅程序、平台任务启动命令及专用 MCP | 收到事件启动一轮,提交完整回复后结束;新输入再唤醒 |
| 后端模式 | 接入方自己的后端 | 完整实现手机通话协议,或复用连接端只接生成和取消 | 支持流式增量和完整回复,由后端选择 |
联系人里仍是独立、MCP、后端三种模式;唤醒桥是 MCP 的一种接法。后端的模型、人物、记忆、工具及业务流程由接入方决定,不强制每通电话新建模型会话。
独立模式支持 OpenAI 兼容、Anthropic、Gemini 协议;STT 包括 Apple、讯飞、百炼和 Whisper 兼容接口,TTS 包括 ElevenLabs、MiniMax、Fish Audio。具体模型、音色、地域、额度和费用以所选服务为准。
默认 Tincall scheme 是个人自行构建版,完整核心通话能力不要求领取试用或购买。Tincall-AppStore scheme 使用 StoreDebug/StoreRelease 配置,通过 TINCALL_APP_STORE 启用官方商店版的试用与买断流程。
模型、识别、合成及自行部署服务的费用取决于各自供应商;购买 Tincall 不包含这些第三方服务。自行构建也不会自动获得发行者推送服务的授权,后台来电需按自签与推送文档配置。
- 安装手机 App:从 最新发布页 下载
*-selfsign-unsigned.ipa,按 自签指南 使用自己的签名凭据重签安装,无需重新编译。需要 iOS 26 或以上的 iPhone,签名工具须正确配置 App/扩展标识及 App Group。也可使用 Mac 和 Xcode 从源码构建。 - 配置识别和声音:在 App 配置 STT/TTS,选择供应商、型号和音色。TTS 的“语音表达提示词”有按型号区分的默认值,也可自行编辑。ElevenLabs 连接可展开“高级参数”,调整稳定性和相似度。首次使用每条外部服务连接前,阅读其接收方与数据说明,并明确允许数据发送;更换地址或供应商后需重新确认。
- 配置联系人:独立模式选模型并填写人物设定;MCP 按 接入指引 登记联系人并复制平台配置;后端按 接口说明 准备服务。
- 验证一通电话:先确认服务和模型可达,再检查实际收音、回复、播放、打断和挂断。
手机手动挂断立即停止生成和播放;普通打断保留通话。AI 通过 MCP 挂断时,手机等待已收到回复播放排空,失败也会退出收尾。已收到内容保留并标注中断原因。
旧版升级或恢复配置后,若所需服务尚未授权,请在对应连接设置确认后再通话。普通 App 更新不会清空已有授权,但配置备份不包含授权记录。
仓库提供可运行的通用连接端。它处理手机协议、MCP、通话状态、消息转发、可选备份及来电路由;模型生成需要连接到真实的外部 AI。
| 组件 | 用途 | 使用条件与边界 |
|---|---|---|
| Node/Supabase 连接端 | 复用通话与存储协议 | Node 默认 SQLite;Supabase 使用 Edge Functions/数据库。两者共用生产逻辑,支持后端流式及完整回复 |
| MCP 唤醒适配器 | 订阅事件、读取输入、启动外部 AI 命令 | 配置自己的平台启动命令、会话续接和专用 MCP;AI 经 MCP 回复,命令 stdout 不作为回复 |
| Codex HTTP 适配器 | 将生成/取消请求转给本机 Codex CLI | 需已安装并认证的 Codex 和私密配置;当前完整回复、文字输入,不支持图片或 AI 自主拨挂工具 |
| 推送发送端 | 设备注册、VoIP 来电和可选实时活动推送 | Node 24 或 Cloudflare Worker;需要与 App 签名匹配的 APNs 权限和凭据 |
连接端安装器不会自动启动两个适配器或推送发送端。普通 MCP 配置也不会自行唤醒闲置平台。只有 Codex 适配器当前没有增量转发,Tincall 后端协议本身支持流式。
后端模式可以完全自建服务,也可以只向连接端提供 generation_url 与 cancel_url。TTS 提示词通过 expression_prompt 交付;主动拨挂、开场、结束通知处理及摘要写回由接入方按需要实现。详细责任边界和格式见 后端接口。
安装 Node.js LTS(建议 Node 24,最低 Node 22.5 且内置 SQLite 可用),在源码根目录运行:
# macOS / Linux
sh connector/install-local.sh# Windows,无需 WSL
powershell -NoProfile -ExecutionPolicy Bypass -File connector\install-local.ps1也支持 Docker。默认只监听本机回环地址;手机需要可达的 HTTPS 地址,可用反向代理或按 连接端安装说明 配置隧道。将 HTTPS 基础地址与手机令牌填入 App“连接已有服务”。电脑须持续运行;临时隧道重启后可能换地址。
App 中打开“设置 → Tincall 云端 → 部署或更新服务”,用自己的项目和限定项目的管理令牌部署。成功后保存日常连接;新增 MCP 联系人无需重新部署。电脑 CLI 部署也可用,见 部署指南。
应用更新不会自动更新已有云端。设置中的“Tincall 云端”会检查服务版本;提示需要更新时,按原方式升级服务,保留原令牌和数据。Supabase 所需数据库迁移已纳入 App 的“部署或更新服务”和 CLI 部署,无需手动执行 SQL,见 部署指南。录音与图片所需的私有存储桶和权限随基础迁移创建;录音保存及备份仍需分别开启。
- 联系人“通话偏好”中的“时间感知”可让 TA 了解消息之间的时间间隔,默认关闭,时间来自手机。
- 通话文字和摘要可在本机保存;录音需用户分别启用。云同步、录音备份和后台来电分别配置,互不自动开启。
- 「本机数据与备份」可分别清理录音、消息图片或全部通话记录,每项均需确认。清理只作用于本机,联系人、连接配置、云端副本和已导出文件保留;清理图片后与云端不同的内容需在同步时手动选择。
- 已保存的服务、识别和语音合成连接可在「编辑连接」底部单独删除。一次确认后删除本机配置、访问凭据及关联选择,保留联系人、通话记录和云端数据;后台尝试解除该服务的设备绑定。远端不可达不阻断本机删除,仅提示可在服务端另行清理绑定,其他服务保持启用。通话或同步进行中需稍后操作。
- 独立模式将请求发到用户配置的模型/语音服务;MCP/后端模式将通话内容发给对应平台。外部服务收到的数据按其实际接法处理。
- 凭据保存在 Keychain 或部署者的私密配置,不随普通配置备份分享。手机令牌、MCP 联系人令牌、唤醒凭据、模型凭据和推送服务凭据用途不同。
- 前台来电通过已配置服务的订阅接收。后台及锁屏来电还需匹配的推送签名、设备绑定和可用的 APNs 发送端;配置步骤见推送指南。
- 快捷指令可向当前通话发文字/截图,见 快捷指令。
英文安装部署指南覆盖自签、首次通话、连接端、推送与升级;维护者的版本和 IPA 打包流程见发行说明。协议细节另见下列文档。
| 路径 | 内容 |
|---|---|
ios/Tincall/App/ |
App 入口、运行时和系统意图 |
ios/Tincall/Core/ |
模型协议、通话协调、外部接口、上下文/摘要、凭据、部署 |
ios/Tincall/Voice/ |
收音、VAD、STT、TTS、切段、播放、音频路由 |
ios/Tincall/Features/、Storage/ |
界面、配置/记录、备份和云同步 |
ios/TincallCallWidget/、ios/TincallCallIntents/ |
实时活动与系统通话意图扩展 |
ios/LocalPackages/ |
随库第三方组件 |
connector/ |
Node 入口、SQLite、适配器、安装脚本和可选 Node 推送 |
supabase/functions/、supabase/migrations/ |
共享连接逻辑、Edge 入口和数据库迁移 |
cloudflare/ |
可选推送 Worker |
ios/Tests/、connector/tests/、cloudflare/tests/ |
模块与接口检查 |
使用中遇到 Bug 或有建议,欢迎通过 App 内「设置 → 帮助与指引 → 提交反馈」联系我。反馈时请附上问题现象、复现步骤及 App/iOS 版本,注意隐去截图中的密钥和私人内容。
允许个人自用、修改及按原许可分享源码。分享源码时须保留 Chuli(GitHub: chuli1122)的署名、原项目链接、版权和许可声明;修改版须标明修改事实及非官方身份。商业使用、分发安装包、为他人部署或提供原版/修改版服务,无论收费与否,均须按 许可 取得授权。第三方组件按其独立许可处理。
作者在官方发布页提供的个人自签 IPA,可按许可下载、重签和更新,供本人使用;此项不授权使用者向他人再分发安装包或代签代装。
源码文件头中的 SPDX 标识 LicenseRef-Tincall-Personal-Use 指本仓库的 LICENSE。
感谢 すみか(@wxynora) 分享 AI 语音通话优化教程,为 Tincall 的流式朗读与切段优化提供参考。
感谢 Silero Team、Microsoft ONNX Runtime 团队、The LAME Project 及各项目贡献者,为本机人声检测、模型运行和音频编码提供支持。组件用途、来源及许可证原文见 第三方声明,App 内“关于 Tincall”也提供相关许可和致谢。




