Skip to content

Repository files navigation

Reader Companion

Reader Companion 是一个 iPhone 优先的 SwiftUI MVP,用来做本地文档朗读、授权音色创建,以及 App 内虚拟人伴读。

当前已实现

  • SwiftUI iOS 工程,目标 iOS 18+。
  • 首页改为单页舞台:全屏虚拟播讲人 + 带进度条的悬浮播放条。
  • 播放条从左到右为:字幕播放详情、停止、大播放键、语速、资源。
  • 资源 页合并文档和音色管理,顶部左侧为 文档、音色 两个标签,右侧加号按当前标签导入文档或创建音色。
  • 使用系统 fileImporter 导入本地文件。
  • 支持 TXT、Markdown、RTF、HTML、PDF、图片 OCR、EPUB 文本提取。
  • PDF 使用 PDFKit 提取文本,扫描型 PDF 会走 Vision OCR 兜底。
  • 图片文字识别使用 Apple Vision OCR。
  • 支持通过直接录音、音频文件、视频文件创建授权音色 Profile。
  • 视频文件会抽取音轨为 M4A,作为音色参考音频。
  • 创建音色前必须勾选声音授权确认。
  • 已接入过 sherpa-onnx / Kokoro 本地 TTS 试验链路;当前 GitHub 仓库不上传模型和本地运行库。
  • 模型缺失时,App 会自动回退到 iOS 系统 AVSpeechSynthesizer 朗读。
  • 如果恢复本地 TTS,TTS 生成在后台线程执行,按段生成 WAV,再由 AVAudioPlayer 播放。
  • 系统朗读降级会优先选择 iOS premium / enhanced 语音,听感比默认语音更好。
  • 保存阅读进度、文档列表、音色列表和当前播放会话。
  • 已配置后台音频能力。
  • App 内有虚拟播讲人舞台,会根据播放状态和朗读回调驱动状态动画。
  • 舞台 整页已接入原创男女全身播讲人图片资产,可悬浮切换性别,并叠加实时声波状态。

当前界面方向

  • 首页是首屏核心:展示全屏原创男女播讲人和悬浮播放条。
  • 点击字幕图标进入播放详情:展示当前文档、当前段落、播放控制、进度和当前音色。
  • 点击资源图标进入合并资源页:文档和音色用顶部标签切换,右上角加号负责新增。
  • 圆角统一使用 12pt continuous,强调色收敛到系统 teal。

本地测试书籍

测试用 EPUB 小说不上传到公开 GitHub。需要在本机测试时,可以把 EPUB 文件放到:

ReaderCompanion/Resources/

如果要把 EPUB 作为 App 内置样例,需要在 Xcode 中确认它们被加入 Copy Bundle Resources;公开仓库默认不包含这些测试书。

如何打开

用 Xcode 打开工程:

open /Users/wf/t2s/ReaderCompanion.xcodeproj

也可以在命令行构建:

xcodebuild -project ReaderCompanion.xcodeproj \
  -scheme ReaderCompanion \
  -destination 'platform=iOS Simulator,name=iPhone 17 Pro' \
  build CODE_SIGNING_ALLOWED=NO

本地 TTS 模型说明

工程曾使用 sherpa-onnx (https://github.com/k2-fsa/sherpa-onnx) 做离线 TTS。由于模型和运行库体积较大,GitHub 仓库只保留代码和放置说明,不上传模型本体。

如果 sherpa-onnx 初始化或生成失败,自动回退到系统 AVSpeechSynthesizer 朗读,保证播放不中断。当前阶段建议优先打磨系统朗读主链路,把本地模型作为后续增强项。

当前验证结果

构建结果:

BUILD SUCCEEDED

下一步工程任务

  • 增加 PDF、扫描 PDF、图片 OCR、TXT、EPUB 的样例文件测试。
  • 完善锁屏播放信息和远程控制。
  • 根据 Claude Design 输出,对 SwiftUI 页面做完整视觉升级。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages