1. 中文语音数据集入门指南
刚接触语音识别技术时,我最头疼的就是找不到合适的中文数据集。市面上虽然有不少资源,但要么下载链接失效,要么数据质量参差不齐。经过多次踩坑后,我整理出这份实战指南,重点介绍五个最实用的中文语音数据集。
语音数据集对AI模型训练有多重要?就像厨师需要新鲜食材一样,没有高质量数据,再厉害的算法也发挥不出效果。中文语音数据尤其珍贵,因为相比英文资源,优质的中文数据集更稀缺。我刚开始做语音合成项目时,就曾因为用了不合适的训练数据,导致合成的普通话带着奇怪的腔调。
选择数据集要考虑三个关键因素:数据规模、录音质量和应用场景。比如做方言识别就需要包含各地方言的数据,而语音合成则需要发音清晰的录音。下面要介绍的THCHS-30、CN-Celeb等数据集,都是我亲自使用过且效果不错的资源。
2. THCHS-30:经典普通话数据集
2.1 数据集特点与下载方法
THCHS-30是我最早接触的中文语音数据集,它的全称是"清华大学中文连续语音数据库"。这个数据集包含30小时的中文语音,由40位发音人录制,内容覆盖新闻、故事和日常对话等多种场景。
下载THCHS-30最方便的途径是通过OpenSLR平台:
bash复制wget https://www.openslr.org/resources/18/data_thchs30.tgz
解压后会看到三个主要目录:
- train:训练集音频和标注
- dev:开发集
- test:测试集
这个数据集最大的优点是标注非常规范,每个音频文件都配有准确的文本标注和音素标注。我做过测试,用THCHS-30训练的基础语音识别模型,在普通话场景下能达到85%以上的准确率。
2.2 实际应用技巧
在使用THCHS-30时,有几点经验值得分享:
- 数据预处理时要特别注意采样率统一,原始音频是16kHz采样
- 标注文件中的特殊符号需要清洗,比如去除停顿标记"[SP]"
- 建议先使用小批量数据测试,因为完整数据集解压后超过15GB
我曾经用这个数据集做过端到端的语音识别实验,发现它对新手特别友好。数据分布均衡,不会出现某些词汇或发音过度集中的情况。
3. CN-Celeb:说话人识别首选
3.1 数据集概览
CN-Celeb是清华大学发布的大规模说话人识别数据集,包含两个子集:
- CN-Celeb1:1000位名人,13万条语音
- CN-Celeb2:2000位名人,52万条语音
这个数据集的特点是录音环境多样,包含访谈、演讲、影视剧等11种场景。我下载CN-Celeb2时花了整整两天时间,因为压缩包就有200多GB。
下载地址有两个官方来源:
bash复制# 清华大学镜像
wget http://cslt.riit.tsinghua.edu.cn/~data/CN-Celeb/CN-Celeb2_v2.tar.gz
# OpenSLR备份
wget https://www.openslr.org/resources/82/cn-celeb_v2.tar.gz
3.2 使用心得
CN-Celeb最大的价值在于它的多样性。我做过对比实验,用这个数据集训练的声纹模型,在实际应用中的泛化能力明显优于其他数据集。但使用时要注意:
- 音频质量参差不齐,需要先做质量筛选
- 部分录音有背景音乐,要特别注意预处理
- 数据集结构复杂,建议先仔细阅读README文件
我建议新手先从CN-Celeb1开始,等熟悉数据特性后再处理更大的CN-Celeb2。这个数据集对计算资源要求较高,最好准备足够的存储空间和GPU算力。
4. Common Voice中文版:社区驱动的开放数据集
4.1 数据集介绍
Mozilla的Common Voice项目是少有的开放社区数据集,其中文版本包含超过1000小时的语音数据。与其他数据集不同,Common Voice的特点是:
- 完全开源免费
- 包含多种年龄、地域的发音人
- 持续更新扩充
下载方式很简单,直接访问官网注册账号即可选择下载中文数据集。数据以MP3格式提供,配套有详细的元数据标注。
4.2 实战建议
我在多个项目中使用过Common Voice数据,总结出这些经验:
- 数据质量波动较大,需要严格过滤
- 适合做数据增强的素材库
- 方言数据很有价值但标注不够精确
一个实用的预处理脚本示例:
python复制import pandas as pd
from pathlib import Path
# 加载元数据
metadata = pd.read_csv("validated.tsv", sep="\t")
# 筛选高质量样本
high_quality = metadata[
(metadata["age"].notnull()) &
(metadata["gender"].notnull()) &
(metadata["accents"].str.contains("China"))
]
# 生成文件列表
with open("filelist.txt", "w") as f:
for _, row in high_quality.iterrows():
f.write(f"{row['path']}\n")
5. 其他实用中文数据集
5.1 AISHELL系列
AISHELL-1和AISHELL-3是两个专业级数据集:
- AISHELL-1:178小时,400发音人
- AISHELL-3:85小时,218发音人,专为语音合成设计
下载需要填写申请表格,但审批速度很快。我去年用AISHELL-3做的多说话人合成系统,效果相当不错。
5.2 ST-CMDS
这是一个免费的300小时中文语音识别数据集,由深圳市智能语音技术有限公司发布。数据特点:
- 纯净录音环境
- 覆盖多种话题
- 文本标注准确
下载地址:
bash复制wget http://www.openslr.org/resources/38/ST-CMDS-20170001_1-OS.tar.gz
6. 数据集处理实战技巧
6.1 数据预处理流程
处理中文语音数据的标准流程应该是:
- 格式转换(如FLAC转WAV)
- 采样率统一
- 静音切除
- 音量归一化
- 数据增强(可选)
我常用的处理命令:
bash复制# 使用sox进行格式转换和重采样
for f in *.flac; do
sox "$f" -r 16000 "${f%.*}.wav"
done
# 使用ffmpeg批量处理
find . -name "*.mp3" -exec ffmpeg -i {} -ar 16000 -ac 1 {}.wav \;
6.2 数据标注处理
中文标注文件通常需要特殊处理:
- 转换编码(GBK到UTF-8)
- 统一标点符号
- 处理多音字
- 分词处理
一个实用的Python处理示例:
python复制import jieba
def process_text(text):
# 去除特殊符号
text = re.sub(r"[^\u4e00-\u9fa5a-zA-Z0-9]", "", text)
# 分词处理
return " ".join(jieba.cut(text))
7. 数据集选择与应用建议
根据我的项目经验,不同任务最适合的数据组合是:
- 语音识别:THCHS-30 + AISHELL-1 + Common Voice
- 说话人识别:CN-Celeb + VoxCeleb
- 语音合成:AISHELL-3 + THCHS-30
存储方面,建议使用NAS或大容量SSD。我现在的数据服务器配置是:
- 16TB RAID5存储
- 自动备份到云端
- 定期校验数据完整性
最后提醒新手开发者,使用数据时一定要注意版权声明。有些数据集允许商用,有些则仅限于学术研究。我在处理CN-Celeb时就遇到过授权问题,后来通过联系清华大学数据团队才解决。