如何用WAV音频与Excel转录文件搭建数据集训练OpenAI Whisper模型
把自定义WAV+Excel数据转为Whisper训练数据集的步骤
1. 整理Excel转录数据
- 确认Excel表格至少包含两列:一列是音频文件的绝对/相对路径(比如
./audio/clip_001.wav),另一列是对应的准确转录文本(要和音频内容完全匹配,避免多余标点或错误)。 - 将Excel导出为UTF-8编码的CSV文件,命名为
transcripts.csv,方便后续批量处理。
2. 转换为Whisper兼容格式
Whisper训练支持JSONL或直接通过Hugging Face Datasets加载,两种方式任选:
方式一:手动生成JSONL文件
每行是包含audio(音频路径)和text(转录文本)的JSON对象,示例格式:
{"audio": "./audio/clip_001.wav", "text": "会议室的设备已经调试完毕"} {"audio": "./audio/clip_002.wav", "text": "请在下周五前提交项目报告"}
用Python脚本批量生成的示例代码:
import pandas as pd import json # 读取CSV文件 df = pd.read_csv("transcripts.csv") # 生成JSONL with open("whisper_dataset.jsonl", "w", encoding="utf-8") as f: for _, row in df.iterrows(): entry = {"audio": row["audio_path"], "text": row["transcript"]} json.dump(entry, f, ensure_ascii=False) f.write("\n")
方式二:用Hugging Face Datasets加载处理
直接把CSV转为Dataset对象,可直接对接后续训练流程:
from datasets import load_dataset # 加载CSV数据集 dataset = load_dataset("csv", data_files="transcripts.csv") # 可选:拆分训练集和验证集(按10%比例拆分) dataset = dataset["train"].train_test_split(test_size=0.1)
3. 数据验证与预处理
- 检查所有音频文件路径是否有效,避免训练时出现文件找不到的错误。
- 核对转录文本与音频内容的一致性,剔除空文本、异常长度的无效样本。
- 可选:统一音频采样率到16kHz(Whisper默认要求),用
librosa批量处理的示例:
import librosa import soundfile as sf def resample_to_16k(audio_path): y, sr = librosa.load(audio_path, sr=None) if sr != 16000: y = librosa.resample(y, orig_sr=sr, target_sr=16000) sf.write(audio_path, y, 16000) # 遍历所有音频文件处理 for path in df["audio_path"]: resample_to_16k(path)
4. 对接Whisper训练流程
- 如果用OpenAI官方训练脚本,直接指定JSONL文件路径即可:
python train.py --dataset "whisper_dataset.jsonl" --model "base" --batch_size 16
- 如果用Hugging Face
transformers库训练,直接将处理好的Dataset对象传入训练器,无需额外格式转换。
内容的提问来源于stack exchange,提问作者jhoanmartinez
相关产品推荐
相关产品推荐

