feat:删除多余文档,修改部分文案
新一代本地化、专业级AI字幕解决方案
随着数字化内容的激增,高效、准确的字幕生成已成为刚需。然而,现有的云端API方案(如Whisper API)普遍存在数据隐私风险、高昂的使用成本和网络依赖等问题。同时,通用开源模型在计算机科学等专业领域的术语识别上表现不佳。
识语旨在解决这些痛点。我们提供一个完全本地化部署、零成本、高性能的AI字幕解决方案,通过对SenseVoice模型的深度微调,使其能够精准识别专业术语,为用户提供安全、便捷、专业的字幕生成体验。
SenseVoice
SenseVoice-Small是一个多语言音频理解模型,经过专门的领域优化训练,具有以下技术特点:
FSMN-Monophone VAD是达摩院语音团队提出的高效语音端点检测模型:
环境要求:
安装步骤:
创建并激活 Conda 环境
# 我们推荐使用 Python 3.8 conda create -n voice2text python=3.8 conda activate voice2text # 安装GPU版本的PyTorch 2.2.0(CUDA 11.8版本) pip install torch==2.2.0 torchvision==0.17.0 torchaudio==2.2.0 --index-url https://download.pytorch.org/whl/cu118
安装 FFmpeg FFmpeg 是核心的音视频处理依赖,可以通过 Conda 直接安装:
conda install ffmpeg
安装 Python 依赖库 克隆本仓库到本地,然后在项目根目录下运行:
pip install -r requirements.txt
不同操作系统的区别
windows环境:需要下载K-Lite Codec Pack Basic,访问:https://codecguide.com/download_kl.htm。 选择”Basic”版本,运行安装程序,选择默认设置,重启计算机,重新运行程序。
Ubuntu环境:系统代码中已经设置好了QT环境,如果执行失败,手动下载依赖:
sudo apt install python3-pyqt5.qtmultimedia sudo apt install libqt5multimedia5-plugins sudo apt install gstreamer1.0-plugins-good sudo apt install gstreamer1.0-plugins-bad sudo apt install ffmpeg
验证安装 运行测试脚本来验证环境和模型加载(首次运行会自动下载所需模型):
cd py python test_model_loading.py
当您看到输出 “🎉 测试通过!模型可以正常加载。” 时,表示环境已准备就绪。
通过以下命令启动主程序:
# 确保您已激活 conda 环境 (conda activate voice2text) cd py python player_example.py
程序启动后,通过界面上右下角的文件图标按钮选择您想处理的视频文件,识语将自动开始工作。
subtitles
.srt
class ModelManager: def __init__(self, vad_model_path=None, asr_model_path=None, device="cuda", vad_params=None, sensevoice_params=None): # 初始化模型路径、设备和用户自定义参数 # 默认自动检测模型路径 def load_models(self) -> bool: # 加载VAD和ASR模型,支持用户参数配置 # 返回是否成功加载 def get_models(self) -> tuple: # 获取已加载的模型实例 (vad_model, asr_model) def reload_models(self, vad_params=None, sensevoice_params=None) -> bool: # 重新加载模型(参数更新后)
主要功能:
@dataclass class TranscribeResult: """字幕结果数据类""" text: str start_time: float end_time: float index: int = 0 def float_to_srt_time_format(self, seconds_float): # 将浮点数秒转换为SRT时间格式 def to_srt(self): # 转换为SRT格式字符串 class AudioProcessor: def __init__(self, vad_model, asr_model, sample_rate=16000): # 初始化VAD和ASR模型,设置采样率 def extract_audio(self, video_path: str, output_audio_path: str = None) -> str: # 使用FFmpeg从视频中提取音频,支持多种格式 def split_audio(self, input_file: str, first_segment_length=60, other_segment_length=180, output_dir="./temp_segments") -> list: # 智能分割音频:首段60s,其余180s,返回分段文件列表 def process_segment(self, audio_data, segment_start_time=0) -> List[TranscribeResult]: # VAD检测 + ASR识别的完整流程,返回字幕结果列表 def process_segment_file(self, segment_file: str, segment_start_time: float = 0) -> List[TranscribeResult]: # 处理单个音频段文件 def save_subtitles(self, results: List[TranscribeResult], output_path: str): # 保存为标准SRT格式字幕文件
class PlayerManager: def __init__(self): # 初始化模型管理器、音频处理器和统计参数 def initialize(self, vad_params: dict = None, sensevoice_params: dict = None) -> bool: # 使用用户参数初始化模型,返回是否成功 def reload_models(self, vad_params: dict = None, sensevoice_params: dict = None) -> bool: # 参数更新后重新加载模型 def set_subtitle_callback(self, callback): # 设置字幕实时更新回调函数 def generate_subtitles(self, video_path: str): # 完整的字幕生成流程管理(带时间统计) def save_timing_stats(self, video_name: str, stats: dict): # 保存性能统计数据到JSON文件 def cleanup_temp_files(self, temp_dir: str): # 清理临时音频分段文件 def get_video_duration(self, video_path: str) -> float: # 获取视频时长(用于统计计算)
核心GUI类:
VideoPlayer
FloatingSubtitleWindow
SettingsWindow
SubtitleManager
ResourceMonitor
ResourceMonitorWindow
功能模块:
SettingsManager
TranslationWorker
SubtitleUpdateWorker
voice2text/ ├── model/ # 语音识别模型 │ ├── SenseVoiceSmall/ # 多语言语音识别模型 │ │ ├── model.pt # 模型权重文件 │ │ ├── config.yaml # 模型配置文件 │ │ ├── tokens.json # 词表文件 │ │ └── README.md # 模型说明文档 │ └── speech_fsmn_vad_zh-cn-16k-common-pytorch/ # VAD模型 │ ├── model.pt # VAD模型权重 │ ├── config.yaml # VAD配置文件 │ └── README.md # VAD模型文档 ├── py/ # Python源代码 │ ├── audio_processor.py # 音频处理核心模块 │ ├── model_loader.py # 模型加载和管理模块 │ ├── player_manager.py # 播放管理核心控制器 │ ├── player_example.py # 主应用程序(GUI界面) │ └── test_model_loading.py # 模型加载测试脚本 ├── resource/ # 资源文件 │ ├── demo.mp4 # 演示视频文件 │ └── subtitles/ # 字幕输出目录 │ └── demo.srt # 生成的字幕文件示例 ├── 提交文档/ # 比赛提交文档 ├── 软件截图/ # 应用程序运行截图 ├── 演示录屏.mp4 # 软件演示视频 ├── requirements.txt # Python依赖包列表 └── README.md # 项目说明文档
更详细的技术细节、功能介绍和性能对比,请参阅项目说明书。
联系邮箱: 727467228@qq.com
本项目基于 Apache License 2.0 许可证开源。
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
识语
新一代本地化、专业级AI字幕解决方案
✨ 核心特性
1. 项目背景
随着数字化内容的激增,高效、准确的字幕生成已成为刚需。然而,现有的云端API方案(如Whisper API)普遍存在数据隐私风险、高昂的使用成本和网络依赖等问题。同时,通用开源模型在计算机科学等专业领域的术语识别上表现不佳。
识语旨在解决这些痛点。我们提供一个完全本地化部署、零成本、高性能的AI字幕解决方案,通过对
SenseVoice模型的深度微调,使其能够精准识别专业术语,为用户提供安全、便捷、专业的字幕生成体验。2. 核心模型介绍
2.1 SenseVoice-Small 模型
SenseVoice-Small是一个多语言音频理解模型,经过专门的领域优化训练,具有以下技术特点:
2.2 FSMN-Monophone VAD 模型
FSMN-Monophone VAD是达摩院语音团队提出的高效语音端点检测模型:
3. 安装指南
环境要求:
安装步骤:
创建并激活 Conda 环境
安装 FFmpeg FFmpeg 是核心的音视频处理依赖,可以通过 Conda 直接安装:
安装 Python 依赖库 克隆本仓库到本地,然后在项目根目录下运行:
不同操作系统的区别
windows环境:需要下载K-Lite Codec Pack Basic,访问:https://codecguide.com/download_kl.htm。 选择”Basic”版本,运行安装程序,选择默认设置,重启计算机,重新运行程序。
Ubuntu环境:系统代码中已经设置好了QT环境,如果执行失败,手动下载依赖:
验证安装 运行测试脚本来验证环境和模型加载(首次运行会自动下载所需模型):
当您看到输出 “🎉 测试通过!模型可以正常加载。” 时,表示环境已准备就绪。
4. 使用
通过以下命令启动主程序:
程序启动后,通过界面上右下角的文件图标按钮选择您想处理的视频文件,识语将自动开始工作。
4.1 模型初始化
4. 2 打开视频文件
4.3 字幕生成和显示
4.4 字幕设置和自定义
4.5 高级参数调节
4.6 系统监控
4.7 字幕文件导出
subtitles文件夹.srt5.核心代码模块说明
5.1. 模型加载器 (model_loader.py)
主要功能:
5.2 音频处理器 (audio_processor.py)
主要功能:
5.3 播放管理器 (player_manager.py)
主要功能:
5.4. 主应用程序 (player_example.py)
核心GUI类:
VideoPlayer:主窗口类,集成视频播放、字幕显示和控制面板FloatingSubtitleWindow:美化的可拉伸浮动字幕窗口SettingsWindow:多标签页设置界面(字幕、VAD参数、SenseVoice参数)SubtitleManager:字幕翻译和缓存管理,支持Google Translate APIResourceMonitor:独立线程的系统资源监控器ResourceMonitorWindow:资源监控浮动窗口,实时显示CPU/内存/GPU状态功能模块:
SettingsManager:配置管理器,持久化保存用户设置TranslationWorker:后台翻译线程,支持并发翻译和缓存SubtitleUpdateWorker:字幕更新工作线程主要功能:
6. 项目结构
更详细的技术细节、功能介绍和性能对比,请参阅项目说明书。
7. 主要项目负责人
联系邮箱: 727467228@qq.com
8. 开源协议
本项目基于 Apache License 2.0 许可证开源。
鸣谢