File size: 5,062 Bytes
64f8498
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25666e3
 
 
 
 
 
64f8498
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25666e3
64f8498
 
 
 
 
 
 
 
25666e3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64f8498
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25666e3
 
 
 
 
 
64f8498
 
25666e3
64f8498
25666e3
64f8498
 
 
 
25666e3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# 音频数据集处理工具

本工具用于处理音频数据集,支持音频切割、转录和人工验证功能。

## 功能特性

### 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界面
   - 自动检测适合聚合的片段