尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

30分钟搭出中文语音识别流水线:SpeechBrain 让 PyTorch 语音AI从录音到文字

30分钟搭出中文语音识别流水线:SpeechBrain 让 PyTorch 语音AI从录音到文字 30分钟搭出中文语音识别流水线SpeechBrain 让 PyTorch 语音AI从录音到文字【免费下载链接】speechbrainA PyTorch-based Speech Toolkit项目地址: https://gitcode.com/GitHub_Trending/sp/speechbrain凌晨三点三百条客服录音等着你转成文字稿再标出哪些是投诉。SpeechBrain 是一个基于 PyTorch 的全流程语音AI工具包100 预训练模型加 200 现成食谱不用手写训练管线30 分钟内拿到第一行识别文本。排期、部署这类业务系统它不管——那是你的活。⚙️ 它替你省的不是功能是三层设计SpeechBrain 的哲学是配置先行模型结构、训练循环、数据流全部写进 YAML由 HyperPyYAML 解析成对象训练编排交给 Brain 类而每个数据集×任务组合在仓库里都有配好的食谱Recipe你只跑一条命令。对使用者来说工作量差异一目了然你要做的事自己拼 PyTorch 管线用 SpeechBrain 食谱数据加载与批处理手写 DataLoader、变长 padding、分桶跑 prepare 脚本生成 CSV 清单直接训练训练循环前向、反向、指标、断点续训全自己写python train.py hparams/train.yaml一条命令推理调用自己写序列化和解码逻辑from_hparams三行加载调transcribe_file代码入口统一在 recipes/训练循环核心在 speechbrain/core.py结构一致看完一个食谱其余都能类推。从第一行文字到第一次训练SpeechBrain 语音识别最短路径先装环境再调模型两步走完你就有了一段可读的文本conda create -n speechbrain python3.10 conda activate speechbrain pip install speechbrain python -c import speechbrain; print(speechbrain.__version__) # 应为 1.1.0Python 版本要求以 pyproject.toml 为准≥3.8。拿到文本只要三行Conformer 编码器的 LibriSpeech 预训练模型是官方演示主角from speechbrain.inference import EncoderDecoderASR model EncoderDecoderASR.from_hparams( sourcespeechbrain/asr-conformer-transformerlm-librispeech, savedirpretrained_models/asr ) print(model.transcribe_file(example.wav))这时会碰到 SpeechBrain 的三个核心抽象各一句话就够了Brainspeechbrain/core.py封装训练循环、多卡与混合精度HyperPyYAML把超参数从代码里剥离到 YAML数据管道speechbrain/dataio/负责读变长音频、自动组批。之后你改超参的方式是改配置不是改代码# hparams/train_ASR_transformer.yaml 节选 number_of_epochs: 50 batch_size: 8 dynamic_batching: False max_batch_length: 15 precision: fp32把中文语料跑起来AISHELL-1 的四个坑AISHELL-1 是中文语音识别数据集的默认选择178 小时普通话朗读语音。仓库对应食谱在 recipes/AISHELL-1/ASR/transformer/模型是 Transformer 编码器-解码器CTC 与 attention 联合损失。下面按我踩坑的顺序讲。坑一清单生成别跳过下载并切分由aishell_prepare.py完成产出 train/dev/test 三份 CSV 清单列为 ID、duration、wav、transcript。训练前务必head看一眼清单——路径对不上、时长缺失后面全白跑。坑二一条命令启动单卡训练cd recipes/AISHELL-1/ASR/transformer python aishell_prepare.py --data_folder ./data python train.py hparams/train_ASR_transformer.yaml日志和检查点都落在 YAML 里output_folder指向的results/下想断点续训就接着跑同一命令。坑三只有三个超参值得先动batch_size默认 8往上加吃显存OOM 就回调它或改grad_accumulation_factor摊薄梯度dynamic_batching从 False 改 True 并给max_batch_length: 15单位秒按长度组批后面性能章节细说学习率走 Noam 调度lr_adam: 1.0warmup 25000 步别手改成长期固定值。坑四用 CER 而不是感觉判断成败YAML 里cer_computer是ErrorRateStats且remove_spaces: True——中文转写先去掉空格再逐字算错误率CER 直接写到cer_file。曲线平滑下行、测试 CER 停在个位数低段才算 Conformer 系模型该有的水平食谱细节以仓库 README 为准。 从咖啡厅录音里捞人声语音增强具体场景你在咖啡厅录了一段访谈人声叠着键盘声和背景音乐。SpeechBrain 的增强食谱recipes/DNS/enhancement/训练的是 SepFormer 架构——sepformer-dns-16k.yaml里MaskNet即双流 SepFormer 块损失函数 SI-SNR训练切片 4 秒、fp16 精度跑完save_audio: True会直接落盘增强样本供你试听。推理只关心三要素输入一条带噪波形输出一条干净波形中间 SI-SNR 越低越好from speechbrain.inference import WaveformEnhancement enhancer WaveformEnhancement.from_hparams( sourcespeechbrain/sgmse-voicebank, savedirpretrained_models/enhancement ) enhancer.enhance_file(cafe_noisy.wav, cafe_clean.wav)想换 SepFormer 增强器把source换成对应预训练模型名即可接口不变。多人重叠语音属于分离任务思路相同食谱在 recipes/WSJ0Mix/ 等目录。⚡ 训练快三成、部署小四分之三两把 PyTorch 调优刀只讲两把真正通用的刀ONNX 导出、剪枝这类先不碰。第一把动态批处理。原理一句话——按长度给音频分桶再组批padding 浪费从全批对齐最长条降到接近零。配置三行dynamic_batching: True max_batch_length: 15 # 单位秒 num_buckets: 10收益官方动态批处理教程给出的量级是 GPU 利用率提升约 30%短音频为主的中文数据集收益更明显详见 docs/tutorials/advanced/dynamic-batching.ipynb。第二把INT8 动态量化。原理一句话——把 Linear 层权重量化到 8 位体积约压到 1/4import torch quantized torch.quantization.quantize_dynamic( model, {torch.nn.Linear}, dtypetorch.qint8 ) torch.save(quantized.state_dict(), model_int8.pt)收益模型体积约减 75%、推理提速 2-3 倍适合边缘设备完整流程见 docs/tutorials/advanced/model-quantization.ipynb。 我的项目长这样一棵可以直接改的目录树my_speech_project/ ├── data/ # 原始音频与CSV清单prepare 跑完就别再动 ├── hparams/ # 你最常改的目录模型结构、lr、batch │ └── train.yaml ├── src/ # 仅在自定义 Brain 或加模块时改 │ └── custom_model.py ├── train.py # 训练入口基本不动 └── results/ # 日志与检查点只看不改监控用 TensorBoardtensorboard --logdir results/开 TensorBoard 的食谱在 YAML 里有use_tensorboard: True盯三个指标Loss整体下行、偶有锯齿正常连续回升先查数据管道CER / WER验证集应持续下降末段走平说明到顶了GPU 利用率健康区间 70%-90%长期低于 50% 优先开动态批处理。 卡住了看这里三个高频故障各一行处方CUDA OOM降batch_size或开dynamic_batching必要时切precision: bf16训练不收敛先核对清单的sample_rate与 YAML 一致本仓库食谱均为 16000Hz再看学习率 warmup 是否被改坏推理慢走 INT8 量化或换流式接口speechbrain.inference里的StreamingASR。更多答案在 官方食谱库、教程 Notebook 和 Brain 类源码。明早那三百条客服录音就可以开工先跑recipes/AISHELL-1/ASR/transformer/里的 prepare 脚本看你的第一个模型把第一句话念成什么样子。【免费下载链接】speechbrainA PyTorch-based Speech Toolkit项目地址: https://gitcode.com/GitHub_Trending/sp/speechbrain创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表