nelmo-ux commited on
Commit
5ef879a
·
verified ·
1 Parent(s): 551358b

v2: 300h cluster finetune (H100, bf16) - chunk CER 0.1679, gap 0.0095

Browse files
README.md CHANGED
@@ -19,31 +19,35 @@ library_name: funasr
19
 
20
  SenseVoiceSmall を**チャンクマスク学習(SCAMA方式)でファインチューニングした日本語特化モデル**です。ストリーミング(チャンク逐次)推論時の精度劣化を解消することを目的としています。
21
 
22
- ベースの SenseVoiceSmall は全区間双方向 attention で学習されているため、そのままチャンク推論すると精度が大きく劣化します。本モデルはダイナミックチャンクマスク(chunk_size を学習ステップごとに 8/12/16 からランダム選択)で 4 エポックのファインチューニングを行い、このギャップをほぼ解消しました。
23
 
24
- ## 結果保留話者 772 クリップ日本語CER
 
 
25
 
26
  | モデル | チャンク推論 CER | フル注意 CER | ギャップ |
27
  |---|---|---|---|
28
- | SenseVoiceSmall(公開重み) | 0.4059 | 0.1625 | 0.2433 |
29
- | **本モデル(ep4)** | **0.1739** | **0.1494** | **0.0245** |
30
 
31
- - チャンク推論 CER は相対 **57%** 改善、チャンクとフル注意の差は **90%** 縮小
32
- - フル注意(非ストリーミング)推論もドメイン内デタの効果で僅かに改善
33
  - 評価データは学習と話者を完全分離(声優単位のリーク検証済み)
 
34
 
35
- ## 学習詳細
36
 
