公司的网站怎么运营,百度一下百度下载,做设计需要知道的几个网站吗,学商务网站建设的感想一、目的
想要本地运行、开源免费的视频语音提取转文字方案#xff0c;这类方案完全可控、无隐私泄露风险#xff0c;还能自定义适配不同语言和场景。
二、技术路线 #xff08;FFmpeg Whisper#xff09;
这是目前最成熟的开源组合#xff1a;
FFmpeg#xff1a;负责从…一、目的想要本地运行、开源免费的视频语音提取转文字方案这类方案完全可控、无隐私泄露风险还能自定义适配不同语言和场景。二、技术路线 FFmpeg Whisper这是目前最成熟的开源组合FFmpeg负责从视频中无损提取音频全能的音视频处理工具开源免费。OpenAI WhisperOpenAI 开源的语音转文字模型支持 99 种语言准确率极高可本地运行。三、前置准备环境搭建安装 Python3.8 及以上版本https://www.python.org/downloads/安装 FFmpegWindows下载 FFmpeg 压缩包解压后将bin目录添加到系统环境变量验证ffmpeg -versionMacbrew install ffmpegLinuxsudo apt update sudo apt install ffmpeg安装 Whisper# 创建独立python环境conda create--name whisper python3.12# 激活创建的独立python环境conda activate whisper# 基础安装包含轻量模型pip install openai-whisper# 在安装了nvidia的Windows或Linux机器上安装PyTorch GPU版本(提速5-10倍需显卡支持),指明了具体CUDA版本121pip3 install torch torchvision torchaudio--index-url https://download.pytorch.org/whl/cu121# 如果是MacBook无法使用 CUDA默认使用苹果的Apple Silicon (M系列芯片)# PyTorch专门为苹果开发了MPS(Metal Performance Shaders) 后端。PyTorch会自动识别你的硬件并准备好 MPS 支持。pip3 install torch torchvision torchaudio四、完整代码实现一键提取 转写以下代码可直接运行实现「视频→提取音频→转写文字→导出 TXT/SRT 字幕」全流程#!/usr/bin/env python3importwhisperimportsubprocessimportosimportargparseimporttorch# 导入 torch 以便检查 MPS/CUDAfromwhisper.utilsimportget_writer# 导入官方写入工具defextract_audio_from_video(video_path,audio_pathtemp_audio.wav): 从视频中提取音频使用FFmpeg :param video_path: 输入视频路径支持MP4/MOV/AVI等所有格式 :param audio_path: 输出音频路径默认WAV格式 :return: 提取后的音频路径 ifos.path.exists(audio_path):os.remove(audio_path)# 删除旧的临时音频# FFmpeg命令提取音频忽略视频流输出WAVcmd[ffmpeg,-i,video_path,-vn,# 禁用视频流-acodec,pcm_s16le,# 音频编码保证兼容性-ar,16000,# 采样率16kHzWhisper推荐-ac,1,# 单声道audio_path,-y# 覆盖已有文件]try:subprocess.run(cmd,checkTrue,stdoutsubprocess.PIPE,stderrsubprocess.PIPE)print(f✅ 音频提取完成{audio_path})returnaudio_pathexceptsubprocess.CalledProcessErrorase:raiseException(f❌ 音频提取失败{e.stderr.decode()})defvideo_to_text(video_path,output_dir.,model_sizebase): 视频转文字主函数 :param video_path: 输入视频路径 :param output_dir: 输出路径 :param model_size: Whisper模型大小tiny/base/small/medium/large越大越准但越慢 # 0. 设备检测逻辑 (保持兼容性)iftorch.backends.mps.is_available():devicempsprint( 检测到 Apple Silicon GPU使用 MPS 加速)eliftorch.cuda.is_available():devicecudaprint( 检测到 NVIDIA GPU使用 CUDA 加速)else:devicecpuprint(⚠️ 未检测到 GPU 加速使用 CPU 运行)# 1. 提取音频audio_pathextract_audio_from_video(video_path)# 2. 加载Whisper模型首次运行会自动下载对应模型约1GB-6GBprint(f 加载Whisper{model_size}模型...)modelwhisper.load_model(model_size,devicedevice)# 3. 语音转文字支持自动识别语言print( 正在转写音频...)resultmodel.transcribe(audio_path,languagezh,# 手动指定语言可选不指定则自动识别word_timestampsFalse,# 如需单词级时间戳设为TrueverboseFalse,fp16False# 注意MPS 目前对 fp16 支持不稳设为 False 使用 fp32 兼容性更好)# 4. 使用官方工具导出结果# 获取输出目录路径output_diros.path.dirname(os.path.abspath(output_dir))ifos.path.dirname(output_dir)else.# 导出 SRTsrt_writerget_writer(srt,output_dir)srt_writer(result,video_path,{max_line_width:None,max_line_count:None,highlight_words:False})# 导出 TXTtxt_writerget_writer(txt,output_dir)txt_writer(result,video_path,{max_line_width:None,max_line_count:None,highlight_words:False})print(f 纯文本已导出)print(f 字幕文件已导出)# 清理临时音频os.remove(audio_path)print(✅ 全部完成)# 运行示例 if__name____main__:# 1. 创建解析器parserargparse.ArgumentParser(description使用 Whisper 提取视频字幕)# 2. 添加参数# 必填参数视频路径parser.add_argument(video_path,typestr,help输入视频文件的路径 (例如: test.mp4))# 可选参数模型大小 (默认 base)parser.add_argument(--model,typestr,defaultbase,choices[tiny,base,small,medium,large],helpWhisper 模型大小默认是 base)parser.add_argument(--output_dir,typestr,default.)# 3. 解析参数argsparser.parse_args()# 4. 将解析出的参数传递给你的函数video_to_text(video_pathargs.video_path,output_dirargs.output_dir,model_sizeargs.model)代码关键部分解释extract_audio_from_video调用 FFmpeg 命令行工具将视频中的音频提取为 Whisper 最优的 WAV 格式16kHz 单声道保证转写准确率。whisper.load_model加载不同大小的模型新手优先选base约 1GB追求准确率选medium约 3GB速度优先选tiny约 100MB。model.transcribe核心转写函数languagezh指定中文可改为 “en” 等自动处理口音、断句。导出功能同时生成纯文本TXT和带时间戳的字幕SRT满足不同需求。五、使用步骤安装好 Python、FFmpeg、Whisper 环境。将代码保存为video2text.py。运行代码python3 video2text.py test_video.mp4六、进阶优化批量处理修改代码遍历文件夹下所有视频# 批量处理示例importglobforvideo_fileinglob.glob(videos/*.mp4):# 遍历videos文件夹下的所有MP4video_to_text(video_file,output_dir.)