原创

PreenCut - 人工智能视频剪辑工具

温馨提示:
本文最后更新于 2025年07月16日,已超过 10 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我

🎬 PreenCut - 人工智能视频剪辑工具

PreenCut 是一款智能视频编辑工具,它使用语音识别和大型语言模型自动分析音频/视频内容。它可以帮助您使用自然语言查询快速从媒体文件中查找并提取相关片段。

file

主要特点

自动语音识别:由 WhisperX 提供支持,可实现准确转录
人工智能分析:使用大型语言模型来细分和总结内容
自然语言查询:使用描述性提示(例如“查找所有产品演示片段”)查找剪辑
智能剪辑:选择片段并将其导出为单独的文件或合并的视频
SRT 导出:生成自定义行长的字幕
批处理:在多个文件中查找特定主题
重新分析:无需重新处理音频即可尝试不同的提示

⚙️ 安装

1.克隆存储库:

git clone https://github.com/roothch/PreenCut.git
cd PreenCut

2.安装依赖项,推荐使用Python 3.11:

pip install -r requirements.txt
  1. 安装 FFmpeg(视频处理所需):
# ubuntu/Debian
sudo apt install ffmpeg

# CentOS/RHEL
sudo yum install ffmpeg

# macOS (using Homebrew)
brew install ffmpeg

# Windows: Download from https://ffmpeg.org/
  1. 设置 API 密钥(用于 LLM 服务):首先,您需要在 的 LLM_MODEL_OPTIONS 中设置您的 llm 服务config.py。然后将您的 API 密钥设置为环境变量:
# for example, if you are using DeepSeek and DouBao as LLM services
export DEEPSEEK_V3_API_KEY=your_deepseek_api_key
export DOUBAO_1_5_PRO_API_KEY=your_doubao_api_key
  1. (可选)设置 gradio 临时文件目录:在 config.py 文件中设置 os.environ['GRADIO_TEMP_DIR']。

🚀 使用方法

  1. 启动Gradio界面:
python main.py
  1. 访问http://localhost:7860 的Web 界面

  2. 上传视频/音频文件(支持格式:mp4、avi、mov、mkv、ts、mxf、mp3、wav、flac)

  3. 配置选项:

    • 选择 LLM 模型
    • 选择 Whisper 模型大小(tiny → large-v3)
    • 添加自定义分析提示(可选)
  4. 点击“开始处理”来分析内容

  5. 查看分析表中的结果:

    • 开始/结束时间戳
    • 期间
    • 内容摘要
    • AI生成的标签
  6. 使用“重新分析”选项卡尝试不同的提示

  7. 使用“剪切”选项卡选择片段并选择导出模式:

    • 导出为 ZIP 包
    • 合并为单个视频文件
  8. 您也可以使用路由前缀 /api/xxx 访问 Restful api

    • 上传文件

      POST /api/upload

      body: formdata

      | key | value type ||
      |------|------------|-|
      | file | file |

      reponse: json

        { file_path: f'${GRADIO_TEMP_DIR}/files/2025/05/06/uuid.v1().replace('-', '')${file_extension}' }
      
    • 创建任务

      POST /api/tasks

      body: json

      {
        "file_path": "put the file path here response from upload api, starting with ${GRADIO_TEMP_DIR}",   
        "llm_model": "DeepSeek-V3-0324",
        "whisper_model_size": "large-v2",
        "prompt": "提取重要信息,时间控制在10s"
      }
      

      响应:

        { "task_id": "" }
      
    • query task reult

      GET /api/tasks/{task_id}

      response:

      {
        "status": "completed",
        "files": [
            "${GRADIO_TEMP_DIR}/files/2025/06/23/608ecc80500e11f0b08a02420134443f.wav"
        ],
        "prompt": "提取重要信息,时间控制在10s",
        "model_size": "large-v2",
        "llm_model": "DeepSeek-V3-0324",
        "timestamp": 1750668370.6088192,
        "status_info": "共1个文件,正在处理第1个文件",
        "result": [
            {
                "filename": "608ecc80500e11f0b08a02420134443f.wav",
                "align_result": {
                    "segments": [
                        {
                            "text": "有内地媒体报道,嫦娥6号着陆器上升器组合体已经完成了钻取采样,接着正按计划进行月面的表取采样。",
                            "start": 1.145,
                            "end": 9.329
                        }
                    ],
                    "language": "zh"
                },
                "segments": [
                    {
                        "start": 1.145,
                        "end": 9.329,
                        "summary": "嫦娥6号着陆器上升器组合体已完成钻取采样,正进行月面表取采样。",
                        "tags": [
                            "嫦娥6号",
                            "月球采样",
                            "航天科技"
                        ]
                    }
                ],
                "filepath": "${GRADIO_TEMP_DIR}/files/2025/06/23/608ecc80500e11f0b08a02420134443f.wav"
            }
        ],
        "last_accessed": 1750668836.8038888
      }
      

💻 开发

python3 -m uvicorn main:app --port 7860 --reload

⚡ 性能技巧

  • 对于较短的片段使用较快的 whisper,对于较快的处理使用 whisperx
  • 根据可用的 VRAM 调整 WHISPER_BATCH_SIZE
  • 对于仅使用 CPU 的系统,请使用较小的模型尺寸
  • 如果您不需要 srt 文件,您可以设置 ENABLE_ALIGNMENT=False 来提高处理速度。

    项目地址: https://github.com/roothch/PreenCut/tree/main

正文到此结束
本文目录