|
# 音频数据集处理工具 |
|
|
|
本工具用于处理音频数据集,支持音频切割、转录和人工验证功能。 |
|
|
|
## 功能特性 |
|
|
|
### 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界面 |
|
- 自动检测适合聚合的片段 |
|
|