機器人字幕轉換比較:Claude 勝出

使用 Claude 3.5 Sonnet、ChatGPT-4o 和 Google Gemini 等機器人將 YouTube 字幕轉成一般影片的字幕檔。比較產生的程式碼,由 Claude 勝出,ChatGPT 和 Google Gemini 表現不佳,需要更詳盡的需求規格說明,顯示出不同模型的強項。

Photo by Goh Rhy Yan on StockSnap


問題狀況

YouTube 雖然提供手動複製貼上字幕的方式 [1],但是跟一般影片的字幕檔 (SRT) 格式還是有差距:

(1) YouTube 字幕

```txt

0:01

嗨,這是第1段字幕

0:10

這是第2段字幕

0:15

這是第3段字幕

```

(2) 影片的字幕檔

```srt

1

00:00:01,000 --> 00:00:10,000

嗨,這是第1段字幕


2

00:00:10,000 --> 00:00:15,000

這是第2段字幕

```

如果是長篇幅的 YouTube 字幕複製貼上給 ChatGPT-4o 或 Claude 常會遇到中途中斷的狀況。後來想到直接要求機器人產生 Python 程式碼。


問題解決過程

一號選手:Claude 3.5 Sonnet

Claude 第一次執行遇到錯誤

```

% python gen_srt.py input.txt out0725_from_claude.srt

Traceback (most recent call last):

  File "/Users/user/Downloads/gen_srt.py", line 57, in <module>

    main()

  File "/Users/user/Downloads/gen_srt.py", line 44, in main

    srt_output = generate_srt(input_text)

  File "/Users/user/Downloads/gen_srt.py", line 22, in generate_srt

    end_time = time_to_srt(time_str) if i + 2 >= len(lines) else time_to_srt(lines[i + 2].strip())

  File "/Users/user/Downloads/gen_srt.py", line 5, in time_to_srt

    m, s = map(int, time_str.split(':'))

ValueError: too many values to unpack (expected 2)

```

Claude 判斷是「輸入檔案中的時間格式可能不一致。讓我們修改腳本以更靈活地處理不同的時間格式。」修正後再次執行,就順利產生字幕檔。


二號選手:ChatGPT-4o

第一次執行產生的字幕檔格式錯誤,下方結果可以看到第2段字幕的結束時間,不是第3段字幕的開始時間

```srt

1

00:0:01,000 --> 00:00:10,000

嗨,這是第1段字幕


2

00:0:10,000 --> 00:00:17,000

這是第2段字幕


3

00:0:15,000 --> 00:00:22,000

這是第3段字幕

```

教導 ChatGPT-4o 字幕時間規則之後,第二次執行遇到 Claude 同樣會遇到的時間格式不一致的問題,ChatGPT 修正後執行過程一直出現「Warning: Skipping invalid entry. Invalid time format: 0:12:34」的警告訊息,很明顯沒有好好地處理時間格式不一致的問題 (對話一開始上傳過文字檔,顯然對話過程中已經「健忘」,忽略使用者提供的重要資訊),導致最後產生的字幕檔是不完整的。


三號選手:Google Gemini

因為無法直接上傳文字檔,所以需要事先說明規格

請產生將文字檔轉換成字幕檔 (src) 的 python 程式

1. 輸入

```txt

0:01

嗨,大家好 這是第1段字幕 ...

0:10

這是第2段字幕

0:15

這是第3段字幕

```


2. 使用 command line 方式產生

e.g. script.py input.txt output.srt


第一次執行產生的字幕檔格式錯誤,下方結果可以看到第2段字幕的結束時間,不是第3段字幕的開始時間

```srt

1

0:01 --> 0:01

嗨,這是第1段字幕


2

0:10 --> 0:10

這是第2段字幕


3

0:15 --> 0:15

這是第3段字幕

```

如果 ChatGPT-4o 是「小聰明」,Google Gemini 只能用「單純」來形容。教機器人字幕檔起迄的規則後,修正後的程式遇到「IndentationError: expected an indented block」雖然是基礎的語法錯誤,修正後連續遇到兩次語法錯誤,直接停止試驗。


小結

文章比較了 Claude 3.5 Sonnet、ChatGPT-4o 和 Google Gemini 將 YouTube 字幕轉換為標準 SRT 格式字幕檔的表現。結果顯示:

  1. Claude 表現最佳,雖然初次嘗試失敗,但經過簡單修正後就能成功完成任務。
  2. ChatGPT-4o 表現次之,但存在「健忘」問題,無法妥善處理時間格式不一致的情況,導致最終結果不完整。
  3. Google Gemini 表現最差,連續出現基本語法錯誤,無法完成任務。

這個比較凸顯了目前 AI 在處理特定任務時的優劣勢。雖然 Claude表現最佳,但提供完整範例與需求說明仍非常重要,避免出現基礎錯誤。而其他 AI 需要更詳盡的規格說明,與互動過程中需要人類的驗證和核對結果,以確保最終結果的準確性和完整性。


參考資料

  1. How to Download YouTube Subtitles Easily

留言