# Automatic-Speech-Recognition **Repository Path**: xx11nn6/automatic-speech-recognition ## Basic Information - **Project Name**: Automatic-Speech-Recognition - **Description**: No description available - **Primary Language**: Python - **License**: MPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-04-01 - **Last Updated**: 2026-01-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # End-to-End Chinese Automatic Speech Recognition (ASR) 这是一个基于 **PyTorch** 实现的端到端中文语音识别系统。模型架构采用了目前业界主流的 **Conformer (Encoder)** + **Transformer (Decoder)** 结构,并结合了 **Hybrid CTC/Attention** 联合训练机制,旨在在消费级显卡上实现高效、准确的中文语音识别。 ## 📖 项目特性 * **先进架构**: 采用 [Conformer](https://arxiv.org/abs/2005.08100) (Convolution-augmented Transformer) 作为编码器,能够同时捕获音频的局部特征和全局上下文。 * **混合损失函数**: 使用 **CTC Loss** + **Cross Entropy (Attention) Loss** 进行联合训练 ($Loss = \lambda L_{CTC} + (1-\lambda) L_{Att}$),加速收敛并提高对齐稳定性。 * **鲁棒的特征提取**: 内置 **ResNet** 前端特征提取器,支持从原始波形直接输入,包含 **SpecAugment** (频域/时域掩码) 数据增强。 * **高效训练**: * 支持 **DDP (Distributed Data Parallel)** 多卡分布式训练。 * 支持 **AMP (Automatic Mixed Precision)** 混合精度训练,节省显存并加速计算。 * 使用 **OneCycleLR** 学习率调度策略,实现超收敛。 * **Dynamic Batching**: 根据音频长度动态组建 Batch,减少 Padding 浪费。 * **轻量级**: 模型参数量约 **50M**,在 RTX 3070 Ti 上推理 5秒音频仅需 ~0.4秒 (RTF < 0.1)。 ## 🏗️ 模型结构 | 模块 | 配置 | 说明 | | :--- | :--- | :--- | | **Frontend** | ResNet | 接收 Fbank 特征,进行下采样和特征初步提取 | | **Encoder** | Conformer | 10 层, 维度 384, 包含卷积模块和自注意力模块 | | **Decoder** | Transformer | 4 层, 维度 384, 负责自回归文本生成 | | **Tokenizer** | SentencePiece | 词表大小 ~5000, 处理中文字符 | | **Loss** | Hybrid | CTC (0.5) + Attention (0.5) | ## 🛠️ 环境依赖 请确保安装以下 Python 库: ```bash pip install torch torchaudio matplotlib numpy sentencepiece tqdm ``` * Python >= 3.8 * PyTorch >= 2.0 (推荐) ## 📂 数据准备 项目支持 **AISHELL-1** 和 **Emilia-YODAS** 数据集。 ### 目录结构 请确保数据目录结构如下: ``` data/ ├── data_aishell/ │ ├── wav/ │ └── transcript/ └── Emilia-YODAS/ └── ZH/ ``` ### 数据预处理 使用以下命令生成训练所需的 JSON 索引文件: ```bash # 处理 AISHELL 数据 python pre_processing.py --data aishell # 处理 Emilia 数据 python pre_processing.py --data emilia ``` ## 🚀 训练 (Training) ### 单卡训练 ```bash python train.py --data aishell ``` ### 多卡分布式训练 (DDP) ```bash # 例如使用 2 张显卡 torchrun --nproc_per_node=2 train.py --data aishell ``` **主要参数说明 (`train.py`):** * `max_lr`: 峰值学习率 (默认 0.001) * `num_epochs`: 训练轮数 (默认 50) * `batch_size`: 自动适配或手动指定 * `resume`: 恢复训练的检查点路径 (例如 `--resume ./ckpts/checkpoint_epoch10.pt`) 训练过程中,模型检查点和日志将保存至 `./ckpts/` 目录。 ## ⚡ 推理与测试 (Inference) ### 运行测试集评估 计算测试集上的 CER (Character Error Rate) 和准确率: ```bash python test.py --checkpoint ./ckpts/best_model.pt --data aishell ``` ### 性能基准测试 评估模型的参数量、推理延迟和实时率 (RTF): ```bash python benchmark_model.py ``` ### 训练可视化 绘制训练过程中的 Loss 曲线和验证集准确率: ```bash python plot_loss.py ``` *(脚本会自动检测并使用系统中的中文字体进行绘制)* ## 📊 性能指标 (参考) 在标准测试环境 (RTX 3070 Ti Laptop) 下的基准数据: * **参数量**: 50.50 M * **Encoder 延迟 (5s 音频)**: ~50ms * **完整推理延迟 (5s 音频)**: ~400ms * **实时率 (RTF)**: ~0.08 (1秒音频处理仅需 0.08秒) ## 📝 许可证 [MIT License](LICENSE)