音频数据集处理工具
本工具用于处理音频数据集,支持音频切割、转录和人工验证功能。
功能特性
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. 安装依赖
pip install -r requirements.txt
2. 处理新的音频文件
# 在项目根目录下运行
python vad/main.py process dataset/audio/test1.wav
这个命令会:
- 将音频切割成多个片段
- 对每个片段进行转录
- 保存结果到JSON文件
3. 验证已有的转录结果
# 在项目根目录下运行
python vad/main.py verify dataset/transcripts/your_transcript.json
4. 聚合转录连续片段
# 在项目根目录下运行
python vad/main.py aggregate --segments "0,1,2"
这个命令会:
- 自动查找已处理的音频片段
- 聚合指定的连续片段(这里是索引为0、1、2的片段)
- 对聚合后的音频进行整体转录
- 保存结果到JSON文件
参数说明:
--segments
: 指定要聚合的片段索引,用逗号分隔,索引从0开始(必需)
参数调整
可以通过修改 vad/audio_processor.py
中的参数来优化切割效果:
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格式,包含以下信息:
{
"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
}
]
}
这个示例展示了:
- 已验证且正确的片段(第一个)
- 已验证且需要修正的片段(第二个)
- 未验证的片段(第三个)
使用以下命令验证此转录:
python vad/main.py verify dataset/transcripts/meeting_001_20250422_182233.json
注意事项
音频文件要求:
- 支持常见音频格式(WAV, MP3, M4A等)
- 建议使用16kHz采样率
- 如果是多声道音频会自动转换为单声道
聚合转录建议:
- 建议聚合语义上相关的连续片段
- 聚合片段不宜过多,建议不超过5个片段
- 聚合转录适合解决单独转录时出现的语义断裂问题
性能考虑:
- 转录速度取决于CPU性能和音频长度
- 较长的音频文件会被自动切割成小片段处理
- 聚合转录可能需要更多内存和处理时间
后续优化方向:
- 优化切割策略
- 添加批量处理功能
- 改进语义重组算法
- 添加GUI界面
- 自动检测适合聚合的片段