使用 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 格式字幕檔的表現。結果顯示:
- Claude 表現最佳,雖然初次嘗試失敗,但經過簡單修正後就能成功完成任務。
- ChatGPT-4o 表現次之,但存在「健忘」問題,無法妥善處理時間格式不一致的情況,導致最終結果不完整。
- Google Gemini 表現最差,連續出現基本語法錯誤,無法完成任務。
這個比較凸顯了目前 AI 在處理特定任務時的優劣勢。雖然 Claude表現最佳,但提供完整範例與需求說明仍非常重要,避免出現基礎錯誤。而其他 AI 需要更詳盡的規格說明,與互動過程中需要人類的驗證和核對結果,以確保最終結果的準確性和完整性。
留言
張貼留言