Views
No views yet
AutoModel (trust_remote_code=True) を使用して簡単に読み込むことができます。japanese-wav2vec2-large-hiragana-ctc から以下の点を変更しています。AutoModel ネイティブ対応
カスタムモジュール (modeling_dual_ctc.py) を同梱したため、ローカルのチェックポイントファイルを意識することなく、transformers から直接モデルをロードして推論できるようになりました。1Audio (16kHz) → WavLM Encoder
2 ├── Intermediate Layer 9 → Kana CTC Head (84 classes)
3 └── Intermediate Layer 11 → Phoneme CTC Head (44 classes)DualCTCModel)を使用しているため、ロード時に trust_remote_code=True を指定する必要があります。pip install torch torchaudio transformers1import torch
2import torchaudio
3from transformers import AutoFeatureExtractor, AutoModel, PreTrainedTokenizerFast
4
5model_id = "TylorShine/wavlm-base-plus-hiragana-ctc"
6
7# 特徴量抽出器とモデルのロード
8processor = AutoFeatureExtractor.from_pretrained(model_id)
9model = AutoModel.from_pretrained(model_id, trust_remote_code=True)
10model.eval()
11
12# トークナイザーのロード
13kana_tokenizer = PreTrainedTokenizerFast.from_pretrained(model_id, subfolder="kana_tokenizer")
14phoneme_tokenizer = PreTrainedTokenizerFast.from_pretrained(model_id, subfolder="phoneme_tokenizer")
15
16# 音声ファイルの読み込み (16kHzにリサンプリング)
17waveform, sample_rate = torchaudio.load("nihongo_no_onsei.wav")
18if sample_rate != 16000:
19 resampler = torchaudio.transforms.Resample(orig_freq=sample_rate, new_freq=16000)
20 waveform = resampler(waveform)
21
22# 前処理
23inputs = processor(waveform.squeeze().numpy(), sampling_rate=16000, return_tensors="pt")
24
25# 推論
26with torch.no_grad():
27 outputs = model(**inputs)
28
29# ひらがなと音素のロジットを取得
30kana_logits = outputs["kana_logits"]
31phoneme_logits = outputs["phoneme_logits"]
32
33# Greedy Decoding
34kana_preds = torch.argmax(kana_logits, dim=-1).tolist()
35phoneme_preds = torch.argmax(phoneme_logits, dim=-1).tolist()
36
37# print("Kana Token IDs:", kana_preds[0])
38# print("Phoneme Token IDs:", phoneme_preds[0])
39
40# `model.ctc_decode()` でトークンをテキストに変換
41kana_text = model.ctc_decode(kana_preds, kana_tokenizer, is_kana=True)
42phoneme_text = model.ctc_decode(phoneme_preds, phoneme_tokenizer, is_kana=False)
43
44print("Kana:", kana_text)
45print("Phoneme:", phoneme_text)| Property | Value |
|---|---|
| Architecture | WavLM + Dual CTC (Kana & Phoneme) |
| Precision | BF16 |
| Kana vocab | 84 tokens |
| Phoneme vocab | 44 tokens |
| Dataset | Condition | KER | PER |
|---|---|---|---|
| JSUT-BASIC5000 | スタジオ収録、単一話者 | 4.7% | 5.6% |
| JVS pallarel100 | 100話者 | 6.58% | 8.07% |
| JVS whisper10 | 100話者、ささやき声 | 12.3% | 11.0% |
ReazonSpeech (20k samples from medium subset) | TV音声 | 19.2% | 16.7% |