
人工智能語音音頻深度學習NLP【免費下載鏈接】espnetEnd-to-End Speech Processing Toolkit項目地址https://gitcode.com/gh_mirrors/es/espnet點擊查看免費下載導(dǎo)讀本文圍繞 ESPnet 開源倉庫中的egs2/ta_openslr127/asr1recipe完整講解如何基于 IISc-MILE Tamil ASR CorpusOpenSLR 127約 150 小時朗讀泰米爾語音訓練端到端語音識別系統(tǒng)。全文以該 recipe 的 README.md 為骨架結(jié)合 run.sh、train_asr.yaml、decode_asr.yaml 等配置與源碼實現(xiàn)覆蓋數(shù)據(jù)劃分、BPE 子詞建模、模型架構(gòu)選型、訓練與解碼配置、評測指標解讀、以及結(jié)果復(fù)現(xiàn)與預(yù)訓練模型使用等完整鏈路。讀完本文你將掌握如何在 ESPnet2 中復(fù)現(xiàn)該泰米爾語 ASR 基線并具備將其遷移到其他低資源語言的實操能力。一、任務(wù)背景OpenSLR 127 語料與 recipe 概覽1.1 語料構(gòu)成IISc-MILE Tamil ASR CorpusOpenSLR 127是印度 IISc 機器學習與交互實驗室MILE發(fā)布的朗讀式泰米爾語語音數(shù)據(jù)庫約 150 小時語音音頻統(tǒng)一為16 kHz / 16-bit / mono PCM格式。語料來源包含三個子庫MILE、ISTL、MICI。從 local/data.sh 可以看到語料包的下載地址與結(jié)構(gòu)約定data_urlhttps://www.openslr.org/resources/127/mile_tamil_asr_corpus.tar.gz corpus${TAMIL}/mile_tamil_asr_corpus解壓后語料目錄下包含train/與test/兩個官方劃分每個劃分內(nèi)各有audio_files/與trans_files/兩個子目錄——音頻文件與轉(zhuǎn)錄文本一一對應(yīng)。1.2 recipe 目錄結(jié)構(gòu)egs2/ta_openslr127/asr1遵循 ESPnet2 標準 recipe 布局路徑作用run.sh頂層入口調(diào)用標準asr.sh訓練/解碼腳本asr.sh標準 ASR pipeline數(shù)據(jù)準備、特征、BPE、訓練、解碼local/data.sh語料下載與data/{train_ta,dev_ta,test_ta}構(gòu)建local/data_prep.py生成 Kaldi 風格數(shù)據(jù)目錄的核心腳本conf/train_asr.yamlASR 模型E-Branchformer Transformer訓練配置conf/decode_asr.yaml解碼beam search LM 淺融合配置conf/train_lm.yaml附加神經(jīng) LM 訓練配置conf/fbank.conf前端 log-mel 特征參數(shù)二、數(shù)據(jù)劃分speaker-disjoint 的 train / dev / test2.1 三集合規(guī)模README.md 給出的數(shù)據(jù)劃分如下setutterances說明train_ta69,957官方訓練集去除 dev 說話人后經(jīng)過長度過濾dev_ta7,329從訓練集中按說話人無重疊地留出 10%test_ta12,087官方測試集2.2 劃分實現(xiàn)細節(jié)劃分邏輯實現(xiàn)在 local/data_prep.py 中關(guān)鍵點有三說話人 ID 提取語料文件名格式為SRC_speaker_lineindexget_speaker_id()取前兩段作為說話人 IDparts basename.split(_) return _.join(parts[:2])說話人級無重疊切分以dev_ratio0.1在 data.sh 中定義的比例從訓練集說話人列表中隨機抽取約 10% 的說話人作為 dev 集保證 dev 與 train 之間沒有說話人重疊避免說話人泄露導(dǎo)致評測虛高spks sorted({spk for spk, _, _ in train_all.values()}) Random(args.seed).shuffle(spks) n_dev max(1, int(len(spks) * args.dev_ratio)) dev_spks set(spks[:n_dev])數(shù)據(jù)目錄寫出write_data_dir()為標準 Kaldi 風格目錄生成text、wav.scp、utt2spk三個文件隨后 data.sh 再調(diào)用utils/utt2spk_to_spk2utt.pl生成spk2utt并用utils/fix_data_dir.sh校驗修復(fù)。注意README 中train_ta標注的 after length filtering 由后續(xù)run.sh中的--max_wav_duration 30等參數(shù)在標準 pipeline 內(nèi)完成過濾。三、入口腳本 run.sh一行命令跑通全流程run.sh 是所有操作的入口它把關(guān)鍵超參以命令行參數(shù)形式傳給標準asr.shtrain_settrain_ta valid_setdev_ta test_setsdev_ta test_ta asr_configconf/train_asr.yaml inference_configconf/decode_asr.yaml lm_configconf/train_lm.yaml ./asr.sh \ --lang ta \ --ngpu 1 \ --nj 16 \ --gpu_inference true \ --inference_nj 1 \ --token_type bpe \ --nbpe 1000 \ --bpemode unigram \ --max_wav_duration 30 \ --speed_perturb_factors 0.9 1.0 1.1 \ --feats_type raw \ --use_lm true \ --lm_config ${lm_config} \ --asr_config ${asr_config} \ --inference_config ${inference_config} \ --train_set ${train_set} \ --valid_set ${valid_set} \ --test_sets ${test_sets} \ --bpe_train_text data/${train_set}/text \ --lm_train_text data/${train_set}/text $3.1 參數(shù)逐項解讀參數(shù)取值含義--lang tata語言標簽用于目錄命名--ngpu 11單卡訓練--nj 1616并行任務(wù)數(shù)特征提取等--gpu_inference truetrue解碼時使用 GPU--inference_nj 11解碼并行度--token_type bpebpe采用 BPE 子詞建模--nbpe 10001000BPE 詞表規(guī)模為 1000低資源場景的合理選擇--bpemode unigramunigram使用 SentencePiece 的 unigram 算法訓練 BPE--max_wav_duration 3030訓練樣本最長 30 秒超出將被過濾--speed_perturb_factors0.9 1.0 1.1三倍速擾動數(shù)據(jù)增強--feats_type rawraw使用原始波形 前端在線提取特征log-mel--use_lm truetrue訓練并淺融合神經(jīng) LM3.2 先決條件填寫 db.sh運行run.sh前需在 db.sh 中確認TAMIL變量。recipe 默認TAMILdownloads允許腳本自動下載語料。若未設(shè)置該變量data.sh 會報錯退出if [ -z ${TAMIL} ]; then log Fill the value of TAMIL in db.sh exit 1 fi四、模型架構(gòu)E-Branchformer 編碼器 Transformer 解碼器 混合 CTC/Attention4.1 總體設(shè)計根據(jù) README.md本 recipe 采用E-Branchformer 編碼器 Transformer 解碼器混合 CTC/attentionctc_weight0.3raw log-mel 前端BPE-1000unigram無外部 LM。訓練配置是從egs2/librispeech_100/asr1適配而來。對比兩個 recipe 的 train_asr.yaml 與 librispeech_100 的 train_asr.yaml模型結(jié)構(gòu)與訓練超參完全一致僅語料規(guī)模與數(shù)據(jù)路徑不同——這是低資源語料遷移成熟 recipe 的標準做法。4.2 編碼器配置E-Branchformerencoder: e_branchformer encoder_conf: output_size: 256 attention_heads: 4 attention_layer_type: rel_selfattn pos_enc_layer_type: rel_pos rel_pos_type: latest cgmlp_linear_units: 1024 cgmlp_conv_kernel: 31 use_linear_after_conv: false gate_activation: identity num_blocks: 12 dropout_rate: 0.1 positional_dropout_rate: 0.1 attention_dropout_rate: 0.1 input_layer: conv2d layer_drop_rate: 0.0 linear_units: 1024 positionwise_layer_type: linear use_ffn: true macaron_ffn: true merge_conv_kernel: 31從源碼結(jié)構(gòu)看E-Branchformer 的實現(xiàn)位于 espnet2/asr/encoder/e_branchformer_encoder.py其核心是EBranchformerEncoderLayer第 58 行與EBranchformerEncoder第 191 行。E-Branchformer 在傳統(tǒng) Branchformer 的基礎(chǔ)上將主干分支進一步分為全局上下文分支基于相對位置自注意力rel_selfattnrel_posrel_pos_type: latest與局部卷積分支CGMLPcgmlp_conv_kernel: 31并通過合并卷積merge_conv_kernel: 31融合兩分支輸出。該架構(gòu)兼顧全局建模與局部細節(jié)捕獲是當前 ESPnet 中的主流高效編碼器。關(guān)鍵參數(shù)含義參數(shù)取值作用output_size256編碼器輸出維度attention_heads4注意力頭數(shù)cgmlp_linear_units1024CGMLP 前饋中間層維度cgmlp_conv_kernel/merge_conv_kernel31卷積核寬度num_blocks12編碼器層數(shù)use_ffn/macaron_ffntrue是否使用 FFN / macaron FFN 分支input_layerconv2d前端 conv2d 下采樣4.3 解碼器配置Transformerdecoder: transformer decoder_conf: attention_heads: 4 linear_units: 2048 num_blocks: 6 dropout_rate: 0.1 positional_dropout_rate: 0.1 self_attention_dropout_rate: 0.1 src_attention_dropout_rate: 0.1 layer_drop_rate: 0.06 層標準 Transformer 解碼器linear_units: 2048為 FFN 中間層維度各 dropout 均取 0.1。4.4 混合 CTC/Attention 目標model_conf: ctc_weight: 0.3 lsm_weight: 0.1 length_normalized_loss: falsectc_weight: 0.3CTC 與 attention 交叉熵的混合權(quán)重訓練時以 0.3 加權(quán) CTC 損失、0.7 加權(quán) attention 損失解碼時該權(quán)重同樣用于 CTC 前綴 beam 搜索融合。lsm_weight: 0.1標簽平滑系數(shù) 0.1。length_normalized_loss: false不啟用長度歸一化損失。4.5 前端與數(shù)據(jù)增強前端使用 raw 波形在線提取 log-mel 特征--feats_type rawSTFT 參數(shù)frontend_conf: n_fft: 512 win_length: 400 hop_length: 160結(jié)合 fbank.conf--sample-frequency16000、--num-mel-bins80得到 16 kHz / 80 維 log-mel。時長配置與語料 16 kHz 采樣率一致。訓練采用 SpecAugment 增強specaug: specaug含時間扭曲time_warp_window: 5bicubic模式、頻率掩蔽num_freq_mask: 2寬度 0–27與時間掩蔽num_time_mask: 5寬度比例為 0–0.05。此外run.sh中的--speed_perturb_factors 0.9 1.0 1.1提供三倍速擾動進一步擴充訓練數(shù)據(jù)。4.6 訓練超參seed: 2022 num_workers: 4 batch_type: numel batch_bins: 16000000 accum_grad: 4 max_epoch: 70 best_model_criterion: - - valid - acc - max keep_nbest_models: 10 use_amp: true optim: adam optim_conf: lr: 0.002 weight_decay: 0.000001 scheduler: warmuplr scheduler_conf: warmup_steps: 15000要點batch_type: numel按元素數(shù)動態(tài)批量化batch_bins: 16000000控制每批累計元素數(shù)accum_grad: 4梯度累積max_epoch: 70模型選擇依據(jù)驗證集準確率valid acc max保留 10 個最佳 checkpoint啟用 AMP 混合精度訓練加速。五、語言模型seq_rnn 神經(jīng) LM 與淺融合盡管 README 標注無外部 LMrecipe 仍訓練了一個內(nèi)部神經(jīng) LM 用于解碼淺融合--use_lm true其配置在 train_lm.yamllm: seq_rnn lm_conf: nlayers: 2 unit: 650 optim: sgd batch_type: folded batch_size: 64 max_epoch: 20 patience: 3 best_model_criterion: - - valid - loss - min keep_nbest_models: 12 層、650 隱藏單元的 RNN LMSGD 優(yōu)化20 個 epoch按驗證集 loss 選最優(yōu)。LM 文本來自data/train_ta/text--lm_train_text與 BPE 訓練文本一致--bpe_train_text詞表同為 BPE-1000。六、解碼配置beam search 與 LM 淺融合decode_asr.yaml 定義了推理參數(shù)beam_size: 20 ctc_weight: 0.3 lm_weight: 0.3 maxlenratio: 0.0 minlenratio: 0.0 penalty: 0.0參數(shù)取值含義beam_size20beam 寬度ctc_weight0.3解碼時 CTC 前綴得分權(quán)重與訓練model_conf.ctc_weight一致lm_weight0.3LM 得分權(quán)重淺融合maxlenratio/minlenratio0.0 / 0.0輸出長度約束比率0 表示由模型自動決定penalty0.0長度懲罰解碼時使用decode_asr_lm_lm_train_lm_ta_bpe1000_valid.loss.ave_asr_model_valid.acc.ave這一組合目錄名含義為LM 取驗證 loss 平均值 checkpointASR 模型取驗證 acc 平均值 checkpoint兩者聯(lián)合用于 beam 搜索。七、實驗結(jié)果WER / CER / TER 全解析7.1 評測指標約定WER詞錯誤率基于空格分詞后的英文轉(zhuǎn)寫詞級評測Snt 為句子數(shù)、Wrd 為詞數(shù)Corr/Sub/Del/Ins/Err 分別為正確、替換、刪除、插入與總錯誤率S.Err 為句子錯誤率。CER字符錯誤率字符級錯誤率對泰米爾語這類詞形豐富、黏著特征明顯的語言更具參考價值。TER詞錯誤率Tamil 文本按詞切分泰米爾語文本自身按詞切分的錯誤率。7.2 官方測試集test_ta結(jié)果WER12087 句 / 88767 詞Corr 85.9Sub 12.2Del 1.9Ins 2.8Err 16.9S.Err 56.4。CER12087 句 / 800532 字符Corr 98.1Sub 0.9Del 1.1Ins 0.7Err 2.7S.Err 56.4。TER12087 句 / 236078 詞Corr 91.9Sub 5.3Del 2.8Ins 1.0Err 9.1S.Err 56.4。7.3 開發(fā)集dev_ta結(jié)果WER7333 句 / 63984 詞Corr 84.3Sub 13.7Del 2.0Ins 3.1Err 18.8S.Err 63.6。CER7333 句 / 575072 字符Corr 97.7Sub 1.1Del 1.2Ins 0.8Err 3.0S.Err 63.6。TER7333 句 / 177116 詞Corr 91.2Sub 5.8Del 3.0Ins 1.1Err 9.9S.Err 63.6。7.4 結(jié)果解讀測試集 CER 僅 2.7%說明字符級識別已相當準確WER 16.9% 高于 CER符合泰米爾語詞匯形態(tài)豐富、詞級對齊困難的語言學特點。dev_ta 與 test_ta 的 WER18.8% vs 16.9%接近且 dev 略高屬正常波動未出現(xiàn)明顯過擬合跡象。測試集S.Err 56.4明顯高于詞錯誤率說明錯誤在句子間分布不均長句或含生僻詞句仍是主要挑戰(zhàn)。7.5 環(huán)境信息復(fù)現(xiàn)基準README 記錄了復(fù)現(xiàn)該結(jié)果的完整環(huán)境項目版本Python3.10.20espnet2202604PyTorch2.9.1cu128Git commite02e6f79766aa12a13327af8b5375439666135002026-06-07預(yù)訓練模型托管在 Hugging Faceespnet/ta_openslr127見 README.md 的 Environments 小節(jié)。八、復(fù)現(xiàn)步驟與預(yù)訓練模型使用8.1 完整復(fù)現(xiàn)流程準備環(huán)境安裝 ESPnet參考 installation.md確認 Python ≥ 3.10、PyTorch 與 CUDA 環(huán)境。配置語料路徑編輯 db.sh設(shè)置TAMILdownloads或指向本地已下載的語料目錄。執(zhí)行數(shù)據(jù)準備可選單跑./local/data.sh該腳本會下載mile_tamil_asr_corpus.tar.gz并解壓然后調(diào)用 local/data_prep.py 生成data/{train_ta,dev_ta,test_ta}。一鍵訓練 解碼cd egs2/ta_openslr127/asr1 ./run.sh全流程特征、BPE、LM、ASR 訓練、beam 解碼、評分自動完成。查看結(jié)果結(jié)果輸出到exp/目錄評測表由scripts/utils/show_asr_result.sh位于 scripts/utils自動生成并匯總進 README。8.2 使用預(yù)訓練模型不重新訓練時可直接加載 Hugging Face 上的espnet/ta_openslr127預(yù)訓練模型對應(yīng) README 中Pretrained Model字段使用 ESPnet2 的espnet2/bin/asr_inference.py進行推理或借助官方pip install espnet_model_zoo的模型倉庫接口加載。注意該模型與 README 的 Git commit、espnet2 202604 版本對應(yīng)使用時應(yīng)保持 ESPnet 版本兼容。8.3 遷移到其他低資源語言本 recipe 的適配路徑以 librispeech_100 模板為基礎(chǔ)、降 BPE 詞表至 1000、保留 E-Branchformer 中小尺寸編碼器對低資源語言普遍適用。遷移時重點調(diào)整--lang、--nbpe可按訓練文本規(guī)模縮放、fbank.conf 的采樣率與 mel 數(shù)、以及train_asr.yaml中的max_epoch與warmup_steps數(shù)據(jù)量變化時建議同步調(diào)整。九、配套基礎(chǔ)設(shè)施特征、隊列與并行特征生成fbank.conf80 維 log-mel與 pitch.conf16 kHz 采樣率配合--feats_type raw使用raw 模式下訓練時在線提取特征無需預(yù)先 dump。并行調(diào)度recipe 默認使用本地并行cmd.sh如需 PBS/Slurm 集群參考 queue.confqsub 參數(shù)模板與 slurm.conf。數(shù)據(jù)校驗data.sh 調(diào)用utils/fix_data_dir.sh與utils/utt2spk_to_spk2utt.pl位于 utils/data保證數(shù)據(jù)目錄一致性。十、小結(jié)egs2/ta_openslr127/asr1是一個完整、可復(fù)現(xiàn)的低資源泰米爾語端到端 ASR 基線150 小時語料、BPE-1000 unigram 子詞、E-Branchformer12 層 Transformer6 層混合 CTC/Attentionctc_weight0.3、SpecAugment 三倍速擾動增強、內(nèi)部 seq_rnn LM 淺融合最終在官方測試集上取得WER 16.9% / CER 2.7% / TER 9.1%的成績。本文所有配置均可從 conf 目錄逐項對照模型源碼見 e_branchformer_encoder.py實測結(jié)果記錄于 README.md可直接作為泰米爾語 ASR 研究或低資源遷移實驗的出發(fā)點。贊分享人工智能語音音頻深度學習NLP【免費下載鏈接】espnetEnd-to-End Speech Processing Toolkit項目地址https://gitcode.com/gh_mirrors/es/espnet點擊查看免費下載相關(guān)推薦SpeechBrain 端到端語音識別ASR模板實戰(zhàn)基于 mini-librispeech 從零訓練 CTC seq2seq 識別器SpeechBrain 端到端語音識別ASR模板實戰(zhàn)基于 mini librispeech 從零訓練 CTC seq2seq 識別器 本文是 Spee人工智能深度學習語音音頻NLP預(yù)訓練告別劇情穿幫AI_NovelGenerator快速完成一整套AI小說生成告別劇情穿幫AI_NovelGenerator快速完成一整套AI小說生成 寫長篇的煩惱 寫短篇還好長篇寫到后面總得翻回前文確認設(shè)定伏筆也容易忘。AI_N人工智能大模型AI 應(yīng)用AI 寫作RAG桌面應(yīng)用DeepSpeedExamples語音識別CTC與Attention模型訓練DeepSpeedExamples語音識別CTC與Attention模型訓練 引言語音識別的技術(shù)瓶頸與解決方案 你是否還在為語音識別模型訓練時的計算資源不足示例工程創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考