可以幫我用 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"
如果你的音檔語言固定,建議直接指定,這樣轉錄效果會更穩定!
留言板
歡迎留下建議與分享!希望一起交流!感恩!