利用 Whisper AI 自动识别视频语音并生成字幕文件,支持多种格式导出...
核心代码示例
Python
import whisper
import srt
from pathlib import Path
def generate_subtitles(video_path: str, output_format: str = "srt"):
"""
使用 Whisper AI 生成视频字幕
Args:
video_path: 视频文件路径
output_format: 输出格式 (srt/vtt)
"""
model = whisper.load_model("base")
result = model.transcribe(video_path)
# 生成 SRT 格式
subtitles = []
for i, segment in enumerate(result["segments"]):
start = segment["start"]
end = segment["end"]
text = segment["text"].strip()
# 时间码转换
start_srt = format_timestamp(start)
end_srt = format_timestamp(end)
subtitles.append(f"{i+1}\n{start_srt} --> {end_srt}\n{text}\n")
return "\n".join(subtitles)
def format_timestamp(seconds: float) -> str:
"""将秒数转换为 SRT 时间格式 HH:MM:SS,mmm"""
hours = int(seconds // 3600)
minutes = int((seconds % 3600) // 60)
secs = int(seconds % 60)
millis = int((seconds % 1) * 1000)
return f"{hours:02d}:{minutes:02d}:{secs:02d},{millis:03d}"
# 使用示例
if __name__ == "__main__":
video_file = "interview.mp4"
srt_content = generate_subtitles(video_file)
output_path = Path(video_file).with_suffix(".srt")
output_path.write_text(srt_content, encoding="utf-8")
print(f"字幕已生成: {output_path}")
BAT 批量处理脚本
Batch
@echo off
chcp 65001 > nul
echo ========================================
echo 视频批量重命名工具
echo ========================================
echo.
set "project_folder="
set /p project_folder=请输入项目文件夹路径:
if not exist "%project_folder%" (
echo 错误:文件夹不存在!
pause
exit /b 1
)
cd /d "%project_folder%"
set counter=1
for %%f in (*.mp4 *.mov *.avi) do (
set "ext=%%~xf"
set "filename=%%~nf"
:: 提取日期(示例:从文件名中提取)
for /f "tokens=1-3 delims=-" %%a in ("%%~nf") do (
set "date_part=%%a-%%b-%%c"
)
:: 生成新文件名
set "new_name=!date_part!_片段_!counter!!ext!"
echo !filename!!ext! ---^> !new_name!
ren "%%f" "!new_name!"
set /a counter+=1
)
echo.
echo 完成!共处理 %counter% 个文件。
pause