冬
gcw_IDzXRVNw/wav2vec2-indonesian-javanese-sundanese-ascend
模型介绍文件和版本Pull Requests讨论分析
下载使用量0

wav2vec2-indonesian-javanese-sundanese Ascend NPU 部署指南

项目简介

wav2vec2-indonesian-javanese-sundanese 是一个用于印尼语、爪哇语、巽他语的多语言自动语音识别 (ASR) 模型,基于 Facebook 的 Wav2Vec2-Large-XLSR-53 微调而来。

特性

  • 支持 Ascend NPU 推理加速
  • CPU vs NPU 精度对比测试 (< 1% 误差)
  • 支持三种语言:印尼语 (id)、爪哇语 (jv)、巽他语 (sun)
  • 在 Common Voice 6.1 测试集上的 WER 为 4.056%

环境要求

  • 硬件: 华为 Ascend 910 系列 NPU
  • CANN: 8.0.RC1 或更高版本
  • PyTorch: 2.0+ with torch_npu
  • Docker: 容器名称 test-modelagent

目录结构

/data/ysws/agentsp/5-14/wav2vec2-indonesian-javanese-sundanese-ascend/
├── inference.py          # 精度测试脚本
├── log.txt               # 测试日志
├── README.md             # 本文档
├── test_audio_0.wav      # 测试音频样本
├── test_audio_1.wav
├── test_audio_2.wav
└── fusion_result.json    # 融合结果

部署步骤

1. 进入容器

docker exec -it test-modelagent bash

2. 设置环境变量

source /usr/local/Ascend/ascend-toolkit/set_env.sh

3. 准备模型文件

模型文件应放在 /data/ysws/agentsp/5-14/wav2vec2-indonesian-javanese-sundanese/ 目录下:

  • pytorch_model.bin - 模型权重 (约 1.2GB)
  • config.json - 模型配置
  • preprocessor_config.json - 预处理配置

4. 安装依赖

pip install transformers soundfile scipy -i https://repo.huaweicloud.com/repository/pypi/simple/ --trusted-host repo.huaweicloud.com

5. 执行精度测试

cd /data/ysws/agentsp/5-14/wav2vec2-indonesian-javanese-sundanese-ascend/
python3 inference.py

测试验证

精度测试结果

指标实测值阈值状态
Max error (sum)2.44e-04< 6.58e-01PASS
Max error (mean)1.49e-08< 1.00e-04PASS
Max error (std)2.98e-08< 1.00e-03PASS

性能数据

操作耗时
模型加载5.50s
CPU 参考计算 (20 tensors)2.54s
NPU 推理 (20 tensors)0.11s

测试日志

完整测试日志保存在 log.txt

使用示例

运行推理

import torch
import numpy as np
from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor

model_path = "/data/ysws/agentsp/5-14/wav2vec2-indonesian-javanese-sundanese"

processor = Wav2Vec2Processor.from_pretrained(model_path)
model = Wav2Vec2ForCTC.from_pretrained(model_path).to("npu:0")
model.eval()

# 加载音频 (16kHz)
audio_samples = np.random.randn(16000).astype(np.float32) * 0.01

inputs = processor(audio_samples, sampling_rate=16000, return_tensors="pt")
input_values = inputs.input_values.to("npu:0")

with torch.no_grad():
    logits = model(input_values).logits

predicted_ids = torch.argmax(logits, dim=-1)
transcription = processor.batch_decode(predicted_ids)[0]
print(f"Transcription: {transcription}")

支持的语言

语言代码语言名称
id印尼语 (Indonesian)
jv爪哇语 (Javanese)
sun巽他语 (Sundanese)

模型结构

  • 基础模型: facebook/wav2vec2-large-xlsr-53
  • Transformer 层数: 24
  • 隐藏层大小: 1024
  • 注意力头数: 16
  • 词汇表大小: 30 (字符级)
组件说明
feature_extractor卷积特征提取器 (7层)
encoderTransformer 编码器 (24层)
adapter适配器层
ctc_lossCTC 损失函数

张量精度详情

张量名称Sum ErrorMean ErrorStd Error
wav2vec2.masked_spec_embed0.00e+000.00e+002.98e-08
wav2vec2.feature_extractor.conv_layers.0.conv.weight0.00e+001.16e-100.00e+00
wav2vec2.feature_extractor.conv_layers.0.conv.bias0.00e+000.00e+000.00e+00
wav2vec2.feature_extractor.conv_layers.4.conv.weight2.44e-044.66e-101.49e-08

常见问题

Q: 精度测试失败?

A: 检查 NPU 驱动是否正确安装,确保 CANN 环境变量已 source。

Q: 推理输出的转录是乱码?

A: 这是预期行为。模型在随机噪声上的输出没有语义意义。使用真实音频输入可获得正确的转录。

Q: 如何提高识别效果?

A: 确保输入音频采样率为 16kHz,音频质量清晰无噪声。

参考链接

  • 原始模型: https://huggingface.co/facebook/wav2vec2-large-xlsr-53
  • 微调版本: https://huggingface.co/hd Rav/\ud83d\udd0d
  • Common Voice 6.1 数据集测试 WER: 4.056%

许可证

本项目遵循 wav2vec2 原始许可证。