Files
FunASR/tests/test_sensevoice_continual_finetuning_docs.py

83 lines
2.8 KiB
Python

from pathlib import Path
ROOT = Path(__file__).resolve().parents[1]
SENSEVOICE_DIR = ROOT / "examples" / "industrial_data_pretraining" / "sense_voice"
def test_readmes_link_continual_finetuning_guides():
readme = (SENSEVOICE_DIR / "README.md").read_text(encoding="utf-8")
readme_zh = (SENSEVOICE_DIR / "README_zh.md").read_text(encoding="utf-8")
assert "[Continual fine-tuning](CONTINUAL_FINETUNING.md)" in readme
assert "[持续微调指南](CONTINUAL_FINETUNING_zh.md)" in readme_zh
def test_english_guide_covers_retention_controls_and_worked_example():
guide = (SENSEVOICE_DIR / "CONTINUAL_FINETUNING.md").read_text(encoding="utf-8")
required = [
"cannot guarantee zero regression",
"speaker-disjoint",
"pseudo-label",
"replay:new",
"1:1",
"2:1",
"3:1",
'++freeze_param="encoder"',
'++freeze_param="encoder.encoders0,encoder.encoders.0,encoder.encoders.1,encoder.encoders.2"',
"++optim_conf.lr=0.00002",
"<|zh|>",
"<|teochew|>",
"8.45",
"16.9",
"Mandarin",
"Cantonese",
"Teochew",
]
assert all(item in guide for item in required)
def test_checkpoint_selection_recipe_and_evaluation_boundaries():
recipe = (SENSEVOICE_DIR / "finetune.sh").read_text(encoding="utf-8")
assert "++train_conf.avg_keep_nbest_models_type=loss" in recipe
for name in ("CONTINUAL_FINETUNING.md", "CONTINUAL_FINETUNING_zh.md"):
guide = (SENSEVOICE_DIR / name).read_text(encoding="utf-8")
assert "++train_conf.avg_keep_nbest_models_type=loss" in guide
assert "acc_rich" in guide
assert "<|minnan|>" in guide
assert "93.3%" not in guide
english = (SENSEVOICE_DIR / "CONTINUAL_FINETUNING.md").read_text(encoding="utf-8")
chinese = (SENSEVOICE_DIR / "CONTINUAL_FINETUNING_zh.md").read_text(encoding="utf-8")
assert "independently audited" in english
assert "new output directory" in english
assert "allowlist" in english
assert "独立核验" in chinese
assert "新的输出目录" in chinese
assert "白名单" in chinese
def test_chinese_guide_covers_retention_controls_and_worked_example():
guide = (SENSEVOICE_DIR / "CONTINUAL_FINETUNING_zh.md").read_text(encoding="utf-8")
required = [
"不能保证零退化",
"说话人不重叠",
"伪标签",
"replay:new",
"1:1",
"2:1",
"3:1",
'++freeze_param="encoder"',
'++freeze_param="encoder.encoders0,encoder.encoders.0,encoder.encoders.1,encoder.encoders.2"',
"++optim_conf.lr=0.00002",
"<|zh|>",
"<|teochew|>",
"8.45",
"16.9",
"普通话",
"粤语",
"潮汕话",
]
assert all(item in guide for item in required)