Whisper Small - 维吾尔语版

针对维吾尔语语音识别微调的OpenAI Whisper Small模型。

模型信息

  • 基础模型: openai/whisper-small
  • 语言: 维吾尔语 (Uyghur)
  • 语言Token: <|uyghur|> (Token ID: 51865)
  • 任务: 自动语音识别 (ASR)
  • 微调数据: THUYG-20数据集 (7,600条)

性能指标

  • 字符错误率 (CER): ~16.5% (100步演示训练)
  • 字符准确率: ~83.5%
  • 预期CER (3000步): < 10%

快速开始

安装依赖

pip install transformers torch soundfile numpy

基本用法

from transformers import WhisperProcessor, WhisperForConditionalGeneration
import soundfile as sf
import numpy as np

# 加载模型
model_name = "anke01/whisper-small-uyghur"
processor = WhisperProcessor.from_pretrained(model_name)
model = WhisperForConditionalGeneration.from_pretrained(model_name)

# 加载音频
waveform, sample_rate = sf.read("audio.wav", dtype='float32')

# 转为单声道
if len(waveform.shape) > 1:
    waveform = np.mean(waveform, axis=1)

# 重采样到16kHz
if sample_rate != 16000:
    old_len = len(waveform)
    new_len = int(old_len * 16000 / sample_rate)
    waveform = np.interp(
        np.linspace(0, old_len - 1, new_len),
        np.arange(old_len),
        waveform
    )

# 处理音频
inputs = processor(waveform, sampling_rate=16000, return_tensors="pt")

# 使用维吾尔语token生成
lang_token_id = processor.tokenizer.convert_tokens_to_ids("<|uyghur|>")
forced_decoder_ids = [
    (1, lang_token_id),
    (2, processor.tokenizer.convert_tokens_to_ids("<|transcribe|>")),
]

predicted_ids = model.generate(
    inputs.input_features,
    forced_decoder_ids=forced_decoder_ids
)

# 解码
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)[0]
print(transcription)

脚本说明

推理脚本

# 转录音频文件
python inference.py audio.wav

# 指定模型路径
python inference.py audio.wav ./model

评估脚本

# 在数据集上评估
python evaluate.py data/val.json

# 指定模型路径
python evaluate.py data/val.json ./model

# 只评估前100条
python evaluate.py data/val.json ./model 100

配置修复脚本

# 自动修复模型配置
python fix_model_config.py <model_path>

语言支持

本模型扩展了原始Whisper的词汇表:

  • 原始词汇表大小: 51,865
  • 新词汇表大小: 51,866 (+1个 <|uyghur|>)

模型文件

.
├── model.safetensors       # 模型权重 (925MB)
├── vocab.json              # 分词器词汇表
├── tokenizer_config.json   # 分词器配置
├── preprocessor_config.json # 音频预处理器配置
├── config.json             # 模型配置
├── generation_config.json  # 生成配置 (包含语言映射)
├── language_info.json      # 语言元数据
├── inference.py            # 推理脚本
├── evaluate.py             # 评估脚本
├── fix_model_config.py     # 配置修复脚本
└── README.md               # 本文件

训练详情

  • 数据集: THUYG-20 (7,600条)
  • 训练步数: 100 (演示) / 3000 (完整)
  • 学习率: 1e-5
  • 批次大小: 4
  • 优化器: AdamW
  • 预热步数: 500

示例输出

输入: thuyg20_00000_*.wav (8.30秒)

输出:

بىز نەچچە يىل تىرىشىش ئارقىلىق بۇ قاقاس يەرنى ئاخىرى مۇنبەت ئىتىزغا ئايلاندۇردۇق

中文翻译: "我们经过多年的努力,终于把这片荒地变成了肥沃的田地"

限制说明

  • 训练数据有限 (7,600条)
  • 不同口音的性能可能有差异
  • 生产环境建议进一步微调

引用

@misc{whisper-uyghur,
  title={Whisper Small Fine-tuned for Uyghur},
  author={Your Name},
  year={2024},
  publisher={Hugging Face}
}

致谢

  • 原始Whisper模型由OpenAI提供
  • THUYG-20数据集由清华大学和新疆大学提供

许可证

与原始Whisper模型相同 (Apache 2.0)。

Downloads last month
-
Safetensors
Model size
0.2B params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support