可以幫我用 python 輸入一個mp3轉逐字稿嗎? 要有時間的字幕檔

 

 

 




你可以使用 whisper 來轉錄 MP3 音檔並生成帶時間戳的字幕檔(SRT)。以下是完整的 Python 程式:

 

1. 安裝 whisper 和 ffmpeg
如果你還沒安裝 whisper 和 ffmpeg,請先執行:

 

pip install openai-whisper
sudo apt install ffmpeg  # 或者使用 brew install ffmpeg (macOS)



2. 轉錄 MP3 並輸出 SRT 檔案

import whisper

# 加載 Whisper 模型(建議使用 'medium' 或 'small')
model = whisper.load_model("medium")

# 轉錄音檔
audio_path = "input.mp3"  # 替換成你的 MP3 檔案
result = model.transcribe(audio_path, task="transcribe")

# 產生 SRT 字幕檔
srt_path = "output.srt"
with open(srt_path, "w", encoding="utf-8") as f:
    for i, segment in enumerate(result["segments"]):
        start_time = segment["start"]
        end_time = segment["end"]
        text = segment["text"]

        # 格式化時間戳
        start_srt = f"{int(start_time // 3600):02}:{int((start_time % 3600) // 60):02}:{int(start_time % 60):02},{int((start_time % 1) * 1000):03}"
        end_srt = f"{int(end_time // 3600):02}:{int((end_time % 3600) // 60):02}:{int(end_time % 60):02},{int((end_time % 1) * 1000):03}"

        # 寫入 SRT 檔案
        f.write(f"{i+1}\n{start_srt} --> {end_srt}\n{text}\n\n")

print(f"SRT 檔案已輸出: {srt_path}")


3. 產出範例(SRT 格式)
假設 MP3 內容是:

Hello, welcome to the transcription test.
This is a test audio file.


輸出的 output.srt 可能會是:

1
00:00:00,000 --> 00:00:02,500
Hello, welcome to the transcription test.

2
00:00:02,500 --> 00:00:05,000
This is a test audio file.


這樣你就能用字幕播放器(如 VLC、YouTube)來顯示逐字稿了!

 


這有需要指定語言嗎?

 




Whisper 會自動偵測語言,不過你可以手動指定語言來提升準確度。
如果你的 MP3 是中文音檔,建議在 transcribe() 時加入 language="zh",這樣可以避免語言偵測錯誤,提高轉錄品質。

指定語言的範例

result = model.transcribe(audio_path, task="transcribe", language="zh")


這樣 Whisper 會直接以中文進行轉錄,不會嘗試偵測其他語言。
如果你的音檔是英文,可以改成 language="en"。

Whisper 支援多種語言,例如:

繁體中文: "zh"
英文: "en"
日文: "ja"
韓文: "ko"
法文: "fr"
德文: "de"
如果你的音檔語言固定,建議直接指定,這樣轉錄效果會更穩定!