ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

PaddleSpeech Multi-CN 全量中文语料整合方案:OpenSLR 多数据集联合训练中文语音识别模型

PaddleSpeech Multi-CN 全量中文语料整合方案:OpenSLR 多数据集联合训练中文语音识别模型 PaddleSpeech Multi-CN 全量中文语料整合方案OpenSLR 多数据集联合训练中文语音识别模型【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址: https://gitcode.com/gh_mirrors/pa/PaddleSpeechPaddleSpeech 仓库中的dataset/multi_cn/README.md定义了一个面向中文语音识别ASR的大规模数据整合方案将 OpenSLR 平台上开放的全部中文语料合并为统一训练集约 1200 小时用于训练覆盖多口音、多录制环境的通用中文识别模型。本文围绕该方案完整梳理其包含的 7 个语料含可选的 AISHELL2、统一的数据准备与 Manifest 生成流水线、标准 ASR 训练 recipe 各阶段以及仓库中配套发布的conformer_online_multicn预训练模型与 CLI 推理用法帮助读者理解并复现多语料联合训练的完整路径。Multi-CN 方案概览为什么要整合全部 OpenSLR 中文语料单个开源中文语料规模普遍偏小从 THCHS-30 的 26 小时到 MagicData 的 700 小时不等单独训练容易过拟合、泛化不足。Multi-CN 的核心思路是把 OpenSLR 上公开可获取的中文普通话语料全部纳入同一个训练任务形成规模更大、口音与录制条件更多样的训练集从而提升识别模型在真实场景下的鲁棒性。根据 dataset/multi_cn/README.mdMulti-CN 训练集包含以下语料语料时长来源OpenSLR 资源号仓库中对应目录Aidatatang140 小时OpenSLR 62dataset/aidatatang_200zhAishell151 小时OpenSLR 33dataset/aishellMagicData712 小时OpenSLR 68dataset/magicdataPrimewords99 小时OpenSLR 47dataset/primewordsST-CMDS110 小时OpenSLR 38dataset/st-cmdsTHCHS-3026 小时OpenSLR 18dataset/thchs30AISHELL2可选约 1000 小时—需自行获取授权数据当前仓库快照中未包含六项必选语料合计约 1238 小时若加入 AISHELL2 则总规模可达 2200 小时。这个组合覆盖了电话信道Aidatatang、安静室内朗读Aishell/MagicData、手机录制Primewords/MagicData、多口音说话人MagicData 的 1080 名来自不同方言区说话人等多种数据形态。各子语料详解数据来源与语料特征Multi-CN 的每个子语料都来自 OpenSLR 公开语料库各有独立的数据格式与文本标注规范。理解这些差异是正确执行数据准备的前提。Aidatatang140 小时Aidatatang_200zh 是 Aidatatang 公司发布的 200 小时中文电话录音语料其下载、解压与 Manifest 生成逻辑在 dataset/aidatatang_200zh/aidatatang_200zh.py 中实现下载地址基于http://www.openslr.org/resources/62压缩包为aidatatang_200zh.tgz官方 MD5 为6e0f4f39cd5f667a7ee53c397c8d0949音频位于解压后的corpus/{train,dev,test}目录下文本标注为transcript/aidatatang_200_zh_transcript.txt处理脚本读取标注文件构建audio_id - text映射并对文本做去空白处理text .join(text.split())即所有文本统一为无空格的字级文本。Aishell151 小时Aishell 由北京希尔贝壳科技有限公司发布是 PaddleSpeech 中文 ASR 最常用的基准语料。实现位于 dataset/aishell/aishell.py数据来自 OpenSLR 33包含data_aishell.tgz音频与标注和resource_aishell.tgz词典等资源两个压缩包音频目录结构为wav/{train,dev,test}标注文件为transcript/aishell_transcript_v0.8.txt该脚本内置了check_dataset()完整性校验其中一条关键断言是所有音频采样率必须为 16000 Hzassert samplerate 16000这正是 Multi-CN 联合训练对统一 16k 采样率这一基本要求的代码级体现。MagicData712 小时MagicData 是 Multi-CN 中体量最大的单一语料。其语料说明见 dataset/magicdata/README.md由魔音科技开发并免费供非商业使用约 755 小时语音、1080 位来自中国不同方言区的说话人、句子转写准确率高于 98%、安静室内录制训练/验证/测试集按 51:1:2 划分文本领域涵盖交互问答、音乐搜索、SNS 消息、家居指令控制等Multi-CN 整合时按 712 小时计入。Primewords99 小时语料说明见 dataset/primewords/README.md由上海普适信息技术有限公司发布的免费中文普通话语料由 296 位母语者使用智能手机录制转写准确率在 95% 置信度下高于 98%标注与音频的映射以 JSON 格式给出可免费用于学术研究。ST-CMDS110 小时ST-CMDSFreeST语料入口见 dataset/st-cmds/README.md为 OpenSLR 38 号资源的免费中文普通话朗读语料。THCHS-3026 小时THCHS-30 是清华大学发布的中文语音数据库其语料布局在 dataset/thchs30/README.md 中有完整描述音频为*.wav标注为同名的*.wav.trn文件且trn文件内含三行文本词级文本、音节级文本、音素级文本{train,dev,test}目录中通过符号链接组织数据划分处理脚本 dataset/thchs30/thchs30.py 通过read_trn()读取三行标注并将词级文本写入 Manifest 的text字段、音节与音素分别写入syllable、phone字段——这意味着 Multi-CN 中 THCHS-30 贡献了额外的音节/音素标注可服务于对齐等下游任务。AISHELL2可选约 1000 小时Multi-CN 方案把 AISHELL2 列为可选语料。它不通过 OpenSLR 直接分发需要使用者自行获取授权后并入训练集因此整合脚本将其设计为可选项。从当前仓库快照看dataset 目录下并未内置 AISHELL2 的预处理脚本读者需自行按统一 Manifest 规范将其转换后合并。数据准备流水线下载、MD5 校验与统一 Manifest 生成Multi-CN 之所以能把不同格式的语料无缝合并依赖的是 PaddleSpeech 统一的数据准备流水线每个语料都最终转换成相同 schema 的 JSONL Manifest 文件。底层下载工具所有语料的下载与解压都复用了 paddlespeech/dataset/download.py 中的通用函数download(url, md5sum, target_dir)调用wget -c断点续传下载下载后计算文件 MD5 并与官方值比对check_md5sum不一致则抛出RuntimeError(MD5 checksum failed.)文件已存在且校验通过时直接跳过download_multi(url, target_dir, extra_args)支持带额外参数如证书选项的批量下载unpack/unzip分别解压 tar 包与 zip 包rm_tar参数可控制在解压后删除压缩包以节省磁盘。统一的 Manifest 格式各语料处理脚本最终都生成每行一个 JSON 对象的 Manifest 文件字段完全一致以 dataset/aishell/aishell.py 为例{ utt: 音频 ID, utt2spk: 说话人 ID, feat: 音频绝对路径, feat_shape: [时长(秒)], text: 字级转写文本 }其中feat_shape记录音频时长秒text统一为去空白的字符级文本。THCHS-30 额外扩展syllable、phone两个字段。同时每个划分都会生成.meta统计文件如train.meta记录该划分的 utts 数量、总时长小时、总文本长度、text/sec、sec/utt 等指标便于训练前快速核验数据规模。整合要点从上述脚本可以归纳出 Multi-CN 联合训练的三条数据规范统一采样率Aishell 脚本显式断言 16 kHz其余语料在准备阶段同样被转写为 16k WAV保证多语料可共用同一特征提取配置统一文本粒度所有语料的text字段均为字符级中文文本无需词表对齐即可共享同一 vocab统一 Manifest schemautt / utt2spk / feat / feat_shape / text五元组结构使训练代码无需感知数据来自哪个语料。基于 Multi-CN 的 ASR 模型训练标准 recipe 各阶段仓库当前快照中Multi-CN 训练的具体 run.sh 未随 dataset/multi_cn 目录分发该目录仅包含 README但 PaddleSpeech 所有 ASR recipe 遵循同一套分阶段脚本模板以 examples/aishell/asr1/README.md 描述的标准流程为参照Multi-CN 的训练同样采用如下阶段划分阶段功能对应操作Stage 0数据处理下载语料 → 计算训练集 CMVN 统计量 → 生成词表 → 生成 train/dev/test 的 ManifestStage 1模型训练以 conf 中的 yaml 配置启动 U2Transformer/Conformer模型训练Stage 2Top-k 模型平均对验证集表现最好的 k 个 checkpoint 参数求平均得到最终模型Stage 3模型测试用最终模型在测试集上评估 CER/WERStage 4CTC 对齐获取测试音频与文本的 CTC 对齐结果Stage 5单条音频推理对单个 wav 文件做识别阶段式脚本通过stage与stop_stage两个变量控制执行区间例如只做数据准备可运行bash run.sh --stage 0 --stop_stage 0从训练跑到测试则用bash run.sh --stage 0 --stop_stage 3。环境变量集中在path.sh中脚本参数解析由utils/parse_options.sh支持。Stage 0 涉及的三个核心工具均在仓库中有实现特征均值/方差统计paddlespeech/dataset/s2t/compute_mean_std.py词表构建paddlespeech/dataset/s2t/build_vocab.pyManifest 格式化raw → 正式格式paddlespeech/dataset/s2t/format_data.py 与 utils/format_data.py。Stage 2 的模型平均由 utils/avg.sh底层调用 utils/avg_model.py完成Stage 3 的指标计算可用 utils/compute-wer.py 统计字错误率CER。预训练模型conformer_online_multicn 及其推理用法Multi-CN 方案的落地成果之一是仓库中发布的在线流式Conformer 中文识别预训练模型其注册信息位于 paddlespeech/resource/pretrained_models.py 的conformer_online_multicn-zh-16k条目下配置项版本 1.0版本 2.0模型包asr1_chunk_conformer_multi_cn_ckpt_0.2.0.model.tar.gzasr1_chunk_conformer_multi_cn_ckpt_0.2.3.model.tar.gz模型配置model.yamlmodel.yamlcheckpoint 路径exp/chunk_conformer/checkpoints/multi_cn同左权重文件—exp/chunk_conformer/checkpoints/multi_cn.pdparams可选语言模型—中文 N-gram LMzh_giga.no_cna_cmn.prune01244.klm从命名可以看出该模型采用Chunk Conformer 架构Encoder 为 Conformer、Decoder 为 Transformer、解码方式为 Attention rescoring支持块式流式解码在 demos/speech_recognition/README.md 的预训练模型列表中登记为conformer_online_multicn语言为 zh、采样率 16k、不支持中英混说Code Switch 为 False。命令行推理安装 PaddleSpeech 后可通过paddlespeech asr命令直接使用该模型识别 16k 采样率的中文 wav 文件paddlespeech asr --model conformer_online_multicn --lang zh --sample_rate 16000 --input ./zh.wav -v其中-v用于打印详细日志--input指定待识别音频。该命令会自动从模型注册表下载模型包并解压到exp/chunk_conformer/checkpoints/multi_cn。若将输出通过管道交给标点恢复任务即可形成语音识别 标点还原的完整链路参考 demos/speech_recognition/README.md 中的paddlespeech asr --input ./zh.wav -v | paddlespeech text --task punc -v。Python API 推理在 Python 中可通过ASRExecutor完成同样的推理import paddle from paddlespeech.cli.asr import ASRExecutor asr_executor ASRExecutor() text asr_executor( modelconformer_online_multicn, langzh, sample_rate16000, configNone, # 置 None 表示使用预训练模型自带配置 ckpt_pathNone, audio_file./zh.wav, force_yesFalse, devicepaddle.get_device()) print(ASR Result: \n{}.format(text))语言模型增强版本 2.0 的模型条目同时注册了中文 N-gram 语言模型zh_giga.no_cna_cmn.prune01244.klm。根据 docs/source/released_model.md 的说明该 LM 为基于字符的 Mandarin LM Small约 0.13 billion n-grams可在解码阶段通过 LM 重打分进一步提升中文识别准确率。注意 LM 文件体积较大约 2.8 GB仅在需要时下载。使用注意事项与限制磁盘与网络开销全部必选语料合计超 1200 小时音频下载总量在百 GB 量级且各压缩包均校验 MD5请保证网络稳定与充足磁盘空间采样率要求推理与训练均面向 16 kHz 音频输入 wav 不满足时需先重采样CLI 可通过--yes参数接受自动转换或自行用 sox 处理许可合规MagicData 等语料仅限非商业/学术用途AISHELL2 需单独获取授权商用场景请自行确认各语料的许可证条款可选语料处理AISHELL2 未内置预处理脚本接入时需按前文统一的 Manifest schema 自行转换并与既有语料合并后重算 CMVN 与词表静态模型导出PaddleSpeech 从 PaddlePaddle 2.5.0 支持 0-D tensor 后旧版静态图模型不再直接可用部署前需重新导出docs/source/released_model.md 顶部亦有说明。小结Multi-CN 是 PaddleSpeech 中以数据规模换泛化能力的代表性方案通过把 Aidatatang、Aishell、MagicData、Primewords、ST-CMDS、THCHS-30以及可选的 AISHELL2六七个 OpenSLR 中文语料统一为 16k、字级、相同 Manifest schema 的训练集支撑训练出覆盖多口音、多信道的通用中文识别模型conformer_online_multicn并提供从数据准备、CMVN/词表构建、标准分阶段训练 recipe 到在线推理与 LM 增强的完整工具链。读者既可以直接使用预训练模型快速落地中文语音转写也可以参照本文所述的数据规范与 recipe 结构自行扩展语料重新训练定制模型。/DSMLparameter /DSMLinvoke /DSMLtool_calls【免费下载链接】PaddleSpeechEasy-to-use Speech Toolkit including Self-Supervised Learning model, SOTA/Streaming ASR with punctuation, Streaming TTS with text frontend, Speaker Verification System, End-to-End Speech Translation and Keyword Spotting. Won NAACL2022 Best Demo Award.项目地址: https://gitcode.com/gh_mirrors/pa/PaddleSpeech创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表