- 视频播放器,支持选择本地视频并播放
- 集成语音识别,支持中文/英文/双语识别与切换
- 内置脏话检测与统计,展示词频榜和标签
- 支持查看识别全文,脏话高亮标注,并将全文保存为文件
- UI 层:
ByteSmartPlayer/UI/VerticalVideoPlayerView.swift播放页与信息面板,选择语言、识别进度与统计展示,入口封面卡片ByteSmartPlayer/UI/TranscriptPanelView.swift全文查看,脏话高亮ByteSmartPlayer/UI/VideoPickerView.swift视频选择器
- Core 层:
ByteSmartPlayer/Core/Speech/SpeechRecognizerService.swift识别服务,授权、识别、取消与结果聚合ByteSmartPlayer/Core/Speech/SpeechRecognizerFactory.swift根据Locale构建SFSpeechRecognizerByteSmartPlayer/Core/Detection/ProfanityDetector.swift脏话词表与统计(获取词表words(for:)ByteSmartPlayer/Core/Video/AudioExtractor.swift从视频导出音频.m4a,iOS 18+ 使用异步导出,旧版走兼容路径ByteSmartPlayer/Core/Storage/TextFileStore.swift全文保存/读取到Documents
- 程序入口:
ByteSmartPlayer/ByteSmartPlayerApp.swift与ByteSmartPlayer/ContentView.swift,将VerticalVideoPlayerView作为主要内容展示
- 识别全文:
recognizedText - 统计字典:
[String: Int] profanityCounts,用于顶部面板的词频榜与标签 - 语言选项:
LanguageOption(SpeechRecognizerService.swift:4-8)支持Chinese/English/Both - 临时资源:
selectedVideoURL、audioFileURL,缓存所选视频与导出音频 - 全文文件路径:
transcriptFileURL,用于打开或共享
- 首屏封面卡片:选择视频进入播放,卡片采用毛玻璃材质、圆角与阴影
- 播放页顶部信息面板:
- 返回按钮,重新选择视频
- 语言切换
Picker(识别中会暂时禁用,VerticalVideoPlayerView.swift:66-67) - 识别进度
ProgressView与完成后统计 - 词频榜(Top3)与完整词汇徽章列表
- 查看全文按钮,弹出全文面板(
TranscriptPanelView)
- 过渡动画:从封面到播放采用移动+渐隐过渡;返回封面时淡出并缩放
- 基于 Apple
Speech框架:SFSpeechRecognizer+SFSpeechURLRecognitionRequest - 多语言识别:
Chinese/English/Both,Both会依次以zh-CN与en-US识别并合并结果 - 授权:运行前请求语音识别权限
- 取消与并发安全:
- 服务层集中跟踪与取消活动任务,避免并发崩溃
- 迭代识别前使用
try Task.checkCancellation()尊重取消 - 在识别文本方法中使用
withTaskCancellationHandler取消底层SFSpeechRecognitionTask
- 单例模式:
SpeechRecognizerService.shared统一管理识别 - 工厂模式:
SpeechRecognizerFactory.make(locale:)屏蔽构造细节 - 分层架构:UI/Core 清晰分离,存储、检测、音视频处理模块化
- 并发与取消:
Task+withTaskCancellationHandler,在 UI 层与 Service 层双向保障
- Swift 命名使用
lowerCamelCase;类型名采用UpperCamelCase - 视图以
...View.swift结尾,服务以...Service.swift结尾,模块文件夹按功能归类 - 枚举值可读且语义明确
- iOS 16.0+(Target 16.6);在 iOS 18+ 使用更现代的
AVFoundation异步导出 API - 权限文案:已设置英文文案(麦克风与语音识别),在项目构建设置中配置
- 在 Xcode 打开工程,选择 iOS Simulator 运行
- 进入应用后:
- 点击封面上的
Pick Video选择竖屏视频(.mp4/.mov) - 等待识别完成,查看顶部面板的统计与徽章
- 使用
Language切换中/英/双语,识别会自动刷新(识别进行中临时禁用切换,完成后恢复) - 点击
View Transcript打开全文面板,查看脏话高亮并可保存文本
- 点击封面上的

