原生 macOS 字幕生成工具 - 基于 Qwen3-ASR
当前阶段: Phase 4 (Pro 功能) ✅ 完成
最后更新: 2026-04-30
构建方式: ./build.sh all
| 任务 | 状态 | 说明 |
|---|---|---|
| Package.swift 配置 | ✅ | swift-tools-version: 6.0, macOS 15.0+, speech-swift v0.0.12 |
| SubtitleSegment.swift | ✅ | 数据模型 + SRT/VTT 时间戳格式化 |
| TranscriptionJob.swift | ✅ | 任务状态 + Step 进度 |
| AudioExtractor.swift | ✅ | AVFoundation 音频提取 + 16kHz 重采样 |
| ModelManager.swift | ✅ | Qwen3ASRModel + SileroVADModel 单例 |
| SentenceSplitter.swift | ✅ | 标点断句 + 时间戳对齐 |
| TranscriptionPipeline.swift | ✅ | 流水线串联(修复片段提取bug) |
| SubScriptApp.swift | ✅ | 注入 ModelManager |
| 构建验证 | ✅ | Build complete! |
| 任务 | 状态 | 说明 |
|---|---|---|
| AppState.swift | ✅ | 全局状态 + 导航 + 转写任务管理 |
| ExportService.swift | ✅ | SRT/VTT/TXT/ASS 导出 |
| HomeView.swift | ✅ | 拖拽区 + 文件选择 + 最近文件 |
| ProcessingView.swift | ✅ | 进度圈 + 步骤列表 + 取消 |
| ResultsView.swift | ✅ | 视频播放 + 字幕列表 + 编辑 |
| ExportView.swift | ✅ | 导出格式选择 + NSSavePanel |
| ContentView.swift | ✅ | 页面路由 + sheet 触发 |
| 构建验证 | ✅ | Build complete! |
| 任务 | 状态 | 说明 |
|---|---|---|
| VideoPlayerView 修复 | ✅ | MainActor 隔离修复 |
| 字幕 -> 视频跳转 | ✅ | onTapGesture 设置 playerCurrentTime |
| 视频 -> 字幕联动 | ✅ | onChange(activeSubtitleId) scrollTo |
| 内联编辑 | ✅ | 双击 TextField 替换 |
| 搜索过滤 | ✅ | searchText 过滤字幕 |
| 转写 pipeline 修复 | ✅ | 每次循环提取正确的片段数据 |
| 构建验证 | ✅ | Build complete! |
| 任务 | 状态 | 说明 |
|---|---|---|
| App Bundle 创建 | ✅ | 创建 .app 包裹 |
| AppIcon.icns | ✅ | 转换 PNG 为 icns |
| mlx.metallib 打包 | ✅ | 复制到 Contents/MacOS |
| App Icon 更新 | ✅ | 使用 subscript_icon.png |
| arm64 架构 | ✅ | 仅支持 Apple Silicon |
| 任务 | 状态 | 说明 |
|---|---|---|
| 字幕烧录 (BurnService) | ✅ | 使用 bundled ffmpeg 硬编码字幕到视频 |
| Burning 配置 (BurnConfig) | ✅ | 字体大小、颜色、描边宽度配置 |
| Burning UI (BurnOptionsView) | ✅ | SwiftUI 配置面板 |
| Progress View | ✅ | 实时进度显示 |
| FFmpeg 打包 | ✅ | 内置带 libass 的 ffmpeg 二进制 |
| Sandbox 关闭 | ✅ | 允许文件访问任意路径 |
| 进度实时更新 | ✅ | -progress pipe:1 参数 |
| Cancel 支持 | ✅ | 可以取消烧录 |
| 视频格式过滤 | ✅ | 仅视频文件显示烧录按钮 |
| 多编码器支持 | ✅ | H.264/H.265/AV1/VP9/VideoToolbox/ProRes |
| ColorPicker 修复 | ✅ | 添加标签使选择器正常关闭 |
| 进度显示修复 | ✅ | 从 0% 开始逐步增长 |
| 关闭按钮 | ✅ | 设置和完成对话框添加 X 关闭按钮 |
| 国际化 (i18n) | ✅ | 支持中英文,修复资源打包与状态 Key 映射 |
| HomeView 恢复 | ✅ | 修复视图结构并添加「浏览文件」按钮 |
- macOS 15.0+ (Sonoma)
- Xcode 16+ (with Metal Toolchain)
- Apple Silicon (M1/M2/M3/M4)
./build.sh all./build.sh setup # 安装 Metal Toolchain
swift package resolve # 解析依赖
./build.sh rebuild-metal # 编译 MLX metallib
./build.sh build # 构建 release
./build.sh debug # 构建 debug
./build.sh clean # 清理open .build/release/SubScript
# 或
open .build/debug/SubScriptspeech-swift
├── Qwen3ASR v0.0.12 # ASR 推理
├── SpeechVAD v0.0.12 # Silero VAD
└ SpeechUI v0.0.12 # SwiftUI 组件
构建要求:
- swift-tools-version: 6.0
- 最低部署目标: macOS 15.0 (Sonoma)
- Xcode 16+ (with Metal Toolchain)
- Apple Silicon (M1/M2/M3/M4)
- Assets.xcassets: ✅ 已迁移到 SPM 标准位置 (Sources/SubScript/)
- entitlements: ✅ 已创建 (SubScript/Resources/)
- App Icon: ✅ 已配置Assets.xcassets/AppIcon.appiconset
- 内存占用: 10GB+ (模型加载是正常的)
后续版本:
- StoreKit 2 购买流程
- 本地翻译(Qwen3Chat)
- 批量处理队列
- 会议摘要(Qwen3Chat)