Skip to content

StephenQiu30/rtc-reader

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

RTC Reader

基于火山引擎实时音视频(RTC)的 iOS 绘本 AI 朗读 Demo。通过摄像头实时捕捉绘本画面,结合大模型视觉能力与 TTS 语音合成,实现"翻页即读"的儿童绘本伴读体验。

功能特性

  • 实时画面捕捉 — 通过设备摄像头获取绘本页面画面,推流至火山引擎 RTC 服务端
  • AI 视觉朗读 — 基于豆包大模型(Doubao)的视觉理解能力,识别绘本内容并生成朗读文本
  • TTS 语音合成 — 使用火山引擎双向 TTS(volcano_bidirection)将文本转为自然语音
  • 翻页检测 — 基于 Apple Vision 框架的图像特征对比,自动检测翻页动作并触发新一轮朗读
  • OpenAPI 集成 — 通过火山引擎 OpenAPI 自动启动/管理 VoiceChat 智能体

技术栈

模块 技术
语言 Swift (iOS 13+)
UI SwiftUI
实时音视频 VolcEngineRTC SDK v3.41
AI 大模型 豆包 doubao-seed-1-6-flash-250828 (Volcengine ArkV3)
TTS 火山引擎双向 TTS seed-tts-1.0
ASR 火山引擎 ASR volcano (bigmodel)
计算机视觉 Apple Vision (VNGenerateImageFeaturePrintRequest)
API 签名 HMAC-SHA256 (火山引擎 V4 签名)

项目结构

├── RTCReader/                         # Xcode 项目目录
│   ├── RTCReader/                     # App 源码
│   │   ├── Config/
│   │   │   ├── AppConfig.swift          # 配置入口(从 Secrets.plist 加载密钥)
│   │   │   └── Secrets.plist.example    # 密钥模板(复制为 Secrets.plist 后填写)
│   │   ├── Models/                      # 数据模型
│   │   ├── Services/                    # 核心业务逻辑
│   │   │   ├── RTCReadingClient.swift          # RTC 房间管理
│   │   │   ├── RealtimeReadingCoordinator.swift # 主协调器
│   │   │   ├── VolcengineOpenAPIService.swift   # OpenAPI HTTP 客户端
│   │   │   ├── VolcengineSignature.swift        # V4 签名实现
│   │   │   ├── PageChangeDetector.swift         # 翻页检测
│   │   │   └── ...
│   │   └── Views/                       # SwiftUI 视图
│   ├── RTCReaderTests/                # 单元测试
│   ├── scratch/                       # 调试脚本
│   ├── Podfile                        # CocoaPods 依赖
│   └── ...
├── LICENSE
└── README.md

快速开始

前置条件

  • Xcode 15+
  • CocoaPods
  • 火山引擎账号(需开通 RTC、VoiceChat、TTS 服务)

1. 克隆仓库

git clone https://github.com/<your-username>/RTC-Reader.git
cd RTC-Reader/RTCReader

2. 安装依赖

pod install

3. 配置密钥

RTCReader/Config/ 目录下,将 Secrets.plist.example 复制为 Secrets.plist

cd RTCReader/Config
cp Secrets.plist.example Secrets.plist

编辑 Secrets.plist,填入你的火山引擎凭证:

重要:Secrets.plist 拖入 Xcode 项目中(选择 "Copy items if needed",确保添加到 App Target 的 "Copy Bundle Resources" 中),否则运行时会找不到配置文件。

Key 说明 获取方式
RTCAppId RTC 应用 ID 火山引擎 RTC 控制台
RTCAppKey RTC 应用 Key 同上
RTCRoomId 房间 ID 自定义,需与 Token 生成时一致
RTCUserId 用户 ID 自定义,需与 Token 生成时一致
RTCToken RTC 临时 Token Token 生成工具
VolcengineAccessKey IAM Access Key 火山引擎 IAM
VolcengineSecretKey IAM Secret Key 同上
AgentId 智能体 ID 火山引擎 VoiceChat 控制台

注意: Secrets.plist 已被 .gitignore 忽略,不会被提交到仓库。

4. 打开项目

open RTCReader.xcworkspace

选择真机(需要摄像头)运行即可。

工作原理

摄像头画面 → RTC 推流 → 云端 VoiceChat 智能体
                              ↓
                    豆包大模型 (Vision) 识别绘本内容
                              ↓
                    TTS 生成语音 → RTC 拉流播放
                              ↓
                    翻页检测 (Apple Vision) → 触发新一轮朗读
  1. App 启动后通过 OpenAPI 创建 VoiceChat 任务,连接 RTC 房间
  2. 摄摄头画面通过 RTC 视频流推送至云端
  3. 豆包大模型通过视觉能力识别绘本页面内容
  4. TTS 引擎将识别结果转为语音,通过 RTC 音频流回传播放
  5. App 端通过图像特征对比检测翻页,自动触发新一轮朗读

相关资源

License

MIT

About

基于火山引擎 RTC 的 iOS AI 朗读 Demo — 摄像头实时捕捉,大模型视觉 + TTS,翻页即读

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors