SenseVoiceSmall - Liujgoj Cantonese Fine-tuned 🎙️
本模型為基於 iic/SenseVoiceSmall 微調嘅粵語語音識別 (ASR) 模型,專門優化用於直接轉寫出 溜歌粵語 (Liujgoj Cantonese) 拼音正詞法文本。
📊 1. 訓練細節 (Training Details)
- 訓練數據 (Dataset): 約 18 小時 粵語對話音訊及對應嘅 Liujgoj 正詞法標註語料。
- 訓練時間 (Training Time): 2.5 小時 (使用單張 A800 80G GPU,全量微調 15 個 Epoch)。
- 收斂效果 (Loss Convergence): 初始 CTC Loss 由 250+ 穩定收斂至平均 36.58,聲調及正詞法分詞對齊極佳。
💡 2. 訓練避坑指南 (Lessons Learned & Anti-Pitfalls)
喺微調 SenseVoice 轉寫拉丁拼音/自訂標註系統時,如果遇到問題,請注意以下幾點:
處理 CTC Loss NaN 問題:
- 微調初期極易出現
WARNING: X/16 samples got nan grad. These were ignored for CTC loss.。 - 原因: 語音特徵長度 (Frames) 少於目標文字 Token 長度,或文字包含未喺 Tokenizer 註冊嘅特殊字元。
- 解決方案: 訓練前必須嚴格過濾
len(audio_frames) < len(target_tokens)嘅極短樣本,並確保學習率 (Learning Rate) 設定合理 (建議2e-4至5e-4配合 Warmup)。
- 微調初期極易出現
標籤開頭帶有
<|woitn|>/you the:- SenseVoice 原生帶有語種 (Language)、富文本事件及 ITN (逆文本正規化) Token。
- 微調時若未強制將富文本標籤拿走,推理時輸出會自帶
<|woitn|>等標記。此屬正常現象,推理後用簡單嘅 Regex 或切分邏輯過濾即可。
音訊重採樣:
- SenseVoice 核心特徵提取器要求 16kHz 單聲道 輸入。訓練或推理前務必確保音訊轉為 16000Hz,否則語音長度計算錯誤會直接導致 CTC 報錯。
🚀 3. 使用方法 (Usage)
安裝依賴 (Prerequisites)
pip install funasr soundfile resampy torch
---
## 推理範例 (Inference Example)
你可以直接使用 FunASR 載入本模型進行推理:
import re
from funasr import AutoModel
# 1. 載入 Hugging Face 模型
model = AutoModel(
model="YourUsername/SenseVoiceSmall-Liujgoj-Cantonese", # 換成你嘅 HF Repo ID
trust_remote_code=True,
disable_update=True
)
# 2. 進行語音識別
res = model.generate(
input="your_test_audio.wav", # 支援 .wav, .mp3, .opus 等格式
cache={},
language="zh",
use_itn=False
)
raw_text = res[0]["text"] if res else ""
# 3. 過濾 SenseVoice 開頭嘅系統標籤,提取純淨 Liujgoj 文本
def clean_liujgoj_text(text):
text = re.sub(r"<\|.*?\|>", "", text)
text = re.sub(r"^(you|the|nospeech|Speech|yue|neutral|zh)\s*", "", text, flags=re.IGNORECASE)
return text.strip()
clean_text = clean_liujgoj_text(raw_text)
print("🎯 轉寫結果 (Liujgoj):", clean_text)
🔥 測試結果:
測試音訊選自《鹿鼎記》開場白(來源:CanCLID/zoengjyutgaai):
🎯 轉寫 (Liujgoj): you the<|woitn|>waaahsvt ta hair cingjciux ge hongjheij cojninx dgjtinj ge mauxh yatj yath batj fungj yvx douj munqdeih bingjsoengj
🎯 轉寫 (Liujgoj): you the<|woitn|>hair gowongjnaamx kaauganan hoirbinj yatj tiux daaihloouh zijsoengh yauq yatj deoi cingjbingj saurzaap doujcoengj aakj zv catj gaa cauxcej hoeng zvh batkjfongj haangxganr
🎯 轉寫 (Liujgoj): you the<|woitn|>cininxminh gor saamj gaai cauxcej aax muiq gaaj zauh wanr zvh yatj go naamxzir douj haih svjsangj daarbaanh wox
語音對應嘅正確漢字係:
話説喺清朝嘅康熙初年,冬天嘅某一日,北風如刀,滿地冰霜啊。 喺江南靠近海邊一條大路之上,有一隊清兵,手執刀槍,押住七架囚車,向住北方行緊。 前便嗰三架囚車啊,每架就韞住一個男子,都係書生打扮。
多個checkpoint嘅測試結果:
📌 【 Epoch 3 Checkpoint 】
🎵 [001_001.opus] -> <|nospeech|> you<|Speech|><|woitn|>waaah svth tair cingjcaux ge hoongjheij coj ninx dgjtinj ge mauxh yat yat batkj funungjyx douj mudeih bingjsoengjax 🎵 [001_002.opus] -> you<|Speech|><|woitn|>haair gogjnaamx caauganan hoibinj yatj tiux daaihlouh zijsoengh yauq yat deoi cingjbingj saurzaap douj coengj gajzv catj gaa cauxcej hoeng zv batjfongj haangxgananr 🎵 [001_003.opus] -> <|nospeech|> you<|Speech|><|woitn|>cininxbinin go saamj gaai cauxcej aax muiq gaa zauh wanr zvh yatj go naamziirr douj haih svjsangj daarbaanh
📌 【 Epoch 4 Checkpoint 】
🎵 [001_001.opus] -> you the<|woitn|>waaah svt tair cingjcaux ge hoongjheij coj ninx dgjtinj ge mauxh yat yath batkj funungjyvx douj mudeih bingjsoengj 🎵 [001_002.opus] -> you the<|woitn|>haair goongjnaamx kaauganan hoibinj yatj tiux daaihloouh zijsoengh yauq yatq deoi cingjbingj saurzaap douj coengj aakj yvth catj gaa cauxcej hoeng zv batjfongj haangxganr 🎵 [001_003.opus] -> you the<|woitn|>cininxbin go saamj gaai cauxcej aax muuirq gaa zauh wanr zvh yatj go naamxziirr douj haih svjsangj daarbaanh
📌 【 Epoch 5 Checkpoint 】
🎵 [001_001.opus] -> you the<|woitn|>waaah svt tair cingjciux ge hoongjheij coj ninx dgjtinj ge mauxh yat yath batkj fungjyx douj mudeih bingjsoengj 🎵 [001_002.opus] -> you the<|woitn|>haair goongjnaamx kaaugann hoirbinj yatj tiux daaihlouh zijsoengh yauq yat deoi cingjbingj saurzaap doujcoengj aakjzvth catj gaa cauxcej hoeng zv batkjfongj haangxganr 🎵 [001_003.opus] -> you the<|woitn|>cininxbinx go saamj gaai cauxcej aax muuq gaa zauh wanr zvh yatj go naamxziirr douj haih svjsangj daarbaanh
📌 【 Epoch 6 Checkpoint 】
🎵 [001_001.opus] -> you the<|woitn|>waah svt tair cingjciux ge hoongjheij coj ninx dgjtinj ge mauxh yat yath batkj fungjyvx douj munqdih bingjsoengj 🎵 [001_002.opus] -> you the<|woitn|>haair gowongjnaamx kaauganh hoirbinj yatj tiux daaihlouh zijsoengh yauq yatj deoi cingjbingj saurzaap douj coengj aakjzv catj gaa cauxcej hoeng zv batkjfongj haangxganr 🎵 [001_003.opus] -> you the<|woitn|>cininxbinh go saamj gaai cauxcej aa muiq gaa zauh wanr zvh yatj go naamzir douj haih svjsangj daarbaanh
- Downloads last month
- 12