Skip to content

liuyichong2250/ByteSmartPlayer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ByteSmartPlayer

概述

image-20251201190654793image-20251201190953282

  • 视频播放器,支持选择本地视频并播放
  • 集成语音识别,支持中文/英文/双语识别与切换
  • 内置脏话检测与统计,展示词频榜和标签
  • 支持查看识别全文,脏话高亮标注,并将全文保存为文件

分层结构

  • 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.swiftByteSmartPlayer/ContentView.swift,将 VerticalVideoPlayerView 作为主要内容展示

数据

  • 识别全文:recognizedText
  • 统计字典:[String: Int] profanityCounts,用于顶部面板的词频榜与标签
  • 语言选项:LanguageOptionSpeechRecognizerService.swift:4-8)支持 Chinese/English/Both
  • 临时资源:selectedVideoURLaudioFileURL,缓存所选视频与导出音频
  • 全文文件路径:transcriptFileURL,用于打开或共享

UI 交互

  • 首屏封面卡片:选择视频进入播放,卡片采用毛玻璃材质、圆角与阴影
  • 播放页顶部信息面板:
    • 返回按钮,重新选择视频
    • 语言切换 Picker(识别中会暂时禁用,VerticalVideoPlayerView.swift:66-67
    • 识别进度 ProgressView 与完成后统计
    • 词频榜(Top3)与完整词汇徽章列表
    • 查看全文按钮,弹出全文面板(TranscriptPanelView
  • 过渡动画:从封面到播放采用移动+渐隐过渡;返回封面时淡出并缩放

语音识别方案

  • 基于 Apple Speech 框架:SFSpeechRecognizer + SFSpeechURLRecognitionRequest
  • 多语言识别:Chinese/English/BothBoth 会依次以 zh-CNen-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

Releases

No releases published

Packages

No packages published

Languages