中英混合课堂语音识别:TAL_CSASR 数据集解析与 PaddleSpeech U2/Conformer 全流程实战
人工智能语音音频NLP媒体生成【免费下载链接】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/paddlepaddle/PaddleSpeech点击查看免费下载TAL_CSASR 是 PaddleSpeech 仓库内置支持的一个面向**中英混合语音识别Code-Switching ASR**的真实教学场景数据集语料为英语教师课堂音频单条音频内同时混有中文与英文。本文以 dataset/tal_cs/README.md 为骨架结合仓库中完整的数据处理脚本与examples/tal_cs/asr1示例系统讲解该数据集的统计特征、内部结构、manifest 生成原理以及从数据预处理、模型训练到评测与单音频推理的完整 U2Transformer/Conformer实战链路帮助你直接复现中英混合 ASR 的训练与部署。一、数据集总览一条 587 小时的英语课堂语音TAL_CSASRTAL English Class Audio Speech Recognition由好未来TAL提供属于英语课堂授课场景下的真实录音。依据 dataset/tal_cs/README.md 的原始说明其核心统计信息如下属性数值总量587 小时训练集 555.9H开发集 8H测试集 23.6H采样率16000 Hz采样位深16 bit录音设备麦克风说话人数量200录音时间2019 年数据格式音频.wav标注文本.txt单条音频时长1–60 秒数据类型英语教师课堂教学音频文件体积63.36 GB语言构成中英混合语音Chinese English code-switching从这几项指标可以看出该数据集的两个突出特点一是规模足够支撑深度模型的训练训练集超过 555 小时二是天然面向真实课堂录音单说话人、麦克风采集、时长 1–60 秒跨度大非常适合评测中英混合场景下的端到端 ASR 效果。二、数据集核心特征中英混合与 13:1 语种配比与常见的单语种开源语音库如纯中文的 AISHELL、纯英文的 LibriSpeech不同TAL_CSASR 的核心价值在于语码混合Code-Switching句内混合intra-sentence mixing同一句话内中英文交替出现例如中文句式中夹带英文单词这对声学模型与语言模型的建模都提出了更高要求句间混合inter sentence mixing不同句子之间中英文切换语种配比数据集中中文字符与英文单词的数量之比约为 13:1即整体仍以中文为主体、英文为点缀符合中国课堂“中文讲解、穿插英文术语”的真实分布。每一条音频只包含一个说话人避免了多人对话场景带来的说话人混淆干扰使模型能够更专注于中英混合语音本身的声学与语言建模。上述语料均为英语教师的教学录音因此发音清晰、语义连贯适合作为 Code-Switching ASR 的基准数据集。三、数据目录结构与下载校验该数据集需从官方渠道下载原始压缩包后自行解压。仓库中的 examples/tal_cs/asr1/local/data.sh 给出了下载后的预期目录与校验信息解压后目录应位于dataset/tal_cs/TALCS_corpus以仓库根目录为基准即${MAIN_ROOT}/dataset/tal_cs/TALCS_corpus脚本内置了数据的 MD5 参考值4c879b3c9c05365fc9dee1fc68713afe可用于下载完整性校验若目录缺失data.sh会直接提示先完成下载与解压再继续。TALCS_corpus内部按用途分为三个子集目录train_set、dev_set、test_set。每个子集目录下包含wav/音频子目录与一个label.txt标注文件标注文件的每一行为“音频 ID 转写文本”的格式。这一点由数据处理脚本 dataset/tal_cs/tal_cs.py 中的读取逻辑可以确认脚本通过wav_dir os.path.join(data_dir, wav)与text_filepath os.path.join(data_dir, label.txt)定位音频与标注。四、从原始语料到 manifesttal_cs.py 源码级解析PaddleSpeech 采用manifestJSON Lines作为数据统一入口每一行描述一条音频的路径、时长与转写文本。负责把 TAL_CSASR 原始数据转换为 manifest 的正是 dataset/tal_cs/tal_cs.py其命令行接口如下python dataset/tal_cs/tal_cs.py --target_dir TALCS_corpus路径 --manifest_prefix 输出前缀其中--target_dir存放TALCS_corpus的目录脚本会据此拼接出train_set、dev_set、test_set三个子集路径--manifest_prefixmanifest 输出前缀最终生成manifest.train.raw、manifest.dev.raw、manifest.test.raw三个文件。脚本对每个子集调用create_manifest(data_dir, manifest_path)其核心处理逻辑为见 dataset/tal_cs/tal_cs.py遍历wav/目录下的音频文件逐行读取label.txt将首列为音频 ID、其余列为转写文本并将文本统一转为小写text .join(segments[1:]).lower()使用soundfile读取音频通过float(len(audio_data)) / samplerate计算精确时长由音频文件名解析说话人 IDutt2spk -.join(utt.split(-)[:2])即取文件名中前两段作为说话人标识为每条音频输出一行 JSON字段包括字段含义utt音频 ID文件名去扩展名utt2spk说话人 ID文件名前两段拼接feat音频绝对路径feat_shape音频时长秒如[6.23]text小写化后的转写文本同时脚本会为每个子集额外生成一个.meta文件如train_set.meta统计该子集的 utt 总数、总时长小时、总字符数、每秒字符数与每条音频平均时长便于快速核对数据质量。五、PaddleSpeech 中的完整实战examples/tal_cs/asr1仓库在 examples/tal_cs/asr1 提供了基于 TAL_CSASR 训练U2 模型Transformer/Conformer 混合 CTC/Attention 架构的完整示例所有环节通过run.sh的多个 stage 编排。先加载环境变量与参数解析支持. ./path.sh source ${MAIN_ROOT}/utils/parse_options.shpath.sh负责设置MAIN_ROOT、PATH、PYTHONPATH并将模型相关二进制目录指向paddlespeech/s2t/exps/u2/bin。parse_options.sh则支持以--变量 值的方式覆盖脚本参数。run.sh中的可调局部变量及含义如下变量含义gpus训练使用的 GPU 编号置空表示仅用 CPUstage/stop_stage起始 / 结束阶段编号conf_path模型配置文件路径如conf/conformer.yamldecode_conf_path解码配置路径如conf/tuning/decode.yamlavg_numTop-K 模型平均的 K 值ckptcheckpoint 前缀默认取自配置文件名如conformeraudio_file单音频推理stage 4输入的音频路径各阶段功能如下表Stage功能0数据处理生成 manifest、计算 CMVN、构建词表、训练 sentencepiece 模型1模型训练2Top-K 模型参数平均得到最终模型3在测试集上评测最终模型4对单个音频文件推理阶段范围可按需组合例如# 只做数据预处理 bash run.sh --stage 0 --stop_stage 0 # 从数据到训练 bash run.sh --stage 0 --stop_stage 1 # 数据 训练 平均 评测全流程 bash run.sh --stage 0 --stop_stage 3 # 指定 GPU 与平均个数 bash run.sh --gpus 0,1 --avg_num 105.1 Stage 0数据处理Stage 0 调用bash ./local/data.sh其内部包含四个子阶段见 examples/tal_cs/asr1/local/data.sh子阶段 -1调用dataset/tal_cs/tal_cs.py生成三个原始 manifestmanifest.train.raw等子阶段 0用 utils/compute_mean_std.py 基于训练集原始 manifest 计算 80 维 fbank 特征的均值方差写入data/mean_std.json参数--feat_dim80、--sample_rate16000、--stride_ms20、--window_ms30子阶段 1用 utils/build_vocab.py 基于训练集构建SentencePiece 子词词表词表规模nbpe11297、模式bpe输出data/lang_char/vocab.txt与bpe_bpe_11297.model/.vocab子阶段 2用 utils/format_data.py 并行处理 train/dev/test 三个子集将文本映射为 token id、附带 CMVN 信息输出最终的manifest.train、manifest.dev、manifest.test。处理完成后data/目录结构如下data/ |-- dev_set.meta |-- lang_char | -- bpe_bpe_11297.model | -- bpe_bpe_11297.vocab | -- vocab.txt |-- manifest.dev |-- manifest.dev.raw |-- manifest.test |-- manifest.test.raw |-- manifest.train |-- manifest.train.raw |-- mean_std.json |-- test_set.meta -- train_set.meta5.2 Stage 1模型训练CUDA_VISIBLE_DEVICES${gpus} ./local/train.sh ${conf_path} ${ckpt}训练入口为 examples/tal_cs/asr1/local/train.sh模型实现位于paddlespeech/s2t/exps/u2/bin。若仅用 CPU 训练可执行. ./path.sh bash ./local/data.sh CUDA_VISIBLE_DEVICES ./local/train.sh conf/conformer.yaml conformer5.3 Stage 2Top-K 模型平均avg.sh best exp/${ckpt}/checkpoints ${avg_num}训练过程中每个 epoch 都会保存 checkpointavg.sh位于utils/会按验证损失选出最优的 K 个模型并对其参数取平均得到exp/${ckpt}/checkpoints/avg_${avg_num}作为最终模型。示例默认avg_num10。5.4 Stage 3测试集评测CUDA_VISIBLE_DEVICES0 ./local/test.sh ${conf_path} ${decode_conf_path} exp/${ckpt}/checkpoints/${avg_ckpt}评测脚本会依据 conf/tuning/decode.yaml 中的解码配置在测试集上打分。该配置目录下同时提供了chunk_decode.yaml用于流式chunk解码评测对应 chunk conformer 模型。5.5 Stage 4单音频推理CUDA_VISIBLE_DEVICES0 ./local/test_wav.sh ${conf_path} ${decode_conf_path} exp/${ckpt}/checkpoints/${avg_ckpt} ${audio_file}对单个.wav文件做端到端识别。需要注意音频采样率必须为16 kHz。仓库提供了示例音频存放于data/demo_01_03.wav准备好 16K 音频后可直接运行上述命令查看识别结果。六、模型配置解析conf/conformer.yaml训练核心配置位于 examples/tal_cs/asr1/conf/conformer.yaml关键参数如下编码器Conformer参数值说明encoderconformer编码器类型output_size512attention 维度attention_heads8注意力头数linear_units2048前馈网络隐层单元数num_blocks12编码器 block 数input_layerconv2d输入下采样层类型可选 conv2d/conv2d6/conv2d8cnn_module_kernel15卷积模块核大小pos_enc_layer_typerel_pos相对位置编码selfattention_layer_typerel_selfattn相对位置自注意力解码器Transformerattention_heads8、linear_units2048、num_blocks6、dropout_rate0.1。混合 CTC/Attentionmodel_conf参数值说明ctc_weight0.3CTC 与 attention 损失的权重配比lsm_weight0.1标签平滑系数length_normalized_lossfalse是否按长度归一化损失init_typekaiming_uniform参数初始化方式数据与 Dataloaderfeat_dim80、stride_ms20.0、window_ms30.0、unit_typespm、spm_model_prefixdata/lang_char/bpe_bpe_11297、vocab_filepathdata/lang_char/vocab.txtbatch_size5maxlen_in512、maxlen_out150超出时自动缩减 batchnum_workers2sortagrad0。训练策略n_epoch100、accum_grad4、global_grad_clip5.0优化器 Adamlr0.002、weight_decay1e-6学习率调度warmuplrwarmup_steps25000checkpoint 策略kbest_n50、latest_n5。同时 examples/tal_cs/asr1/conf/preprocess.yaml 负责特征前处理与数据增强如 spec_aug的配置。七、实验结果与预训练模型examples/tal_cs/asr1/RESULTS.md 记录了仓库维护者复现的实验结果Conformer 47.63M 参数100 epoch3×V100-32GTop-10 平均含 spec_aug 增强在测试集上不同解码方式的词错误率MER如下模型解码方式LossMERconformerattention9.85090.102786conformerctc_greedy_search9.85090.103538conformerctc_prefix_beam_search9.85090.103317conformerattention_rescoring9.85090.084374chunk_conformerattention9.89710.080488chunk_conformerctc_greedy_search9.89710.093244chunk_conformerctc_prefix_beam_search9.89710.093251chunk_conformerattention_rescoring9.89710.079193可以看到attention_rescoringCTC 前缀束搜索 attention 重打分在该数据集上效果最佳且支持流式推理的 chunk_conformer 在保持流式能力的同时 MER 与全量 conformer 基本持平甚至更优说明 conf/chunk_conformer.yaml 配置的流式模型已经具备工程实用性。对于不想自行训练的用户可以在 docs/source/released_model.md 中查看并下载基于 TAL_CSASR 训练的 Transformer / Conformer 预训练模型。下载解压后将预训练 checkpoint 置于exp/目录即可用测试或单音频推理脚本直接加载使用例如对exp/conformer/checkpoints/avg_10执行./local/test.sh conf/conformer.yaml conf/tuning/decode.yaml exp/conformer/checkpoints/avg_10。八、总结与延伸TAL_CSASR 为 Code-Switching ASR 提供了真实、规模化587H、200 说话人、13:1 中英配比的课堂语音基准。围绕它PaddleSpeech 不仅内置了 dataset/tal_cs/tal_cs.py 一键式 manifest 生成脚本还提供了 examples/tal_cs/asr1 从数据、训练、平均、评测到单音频推理的完整可复现流水线并同时支持全量 Conformer 与流式 Chunk Conformer 两种模型形态。若要进一步扩展可参考 examples/tal_cs/asr1/local/data.sh 调整 fbank 维数、SPM 词表规模nbpe或 conf/conformer.yaml 中的网络超参以适配不同的中英混合任务规模与延迟要求。赞分享人工智能语音音频NLP媒体生成【免费下载链接】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/paddlepaddle/PaddleSpeech点击查看免费下载相关推荐PaddleSpeech 基于 TAL_CSASR 中英混合教学语音数据集训练 U2Conformer/TransformerASR 模型实战指南PaddleSpeech 基于 TAL_CSASR 中英混合教学语音数据集训练 U2Conformer/TransformerASR 模型实战指南 TAL_人工智能语音音频PaddleSpeech U2/U2-Kaldi 语音识别模型训练入口与训练流程深度解析PaddleSpeech U2/U2 Kaldi 语音识别模型训练入口与训练流程深度解析 导读 本文以 PaddleSpeech 中 paddlespeech.人工智能语音音频NLP媒体生成PaddleSpeech multi-cn 中文多语料语音识别配方解析从 OpenSLR 数据合并到流式 Conformer 部署PaddleSpeech multi cn 中文多语料语音识别配方解析从 OpenSLR 数据合并到流式 Conformer 部署 PaddleSpeech人工智能语音音频NLP媒体生成创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考