tianyaogavin's picture
vad module
238b905

音频数据集处理工具

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

功能特性

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

这个命令会:

  1. 将音频切割成多个片段
  2. 对每个片段进行转录
  3. 保存结果到JSON文件

3. 验证已有的转录结果

# 在项目根目录下运行
python vad/main.py verify dataset/transcripts/your_transcript.json

4. 聚合转录连续片段

# 在项目根目录下运行
python vad/main.py aggregate --segments "0,1,2"

这个命令会:

  1. 自动查找已处理的音频片段
  2. 聚合指定的连续片段(这里是索引为0、1、2的片段)
  3. 对聚合后的音频进行整体转录
  4. 保存结果到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
        }
    ]
}

这个示例展示了:

  1. 已验证且正确的片段(第一个)
  2. 已验证且需要修正的片段(第二个)
  3. 未验证的片段(第三个)

使用以下命令验证此转录:

python vad/main.py verify dataset/transcripts/meeting_001_20250422_182233.json

注意事项

  1. 音频文件要求:

    • 支持常见音频格式(WAV, MP3, M4A等)
    • 建议使用16kHz采样率
    • 如果是多声道音频会自动转换为单声道
  2. 聚合转录建议:

    • 建议聚合语义上相关的连续片段
    • 聚合片段不宜过多,建议不超过5个片段
    • 聚合转录适合解决单独转录时出现的语义断裂问题
  3. 性能考虑:

    • 转录速度取决于CPU性能和音频长度
    • 较长的音频文件会被自动切割成小片段处理
    • 聚合转录可能需要更多内存和处理时间
  4. 后续优化方向:

    • 优化切割策略
    • 添加批量处理功能
    • 改进语义重组算法
    • 添加GUI界面
    • 自动检测适合聚合的片段