一个 iOS 上的 Telegram 语音对讲 PoC。
当前实现:
- Telegram 接入:
TDLibKit - 语音转文字(STT):Cloudflare Workers AI Whisper
- 播报(TTS):Microsoft Edge Neural TTS
- UI:SwiftUI
- macOS
- Xcode 15+
- iOS Simulator 或真机
这个项目有两类配置:
- 编译前必须有的 Telegram 配置
- 运行时在 App 内填写的 Cloudflare 配置
用途:
- 用来初始化 TDLib
- 没有这两个值时,项目现在可以编译,但 Telegram 登录页会显示
Telegram Not Configured
需要的字段:
TELEGRAM_API_IDTELEGRAM_API_HASH
获取方式:
- 打开
my.telegram.org - 登录你的 Telegram 账号
- 在 API development tools 里创建应用
- 拿到
api_id和api_hash
配置位置:
默认占位值:
<key>TELEGRAM_API_HASH</key>
<string></string>
<key>TELEGRAM_API_ID</key>
<string>0</string>你需要把它改成自己的值,例如:
<key>TELEGRAM_API_HASH</key>
<string>your_api_hash</string>
<key>TELEGRAM_API_ID</key>
<string>12345678</string>相关代码:
用途:
- 按住说话后,把录音发给 Cloudflare Whisper 做 STT
需要的字段:
Account IDAPI Token
获取方式:
- 打开
dash.cloudflare.com - 进入
AI/Workers AI - 拿到
Account ID - 创建一个可调用 Workers AI 的
API Token
配置方式:
- 运行 App
- 进入
Settings - 在
Cloudflare Workers AI (STT)区域填写:Account IDAPI Token
保存位置:
- 本地
UserDefaults - 不在仓库里
- 不需要改代码
相关代码:
- clone 仓库
- 用 Xcode 打开 EchoPOC.xcodeproj
- 在 EchoPOC/Info.plist 里填入
TELEGRAM_API_ID和TELEGRAM_API_HASH - 选择模拟器或真机运行
- 首次启动时允许麦克风权限
- 进入
Settings,填入 CloudflareAccount ID和API Token - 返回 Telegram 登录页,输入手机号、验证码、二次验证密码
-
没填 Telegram 配置:
- 可以编译
- Telegram 不会初始化
- 登录页会显示缺少配置提示
-
没填 Cloudflare 配置:
- App 可以进入主界面
- 但对讲语音转文字不可用
Talk页面会显示API Not Configured
不应该提交到 Git 的内容:
- 你自己的
TELEGRAM_API_ID - 你自己的
TELEGRAM_API_HASH - 你自己的 Cloudflare
API Token
可以提交的内容:
TelegramConfig.swift代码本身Info.plist里的空占位键CloudflareConfig的UserDefaultskey 名
因为以前项目把 EchoPOC/TelegramConfig.swift 当作本地私有文件处理,同时它又被 Xcode target 引用了。别人 clone 后如果没有这个文件,Xcode 会直接报构建输入文件不存在。
现在这个问题已经改掉了:
TelegramConfig.swift可以提交- 敏感值不再写死在 Swift 文件里
- 缺配置时只会禁用 Telegram 初始化,不会因为缺文件导致 build fail