37
- - **データ**: [OOPPEENN/VisualNovel_Dataset](https://huggingface.co/datasets/OOPPEENN/56697375616C4E6F76656C5F44617461736574) のサブセット約53時間(29,230クリップ、16kHz mono、話者分離 train/val 分割)
38
  - **方式**: GT教師あり CTC + ダイナミックチャンクマスク(chunk_size=[8,12,16] / stride=[6,10,14] / pad_left=0 / look_back=1、1フレーム=60ms)
39
- - **設定**: 4エポック、LR 2e-4、batch 12fp32Apple M5 Pro(MPS)で約4.5時間
40
  - **正規化**: モデルネイティブの全角句読点規約(!?…~)を維持。ASCII への NFKC 折り畳みは句読点について無効化
 
41
 
42
  ## 制約・注意
43
 
44
  - **日本語特化**です。中国語・広東語・英語・韓国語の性能は評価しておらず、維持対象外です
45
  - 感情・イベントラベルはベースモデルの機能を引き継ぎますが、本 FT では最適化していません
46
- - チャンク推論の実装(`forward_chunk` / ストリーミングバックエンド)は同梱の `model.py` と [nelmo-ux/SenseVoice-mod](https://github.com/nelmo-ux/SenseVoice-mod) 参照してください
47
 
48
  ## 使い方
49
 
@@ -63,14 +67,14 @@ res = model.generate(input="audio.wav", language="ja", use_itn=True)
63
 
64
  ### チャンク(ストリーミング)推論
65
 
66
- 同梱 `model.py` の `init_chunk_cache()` / `forward_chunk()`、または [SenseVoice-mod](https://github.com/nelmo-ux/SenseVoice-mod) の `streaming/` パッケージ(`backend="chunk"`)を使用してください。学習時ジオメトリ(window 12 / stride 10 / pad_right 2 / look_back 1)での評価値が上表す。
67
 
68
  ## ファイル
69
 
70
- - `model.pt` — ファインチューニング済み重み(ep4、weights のみ)
71
  - `config.yaml` / `configuration.json` / `am.mvn` / `chn_jpn_yue_eng_ko_spectok.bpe.model` — funasr ロードに必要な一式(ベースモデル由来)
72
  - `model.py` — チャンク推論対応のモデル実装(remote code)
73
- - `eval/` — FT前後のエポック別評価結果(JSON)
74
 
75
  ## ライセンス・帰属
76
 
 
19
 
20
  SenseVoiceSmall を**チャンクマスク学習(SCAMA方式)でファインチューニングした日本語特化モデル**です。ストリーミング(チャンク逐次)推論時の精度劣化を解消することを目的としています。
21
 
22
+ ベースの SenseVoiceSmall は全区間双方向 attention で学習されているため、そのままチャンク推論すると精度が大きく劣化します。本モデルはダイナミックチャンクマスク(chunk_size を学習ステップごとに 8/12/16 からランダム選択)でファインチューニングを行い、このギャップをほぼ解消しました。
23
 
24
+ **v2現行)**: 300時間コーパスH100×2(bf16)で学習。v1(54時間Apple Silicon MPSから全指標で改善。
25
+
26
+ ## 結果(v2、保留話者 5,194クリップ・日本語・CER、fp32評価)
27
 
28
  | モデル | チャンク推論 CER | フル注意 CER | ギャップ |
29
  |---|---|---|---|
30
+ | SenseVoiceSmall(公開重み) | 0.4024 | 0.1781 | 0.2243 |
31
+ | **本モデル v2** | **0.1679** | **0.1584** | **0.0095** |
32
 
33
+ - チャンク推論 CER は**相対 58% 削減**、チャンクとフル注意の差は **96% 縮小**(0.2243 → 0.0095)
34
+ - フル注意(非ストリーミング)推論もスモデルより改善
35
  - 評価データは学習と話者を完全分離(声優単位のリーク検証済み)
36
+ - `eval/` に評価の生JSON(採用条件と次点条件)を同梱
37
 
38
+ ## 学習詳細(v2)
39
 
40
+ - **データ**: [OOPPEENN/VisualNovel_Dataset](https://huggingface.co/datasets/OOPPEENN/56697375616C4E6F76656C5F44617461736574) のサブセット300時間(196,047クリップ、24アーカイブ・22スタジオ、16kHz mono、話者分離 train/val 分割)
41
  - **方式**: GT教師あり CTC + ダイナミックチャンクマスク(chunk_size=[8,12,16] / stride=[6,10,14] / pad_left=0 / look_back=1、1フレーム=60ms)
42
+ - **設定**: 4エポック、LR 2e-4(Noamwarmup 680 step ≈ 総ステップの8%)実効バッチ 48,000 tokenbf16、H100 NVL ×2 で約45分
43
  - **正規化**: モデルネイティブの全角句読点規約(!?…~)を維持。ASCII への NFKC 折り畳みは句読点について無効化
44
+ - 学習・評価コードと再現手順: [nelmo-ux/SenseVoice-mod](https://github.com/nelmo-ux/SenseVoice-mod)(`feat/chunk-training` ブランチ、`docs/chunk_training.md`)
45
 
46
  ## 制約・注意
47
 
48
  - **日本語特化**です。中国語・広東語・英語・韓国語の性能は評価しておらず、維持対象外です
49
  - 感情・イベントラベルはベースモデルの機能を引き継ぎますが、本 FT では最適化していません
50
+ - 同梱の `model.py` はチャンク推論対応版(`forward_chunk` / `init_chunk_cache` を含む)です
51
 
52
  ## 使い方
53
 
 
67
 
68
  ### チャンク(ストリーミング)推論
69
 
70
+ 同梱 `model.py` の `init_chunk_cache()` / `forward_chunk()`、または [SenseVoice-mod](https://github.com/nelmo-ux/SenseVoice-mod) の `streaming/` パッケージ(チャンクバックエンド)を使用してください。学習時ジオメトリ(window 12 / stride 10 / pad_right 2 / look_back 1)での評価値が上表���す。
71
 
72
  ## ファイル
73
 
74
+ - `model.pt` — ファインチューニング済み重み(v2 採用チェックポイント、weights のみ)
75
  - `config.yaml` / `configuration.json` / `am.mvn` / `chn_jpn_yue_eng_ko_spectok.bpe.model` — funasr ロードに必要な一式(ベースモデル由来)
76
  - `model.py` — チャンク推論対応のモデル実装(remote code)
77
+ - `eval/` — 全 val 確定評価の生JSON(採用 lr2e4/ep4・次点 lr6e4/ep4
78
 
79
  ## ライセンス・帰属
80
 
eval/eval_full_lr2e4_ep4.json ADDED
@@ -0,0 +1,241 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "generated_at": "2026-08-16T17:36:28+00:00",
3
+ "device": "cuda",
4
+ "precision": {
5
+ "mode": "fp32",
6
+ "comparable_to_fp32_baseline": true,
7
+ "allow_tf32_requested": false,
8
+ "cudnn_allow_tf32": false,
9
+ "cuda_matmul_allow_tf32": false,
10
+ "cudnn_deterministic": true,
11
+ "float32_matmul_precision": "highest",
12
+ "note": "TF32 disabled explicitly; CUDA ran in fp32 to stay comparable to the fp32 baseline"
13
+ },
14
+ "geometry": {
15
+ "geometry_index": 1,
16
+ "window_frames": 12,
17
+ "stride_frames": 10,
18
+ "pad_left_frames": 0,
19
+ "pad_right_frames": 2,
20
+ "encoder_look_back": 1,
21
+ "lookahead_ms": 120.0,
22
+ "training_config": {
23
+ "chunk_size": [
24
+ 8,
25
+ 12,
26
+ 16
27
+ ],
28
+ "stride": [
29
+ 6,
30
+ 10,
31
+ 14
32
+ ],
33
+ "pad_left": [
34
+ 0,
35
+ 0,
36
+ 0
37
+ ],
38
+ "encoder_att_look_back_factor": [
39
+ 1,
40
+ 1,
41
+ 1
42
+ ]
43
+ }
44
+ },
45
+ "scoring": {
46
+ "cer": "corpus-level Levenshtein over NFKC-normalised characters",
47
+ "punctuation": "stripped",
48
+ "whitespace": "stripped",
49
+ "rich_tags": "stripped",
50
+ "wer_note": "whitespace tokens; near-meaningless for unsegmented Japanese and Chinese - read CER"
51
+ },
52
+ "models": {
53
+ "base": {
54
+ "dir": "/workspace/models/SenseVoiceSmall",
55
+ "checkpoint": null
56
+ },
57
+ "finetuned": {
58
+ "dir": "/workspace/models/SenseVoiceSmall",
59
+ "checkpoint": "/outputs/run_lr2e4/model.pt.ep4"
60
+ }
61
+ },
62
+ "japanese": {
63
+ "note": "the selection axis: checkpoint choice keys off these numbers only",
64
+ "val": {
65
+ "jsonl": "/corpus/vn/val.jsonl",
66
+ "num_clips": 5194,
67
+ "metrics": {
68
+ "per_model": {
69
+ "base": {
70
+ "chunk": {
71
+ "cer": 0.4023662974910737,
72
+ "mean_cer": 0.4914901804851688,
73
+ "wer": 0.9986962190352021,
74
+ "num_clips": 5194,
75
+ "ref_chars": 104467,
76
+ "char_edits": 42034,
77
+ "ref_words": 13806,
78
+ "word_edits": 13788
79
+ },
80
+ "chunk_last_partial": {
81
+ "cer": 0.4350751912087071,
82
+ "mean_cer": 0.5188694564001065,
83
+ "wer": 0.9962335216572504,
84
+ "num_clips": 5194,
85
+ "ref_chars": 104467,
86
+ "char_edits": 45451,
87
+ "ref_words": 13806,
88
+ "word_edits": 13754
89
+ },
90
+ "full": {
91
+ "cer": 0.17806580068346942,
92
+ "mean_cer": 0.2572920595098674,
93
+ "wer": 0.970013037809648,
94
+ "num_clips": 5194,
95
+ "ref_chars": 104467,
96
+ "char_edits": 18602,
97
+ "ref_words": 13806,
98
+ "word_edits": 13392
99
+ },
100
+ "chunk_minus_full_cer": 0.2243004968076043,
101
+ "chunk_vs_full_cer": 0.3284395888446859
102
+ },
103
+ "finetuned": {
104
+ "chunk": {
105
+ "cer": 0.1679382005800875,
106
+ "mean_cer": 0.22391173120153837,
107
+ "wer": 0.6450094161958568,
108
+ "num_clips": 5194,
109
+ "ref_chars": 104467,
110
+ "char_edits": 17544,
111
+ "ref_words": 13806,
112
+ "word_edits": 8905
113
+ },
114
+ "chunk_last_partial": {
115
+ "cer": 0.2597853867728565,
116
+ "mean_cer": 0.3537779663494788,
117
+ "wer": 0.7392438070404173,
118
+ "num_clips": 5194,
119
+ "ref_chars": 104467,
120
+ "char_edits": 27139,
121
+ "ref_words": 13806,
122
+ "word_edits": 10206
123
+ },
124
+ "full": {
125
+ "cer": 0.15843280653220634,
126
+ "mean_cer": 0.21153142062270727,
127
+ "wer": 0.6774590757641605,
128
+ "num_clips": 5194,
129
+ "ref_chars": 104467,
130
+ "char_edits": 16551,
131
+ "ref_words": 13806,
132
+ "word_edits": 9353
133
+ },
134
+ "chunk_minus_full_cer": 0.009505394047881144,
135
+ "chunk_vs_full_cer": 0.08638681916209283
136
+ }
137
+ },
138
+ "delta": {
139
+ "chunk_cer": -0.23442809691098623,
140
+ "full_cer": -0.019632994151263072,
141
+ "chunk_minus_full_cer": -0.21479510275972316,
142
+ "chunk_vs_full_cer": -0.24205276968259304
143
+ }
144
+ }
145
+ },
146
+ "clips": []
147
+ },
148
+ "reference_only": {
149
+ "note": "reference only, not a selection criterion: this finetune is Japanese-specialised and Chinese retention is not a maintained property",
150
+ "clips": [
151
+ {
152
+ "key": "zh_sample.wav",
153
+ "path": "/workspace/runtime/llama.cpp/tests/sample.wav",
154
+ "language": "auto",
155
+ "reference_source": "base model full-attention decode (no ground truth)",
156
+ "per_model": {
157
+ "base": {
158
+ "full": "<|zh|><|NEUTRAL|><|Speech|><|woitn|>我想问我在滨海新区有房",
159
+ "chunk": "我想想问我在滨海心新区有有房",
160
+ "chunk_last_partial": "我想想问我在滨���心新区有",
161
+ "chunk_vs_full_cer": 0.2727272727272727
162
+ },
163
+ "finetuned": {
164
+ "full": "<|ja|><|NEUTRAL|><|Speech|><|woitn|>我想我在滨海新区有房",
165
+ "chunk": "我想。海新区",
166
+ "chunk_last_partial": "我想。海新区",
167
+ "chunk_vs_full_cer": 0.5
168
+ }
169
+ },
170
+ "drift_cer_vs_base_full": 0.09090909090909091,
171
+ "gap_delta": 0.2272727272727273
172
+ }
173
+ ]
174
+ },
175
+ "selection": {
176
+ "metric": "ja_val_chunk_cer",
177
+ "value": 0.1679382005800875,
178
+ "model": "finetuned",
179
+ "note": "corpus CER of the complete chunk-mode decode on the held-out Japanese val set; lower is better"
180
+ },
181
+ "examples": [
182
+ {
183
+ "key": "0verflow_School_Days_HQ__ちっちゃい子__04_kb_c03_0630",
184
+ "scope": "japanese",
185
+ "reference": "ねー。ままー。あっち、ちゅーしてる",
186
+ "base_full": "<|ja|><|EMO_UNKNOWN|><|Speech|><|woitn|>ねえママあちチューしてる",
187
+ "base_chunk": "ねえマママ八九しててる",
188
+ "base_chunk_last_partial": "ねえマママ八九しててる",
189
+ "finetuned_full": "<|ja|><|NEUTRAL|><|Speech|><|woitn|>ねえ、ママ、あっち、チューしてる",
190
+ "finetuned_chunk": "ねえ、まマ、あっち、ちゅーしてる",
191
+ "finetuned_chunk_last_partial": "ねえ、まマ、あっち、ちゅーしてる"
192
+ },
193
+ {
194
+ "key": "0verflow_School_Days_HQ__ちっちゃい子__04_kb_c03_0680",
195
+ "scope": "japanese",
196
+ "reference": "ちゅーだよ。ちゅー……あっ、ままー",
197
+ "base_full": "<|ja|><|EMO_UNKNOWN|><|Speech|><|woitn|>十だよじまあまあ",
198
+ "base_chunk": "十代だよじはマ奶",
199
+ "base_chunk_last_partial": "十代だよじはマ奶",
200
+ "finetuned_full": "<|ja|><|NEUTRAL|><|Speech|><|woitn|>ちゅーだよ!ちゅー!わ、まーま",
201
+ "finetuned_chunk": "ちーだよ、ちゅーは、な",
202
+ "finetuned_chunk_last_partial": "ちーだよ、ちゅーは、な"
203
+ },
204
+ {
205
+ "key": "0verflow_School_Days_HQ__ちっちゃい子__04_kc_c03_0490",
206
+ "scope": "japanese",
207
+ "reference": "ねー。ままー。あっち、ちゅーしてる",
208
+ "base_full": "<|ja|><|EMO_UNKNOWN|><|Speech|><|woitn|>ねえママあちチューしてる",
209
+ "base_chunk": "ねえマママ八九しててる",
210
+ "base_chunk_last_partial": "ねえマママ八九しててる",
211
+ "finetuned_full": "<|ja|><|NEUTRAL|><|Speech|><|woitn|>ねえ、ママ、あっち、チューしてる",
212
+ "finetuned_chunk": "ねえ、まマ、あっち、ちゅーしてる",
213
+ "finetuned_chunk_last_partial": "ねえ、まマ、あっち、ちゅーしてる"
214
+ },
215
+ {
216
+ "key": "0verflow_School_Days_HQ__ちっちゃい子__04_kc_c03_0540",
217
+ "scope": "japanese",
218
+ "reference": "ちゅーだよ。ちゅー……あっ、ままー",
219
+ "base_full": "<|ja|><|EMO_UNKNOWN|><|Speech|><|woitn|>十だよじまあまあ",
220
+ "base_chunk": "十代だよじはマ奶",
221
+ "base_chunk_last_partial": "十代だよじはマ奶",
222
+ "finetuned_full": "<|ja|><|NEUTRAL|><|Speech|><|woitn|>ちゅーだよ!ちゅー!わ、まーま",
223
+ "finetuned_chunk": "ちーだよ、ちゅーは、な",
224
+ "finetuned_chunk_last_partial": "ちーだよ、ちゅーは、な"
225
+ },
226
+ {
227
+ "key": "0verflow_School_Days_HQ__みなみ__02_2s_r08_0130",
228
+ "scope": "japanese",
229
+ "reference": "どうせ、大した用じゃないんでしょ",
230
+ "base_full": "<|ja|><|SURPRISED|><|Speech|><|woitn|>どうせ大したようじゃないんでしょう",
231
+ "base_chunk": "どうせせ大ししたようじゃないないんでしょ",
232
+ "base_chunk_last_partial": "どうせせ大ししたようじゃない",
233
+ "finetuned_full": "<|ja|><|NEUTRAL|><|Speech|><|woitn|>どうせ、大したようじゃないんでしょ",
234
+ "finetuned_chunk": "どうせ、大したようじゃないんでしょ",
235
+ "finetuned_chunk_last_partial": "どうせ、大したようじゃな"
236
+ }
237
+ ],
238
+ "warnings": [
239
+ "bundled ja.mp3 not found under ~/.cache/huggingface/hub/models--FunAudioLLM--SenseVoiceSmall/snapshots/*/example/ja.mp3 - skipped; pull the HuggingFace snapshot or pass --ja-clip to include it"
240
+ ]
241
+ }
eval/eval_full_lr6e4_ep4.json ADDED
@@ -0,0 +1,241 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "generated_at": "2026-08-16T16:54:50+00:00",
3
+ "device": "cuda",
4
+ "precision": {
5
+ "mode": "fp32",
6
+ "comparable_to_fp32_baseline": true,
7
+ "allow_tf32_requested": false,
8
+ "cudnn_allow_tf32": false,
9
+ "cuda_matmul_allow_tf32": false,
10
+ "cudnn_deterministic": true,
11
+ "float32_matmul_precision": "highest",
12
+ "note": "TF32 disabled explicitly; CUDA ran in fp32 to stay comparable to the fp32 baseline"
13
+ },
14
+ "geometry": {
15
+ "geometry_index": 1,
16
+ "window_frames": 12,
17
+ "stride_frames": 10,
18
+ "pad_left_frames": 0,
19
+ "pad_right_frames": 2,
20
+ "encoder_look_back": 1,
21
+ "lookahead_ms": 120.0,
22
+ "training_config": {
23
+ "chunk_size": [
24
+ 8,
25
+ 12,
26
+ 16
27
+ ],
28
+ "stride": [
29
+ 6,
30
+ 10,
31
+ 14
32
+ ],
33
+ "pad_left": [
34
+ 0,
35
+ 0,
36
+ 0
37
+ ],
38
+ "encoder_att_look_back_factor": [
39
+ 1,
40
+ 1,
41
+ 1
42
+ ]
43
+ }
44
+ },
45
+ "scoring": {
46
+ "cer": "corpus-level Levenshtein over NFKC-normalised characters",
47
+ "punctuation": "stripped",
48
+ "whitespace": "stripped",
49
+ "rich_tags": "stripped",
50
+ "wer_note": "whitespace tokens; near-meaningless for unsegmented Japanese and Chinese - read CER"
51
+ },
52
+ "models": {
53
+ "base": {
54
+ "dir": "/workspace/models/SenseVoiceSmall",
55
+ "checkpoint": null
56
+ },
57
+ "finetuned": {
58
+ "dir": "/workspace/models/SenseVoiceSmall",
59
+ "checkpoint": "/outputs/run_lr6e4/model.pt.ep4"
60
+ }
61
+ },
62
+ "japanese": {
63
+ "note": "the selection axis: checkpoint choice keys off these numbers only",
64
+ "val": {
65
+ "jsonl": "/corpus/vn/val.jsonl",
66
+ "num_clips": 5194,
67
+ "metrics": {
68
+ "per_model": {
69
+ "base": {
70
+ "chunk": {
71
+ "cer": 0.4023662974910737,
72
+ "mean_cer": 0.4914901804851688,
73
+ "wer": 0.9986962190352021,
74
+ "num_clips": 5194,
75
+ "ref_chars": 104467,
76
+ "char_edits": 42034,
77
+ "ref_words": 13806,
78
+ "word_edits": 13788
79
+ },
80
+ "chunk_last_partial": {
81
+ "cer": 0.4350751912087071,
82
+ "mean_cer": 0.5188694564001065,
83
+ "wer": 0.9962335216572504,
84
+ "num_clips": 5194,
85
+ "ref_chars": 104467,
86
+ "char_edits": 45451,
87
+ "ref_words": 13806,
88
+ "word_edits": 13754
89
+ },
90
+ "full": {
91
+ "cer": 0.17806580068346942,
92
+ "mean_cer": 0.2572920595098674,
93
+ "wer": 0.970013037809648,
94
+ "num_clips": 5194,
95
+ "ref_chars": 104467,
96
+ "char_edits": 18602,
97
+ "ref_words": 13806,
98
+ "word_edits": 13392
99
+ },
100
+ "chunk_minus_full_cer": 0.2243004968076043,
101
+ "chunk_vs_full_cer": 0.3284395888446859
102
+ },
103
+ "finetuned": {
104
+ "chunk": {
105
+ "cer": 0.16874228225181157,
106
+ "mean_cer": 0.22313613924150844,
107
+ "wer": 0.6497175141242938,
108
+ "num_clips": 5194,
109
+ "ref_chars": 104467,
110
+ "char_edits": 17628,
111
+ "ref_words": 13806,
112
+ "word_edits": 8970
113
+ },
114
+ "chunk_last_partial": {
115
+ "cer": 0.2664190605645802,
116
+ "mean_cer": 0.3629660993168242,
117
+ "wer": 0.74655946689845,
118
+ "num_clips": 5194,
119
+ "ref_chars": 104467,
120
+ "char_edits": 27832,
121
+ "ref_words": 13806,
122
+ "word_edits": 10307
123
+ },
124
+ "full": {
125
+ "cer": 0.15495802502225584,
126
+ "mean_cer": 0.2095499274899328,
127
+ "wer": 0.6350861944082283,
128
+ "num_clips": 5194,
129
+ "ref_chars": 104467,
130
+ "char_edits": 16188,
131
+ "ref_words": 13806,
132
+ "word_edits": 8768
133
+ },
134
+ "chunk_minus_full_cer": 0.01378425722955573,
135
+ "chunk_vs_full_cer": 0.08310036060127224
136
+ }
137
+ },
138
+ "delta": {
139
+ "chunk_cer": -0.23362401523926216,
140
+ "full_cer": -0.02310777566121358,
141
+ "chunk_minus_full_cer": -0.21051623957804858,
142
+ "chunk_vs_full_cer": -0.24533922824341364
143
+ }
144
+ }
145
+ },
146
+ "clips": []
147
+ },
148
+ "reference_only": {
149
+ "note": "reference only, not a selection criterion: this finetune is Japanese-specialised and Chinese retention is not a maintained property",
150
+ "clips": [
151
+ {
152
+ "key": "zh_sample.wav",
153
+ "path": "/workspace/runtime/llama.cpp/tests/sample.wav",
154
+ "language": "auto",
155
+ "reference_source": "base model full-attention decode (no ground truth)",
156
+ "per_model": {
157
+ "base": {
158
+ "full": "<|zh|><|NEUTRAL|><|Speech|><|woitn|>我想问我在滨海新区有房",
159
+ "chunk": "我想想问我在滨海心新区有有房",
160
+ "chunk_last_partial": "我想想问我在滨海��新区有",
161
+ "chunk_vs_full_cer": 0.2727272727272727
162
+ },
163
+ "finetuned": {
164
+ "full": "<|ja|><|NEUTRAL|><|Speech|><|woitn|>…わしは…わざ海進駐をファ",
165
+ "chunk": "我シは…おざピ海進駐フ",
166
+ "chunk_last_partial": "我シは…おざピ海進駐",
167
+ "chunk_vs_full_cer": 0.5454545454545454
168
+ }
169
+ },
170
+ "drift_cer_vs_base_full": 1.0,
171
+ "gap_delta": 0.2727272727272727
172
+ }
173
+ ]
174
+ },
175
+ "selection": {
176
+ "metric": "ja_val_chunk_cer",
177
+ "value": 0.16874228225181157,
178
+ "model": "finetuned",
179
+ "note": "corpus CER of the complete chunk-mode decode on the held-out Japanese val set; lower is better"
180
+ },
181
+ "examples": [
182
+ {
183
+ "key": "0verflow_School_Days_HQ__ちっちゃい子__04_kb_c03_0630",
184
+ "scope": "japanese",
185
+ "reference": "ねー。ままー。あっち、ちゅーしてる",
186
+ "base_full": "<|ja|><|EMO_UNKNOWN|><|Speech|><|woitn|>ねえママあちチューしてる",
187
+ "base_chunk": "ねえマママ八九しててる",
188
+ "base_chunk_last_partial": "ねえマママ八九しててる",
189
+ "finetuned_full": "<|ja|><|NEUTRAL|><|Speech|><|woitn|>ねえ、まま。あっち、ちゅーしてる",
190
+ "finetuned_chunk": "ね、まま。あっち、ちーしてる",
191
+ "finetuned_chunk_last_partial": "ね、まま。あっち、ちーしてる"
192
+ },
193
+ {
194
+ "key": "0verflow_School_Days_HQ__ちっちゃい子__04_kb_c03_0680",
195
+ "scope": "japanese",
196
+ "reference": "ちゅーだよ。ちゅー……あっ、ままー",
197
+ "base_full": "<|ja|><|EMO_UNKNOWN|><|Speech|><|woitn|>十だよじまあまあ",
198
+ "base_chunk": "十代だよじはマ奶",
199
+ "base_chunk_last_partial": "十代だよじはマ奶",
200
+ "finetuned_full": "<|ja|><|NEUTRAL|><|Speech|><|woitn|>ちゅーだよ!ちゅー!わ、まあまあ",
201
+ "finetuned_chunk": "ちだよ!1ゅ!あ、メーま!",
202
+ "finetuned_chunk_last_partial": "ちだよ!1ゅ!あ、メーま"
203
+ },
204
+ {
205
+ "key": "0verflow_School_Days_HQ__ちっちゃい子__04_kc_c03_0490",
206
+ "scope": "japanese",
207
+ "reference": "ねー。ままー。あっち、ちゅーしてる",
208
+ "base_full": "<|ja|><|EMO_UNKNOWN|><|Speech|><|woitn|>ねえママあちチューしてる",
209
+ "base_chunk": "ねえマママ八九しててる",
210
+ "base_chunk_last_partial": "ねえマママ八九しててる",
211
+ "finetuned_full": "<|ja|><|NEUTRAL|><|Speech|><|woitn|>ねえ、まま。あっち、ちゅーしてる",
212
+ "finetuned_chunk": "ね、まま。あっち、ちーしてる",
213
+ "finetuned_chunk_last_partial": "ね、まま。あっち、ちーしてる"
214
+ },
215
+ {
216
+ "key": "0verflow_School_Days_HQ__ちっちゃい子__04_kc_c03_0540",
217
+ "scope": "japanese",
218
+ "reference": "ちゅーだよ。ちゅー……あっ、ままー",
219
+ "base_full": "<|ja|><|EMO_UNKNOWN|><|Speech|><|woitn|>十だよじまあまあ",
220
+ "base_chunk": "十代だよじはマ奶",
221
+ "base_chunk_last_partial": "十代だよじはマ奶",
222
+ "finetuned_full": "<|ja|><|NEUTRAL|><|Speech|><|woitn|>ちゅーだよ!ちゅー!わ、まあまあ",
223
+ "finetuned_chunk": "ちだよ!1ゅ!あ、メーま!",
224
+ "finetuned_chunk_last_partial": "ちだよ!1ゅ!あ、メーま"
225
+ },
226
+ {
227
+ "key": "0verflow_School_Days_HQ__みなみ__02_2s_r08_0130",
228
+ "scope": "japanese",
229
+ "reference": "どうせ、大した用じゃないんでしょ",
230
+ "base_full": "<|ja|><|SURPRISED|><|Speech|><|woitn|>どうせ大したようじゃないんでしょう",
231
+ "base_chunk": "どうせせ大ししたようじゃないないんでしょ",
232
+ "base_chunk_last_partial": "どうせせ大ししたようじゃない",
233
+ "finetuned_full": "<|ja|><|NEUTRAL|><|Speech|><|woitn|>どうせ、大したようじゃないんでしょ?",
234
+ "finetuned_chunk": "どうせ、大したようじゃないんでしょ?",
235
+ "finetuned_chunk_last_partial": "どうせ、大したようじゃ"
236
+ }
237
+ ],
238
+ "warnings": [
239
+ "bundled ja.mp3 not found under ~/.cache/huggingface/hub/models--FunAudioLLM--SenseVoiceSmall/snapshots/*/example/ja.mp3 - skipped; pull the HuggingFace snapshot or pass --ja-clip to include it"
240
+ ]
241
+ }
model.pt CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:b6475152bc6bda2e0266db22176f28822655182d0754afa303e3095120c2620a
3
- size 936290143
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:f5982ee0d7eb5e179376e4656035c16cfdfc3c341c69f2747d200ad8289eb15a
3
+ size 936300660