返回模型
说明文档
ASR 模型卡片(基于 CTC 的英语 ASR)
<!-- Provide a quick summary of what the model is/does. -->
本仓库包含一个基于 Hugging Face Transformers 构建的端到端 自动语音识别 (ASR) 流水线。默认配置在 Common Voice 17.0(英语) 的 50k 子样本上使用 CTC 头对 facebook/wav2vec2-base-960h 进行微调,并提供用于 训练、评估、导出到 ONNX 以及在 AWS SageMaker 上部署 的脚本。它还包括一个健壮的音频加载栈(优先使用 FFmpeg,带有备用方案)以及用于文本规范化和评估(WER/CER)的实用工具。
模型详情
模型描述
- 开发者: Amirhossein Yousefi (GitHub:
@amirhossein-yousefi) - 资金支持: 未指定
- 共享者: Amirhossein Yousefi
- 模型类型: 基于 CTC 的 ASR,使用 Transformers (Wav2Vec2ForCTC)
- 语言(NLP): 英语 (
en) - 许可证: 基础模型为 Apache-2.0;仓库/微调权重许可证在此未明确说明(在澄清之前视为 其他)
- 微调自模型:
facebook/wav2vec2-base-960h
训练/评估流水线使用 Hugging Face
transformers、datasets和jiwer,并包含推理和 SageMaker 部署的脚本。
模型来源
- 代码库: https://github.com/amirhossein-yousefi/ASR
- 论文: Baevski et al., "wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations" (arXiv:2006.11477)
- 演示: 暂无(包含本地 CLI 和 SageMaker 示例)
用途
直接使用
- 用于短到中等长度音频片段的通用 英语 语音转录(默认时长过滤器:约 1-18 秒)。
- 通过 CLI 或 Python 进行本地批量转录,或通过 AWS SageMaker 进行实时部署(JSON base64 或原始 WAV 内容类型)。
下游使用
- 在特定任务或口音数据集上进行领域适应 / 进一步微调。
- 导出到 ONNX 以实现 CPU 友好的推理和在生产应用中的集成。
超出范围的使用
- 不包括 说话人分离、标点恢复 和 真正的流式 ASR。
- 未经额外微调的多语言或语码转换语音。
- 未经分块的极长文件;未经增强/调优的严重背景噪声。
偏差、风险和局限性
- 默认微调数据集(Common Voice 17.0,英语)可能反映收集偏差(麦克风质量、口音、人口统计特征)。在领域外音频(例如电话、医学术语)上的准确性可能会下降。
- 转录可能包含错误,如果音频中存在敏感信息/PII,可能会被转录出来;请负责任地处理输出。
建议
- 始终在您自己的保留数据上评估 WER/CER。根据需要考虑添加标点大小写模型和领域词汇表。
- 对于受监管的环境,请加入人工审核和数据治理。
如何开始使用该模型
Python(本地推理):
import torch, torchaudio
from transformers import AutoModelForCTC, AutoProcessor
model_dir = \"./outputs/asr\" # 或 Hugging Face hub id
device = \"cuda\" if torch.cuda.is_available() else \"cpu\"
processor = AutoProcessor.from_pretrained(model_dir)
model = AutoModelForCTC.from_pretrained(model_dir).to(device).eval()
wav, sr = torchaudio.load(\"path/to/file.wav\")
target_sr = processor.feature_extractor.sampling_rate
if sr != target_sr:
wav = torchaudio.functional.resample(wav, sr, target_sr)
inputs = processor(wav.squeeze(0).numpy(), sampling_rate=target_sr, return_tensors=\"pt\", padding=True)
with torch.no_grad():
logits = model(**{k: v.to(device) for k, v in inputs.items()}).logits
pred_ids = torch.argmax(logits, dim=-1)
print(processor.batch_decode(pred_ids.cpu().numpy())[0])
CLI(示例):
python src/infer.py --model_dir ./outputs/asr --audio path/to/file.wav
训练详情
训练数据
- 数据集: Common Voice 17.0(英语),文本列:
sentence - 时长过滤器: 最小约 1.0 秒,最大约 18.0 秒
- 备注: 区分大小写的规范化,白名单过滤以匹配分词器词汇表;可选的波形增强。
训练过程
预处理 [可选]
- 健壮的音频解码(Windows 上优先使用 FFmpeg;备用
torchaudio/soundfile/librosa),按 Wav2Vec2 要求重采样至 16 kHz。 - 通过模型处理器进行分词;使用 CTC 整理器进行动态填充。
训练超参数
- 轮次: 3
- 每设备批次大小: 8 (× 8 梯度累积 → 有效 64)
- 学习率: 3e-5
- 预热比例: 0.05
- 优化器:
adamw_torch_fused - 权重衰减: 0.0
- 精度: FP16
- 最大梯度范数: 1.0
- 日志记录: 每 50 步;评估/保存: 每 500 步;保留最后 2 个检查点;早停耐心值 = 3
- 随机种子: 42
速度、大小、时间 [可选]
- 总 FLOPs(训练): 10,814,747,992,293,114,000
- 训练运行时间: 2,346 步约 ~11,168 秒
- 日志: TensorBoard 位于
src/output/logs(或配置的类似路径)
评估
测试数据、因素和指标
- 指标: WER(主要)和 CER(辅助),使用
jiwer实用工具计算。 - 因素: CV17 分割中的英语语音;性能因口音、录音条件和语句长度而异。
结果
- 训练包括 损失、评估 WER 和 评估 CER 曲线。请参阅
assets/目录中的图表。
总结
- 基线 WER/CER 在每次评估时记录;用户应在其自己的数据集上报告特定领域的结果。
模型检查
- 默认使用贪婪解码;本仓库不包含束搜索/LM 融合。如需错误分析,可根据需要检查 logits 和对齐。
环境影响
- 硬件类型: 笔记本电脑(Windows)
- GPU: NVIDIA GeForce RTX 3080 Ti Laptop GPU (16 GB VRAM),驱动程序 576.52
- CUDA / PyTorch: CUDA 12.9,PyTorch 2.8.0+cu129
- 使用小时数: 约 ~3.1 小时
- 云服务商: 本地不适用;提供 AWS SageMaker 实用工具用于云训练/部署
- 计算区域: 不适用(本地)
- 碳排放: 未计算;可使用 MLCO2 计算器 估算
技术规格
模型架构和目标
- 架构: Wav2Vec2 编码器,带有 CTC 输出层
- 目标: 用于 ASR 的字符级 CTC 损失
计算基础设施
硬件
- 如上所述的本地 GPU;或通过 SageMaker 脚本使用的 AWS 实例类型(例如
ml.g4dn.xlarge)。
软件
- Python 3.10+
- 主要依赖项:
transformers、datasets、torch、torchaudio、soundfile、librosa、jiwer、onnxruntime(用于 ONNX 测试),以及用于部署的boto3/sagemaker。
引用
BibTeX:
@article{baevski2020wav2vec,
title={wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations},
author={Baevski, Alexei and Zhou, Henry and Mohamed, Abdelrahman and Auli, Michael},
journal={arXiv preprint arXiv:2006.11477},
year={2020}
}
APA: Baevski, A., Zhou, H., Mohamed, A., & Auli, M. (2020). wav2vec 2.0: A framework for self‑supervised learning of speech representations. arXiv:2006.11477.
术语表
- WER:词错误率;越低越好。
- CER:字符错误率;越低越好。
- CTC:连接时序分类,一种用于序列标注的无对齐损失。
更多信息
- ONNX 导出:
src/export_onnx.py - AWS SageMaker:
sagemaker/中的脚本,用于训练、部署和自动扩展。 - 训练/指标图表: 参见
assets/(例如train_loss.svg、eval_wer.svg、eval_cer.svg)。
模型卡片作者
- Amirhossein Yousefi(仓库作者)
模型卡片联系方式
- 在 GitHub 仓库上提交 issue:https://github.com/amirhossein-yousefi/ASR
Amirhossein75/ASR
作者 Amirhossein75
automatic-speech-recognition
transformers
↓ 0
♥ 1
创建时间: 2025-08-26 05:50:25+00:00
更新时间: 2025-08-26 06:06:42+00:00
在 Hugging Face 上查看文件 (10)
.gitattributes
.idea/.gitignore
README.md
config.json
model.safetensors
preprocessor_config.json
special_tokens_map.json
tokenizer_config.json
training_args.bin
vocab.json