# 音频数据集处理工具 本工具用于处理音频数据集,支持音频切割、转录和人工验证功能。 ## 功能特性 ### 1. 音频处理和切割 - 基于振幅和VAD(Voice Activity Detection)的音频切割 - 自动过滤无效的短音频片段 - 保存切割后的音频片段到指定目录 ### 2. 音频转录 - 使用faster-whisper模型进行音频转录 - 支持批量处理音频片段 - 保存带时间戳的转录文本 ### 3. 聚合转录 - 支持将多个连续片段聚合后进行整体转录 - 提高语义连贯性和转录准确度 - 适用于语义上相关的连续语音片段 ### 4. 人工验证界面 - 交互式验证转录结果 - 支持修改转录文本 - 添加验证注释 - 保存验证状态 ## 项目结构 ``` faster-whisper-small/ ├── vad/ # VAD音频处理工具目录 │ ├── audio_processor.py # 音频处理核心代码 │ ├── audio_transcriber.py# 音频转录核心代码 │ ├── main.py # 命令行入口 │ └── README.md # 使用说明文档 ├── dataset/ # 数据集目录 │ ├── audio/ # 存放原始音频文件 │ │ └── segments/ # 存放切割后的音频片段 │ └── transcripts/ # 存放转录和验证结果 ├── ct2_model/ # faster-whisper模型文件 └── whisper_processor/ # whisper处理器文件 ``` ## 使用方法 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 处理新的音频文件 ```bash # 在项目根目录下运行 python vad/main.py process dataset/audio/test1.wav ``` 这个命令会: 1. 将音频切割成多个片段 2. 对每个片段进行转录 3. 保存结果到JSON文件 ### 3. 验证已有的转录结果 ```bash # 在项目根目录下运行 python vad/main.py verify dataset/transcripts/your_transcript.json ``` ### 4. 聚合转录连续片段 ```bash # 在项目根目录下运行 python vad/main.py aggregate --segments "0,1,2" ``` 这个命令会: 1. 自动查找已处理的音频片段 2. 聚合指定的连续片段(这里是索引为0、1、2的片段) 3. 对聚合后的音频进行整体转录 4. 保存结果到JSON文件 参数说明: - `--segments`: 指定要聚合的片段索引,用逗号分隔,索引从0开始(必需) ## 参数调整 可以通过修改 `vad/audio_processor.py` 中的参数来优化切割效果: ```python processor = AudioProcessor( vad_level=2, # VAD灵敏度 (0-3) min_silence_duration=0.5, # 最小静音持续时间(秒) min_speech_duration=0.3, # 最小语音片段长度(秒) amplitude_threshold=0.01 # 振幅阈值 ) ``` ## 输出文件格式 ### 1. 音频片段 切割后的音频片段保存为WAV格式,采样率为16kHz,命名格式为: ``` {原文件名}_segment_{序号}.wav ``` ### 2. 转录结果 转录结果保存为JSON格式,包含以下信息: ```json { "audio_file": "dataset/audio/meeting_001.wav", "timestamp": "20250422_182233", "segments": [ { "text": "今天的会议主要讨论两个议题。", "start_time": 0.0, "end_time": 2.5, "confidence": 0.92, "verified": true, "verified_text": null, "verification_notes": "转录正确" }, { "text": "第一个是项目进度报告。", "start_time": 2.8, "end_time": 4.6, "confidence": 0.88, "verified": true, "verified_text": "第一个是项目进度汇报", "verification_notes": "纠正:'报告'改为'汇报'" }, { "text": "第二个是下个月的工作计划", "start_time": 5.0, "end_time": 7.2, "confidence": 0.95, "verified": false, "verified_text": null, "verification_notes": null } ] } ``` 这个示例展示了: 1. 已验证且正确的片段(第一个) 2. 已验证且需要修正的片段(第二个) 3. 未验证的片段(第三个) 使用以下命令验证此转录: ```bash python vad/main.py verify dataset/transcripts/meeting_001_20250422_182233.json ``` ## 注意事项 1. 音频文件要求: - 支持常见音频格式(WAV, MP3, M4A等) - 建议使用16kHz采样率 - 如果是多声道音频会自动转换为单声道 2. 聚合转录建议: - 建议聚合语义上相关的连续片段 - 聚合片段不宜过多,建议不超过5个片段 - 聚合转录适合解决单独转录时出现的语义断裂问题 3. 性能考虑: - 转录速度取决于CPU性能和音频长度 - 较长的音频文件会被自动切割成小片段处理 - 聚合转录可能需要更多内存和处理时间 4. 后续优化方向: - 优化切割策略 - 添加批量处理功能 - 改进语义重组算法 - 添加GUI界面 - 自动检测适合聚合的片段