Repository files navigation
视频播放器,支持选择本地视频并播放
集成语音识别,支持中文/英文/双语识别与切换
内置脏话检测与统计,展示词频榜和标签
支持查看识别全文,脏话高亮标注,并将全文保存为文件
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 构建 SFSpeechRecognizer
ByteSmartPlayer/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 打开全文面板,查看脏话高亮并可保存文本
About
视频播放和口播内容识别器
Resources
Stars
Watchers
Forks
You can’t perform that action at this time.