faster-whisper max_speech_duration_s=1 數值過小, 造成模型幻覺

參數調整建議

你的設定中 max_speech_duration_s=1 數值過小。這會強制 VAD 每秒鐘就切斷一次。當語音被切得太碎,模型反而容易因為上下文不足而產生幻覺,或是把零碎的聲音補償成重複的文字。建議將這個值放寬到 15 到 20 左右。

目前的字幕出現長達 30 秒的區間,通常是因為 VAD 沒有成功切斷聲音。模型認為這段時間內一直有人在說話。這可能與 min_silence_duration_ms 太短有關。

您可以嘗試以下參數組合:

segments, info = model.transcribe(
    input_file, 
    language=language, 
    vad_filter=True,
    condition_on_previous_text=False,
    vad_parameters=dict(
        min_silence_duration_ms=500,
        max_speech_duration_s=20,
        speech_pad_ms=400
    ),
    beam_size=5,
    initial_prompt="繁體中文字幕。",
    no_speech_threshold=0.6,
    log_prob_threshold=-1.0,
    compression_ratio_threshold=2.4
)

關鍵調整說明

min_silence_duration_ms 增加到 500 毫秒。這樣模型比較能識別出正常的說話停頓。太短的設定會讓環境噪音干擾判定。

speech_pad_ms 增加到 400 毫秒。這會在切分片段的前後多留一點空間。這能幫助模型完整辨識字首與字尾,減少因為聲音被截斷導致的重複亂碼。

加入 initial_prompt。指定為繁體中文可以導正模型的語氣。這能有效減少出現奇怪贅字或簡繁混雜的機率。

調整 compression_ratio_threshold。如果模型輸出的內容重複率太高,這個參數會觸發重新辨識。這對解決你提到的重複文字問題很有幫助。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *