autocut - テキスト エディタでビデオを切り取ります

(用文本编辑器剪视频)

Created at: 2022-10-29 05:53:27
Language: Python
License: Apache-2.0

AutoCut: 字幕でビデオをカットします

AutoCut は、動画の字幕を自動的に生成します。 次に、保持する必要がある文を選択し、AutoCut はビデオ内の対応するクリップをトリミングして保存します。 あなたは、ビデオ編集ソフトウェアを使用する必要はありません、あなただけのカットを完了するためにテキストファイルを編集する必要があります。

例を使用します

録画したビデオがこのフォルダに配置されている場合。 その後、実行します

2022-11-04/

autocut -d 2022-11-04

ヒント: OBS ビデオ画面を使用している場合は、スペースを変更できます。 その後、ビデオファイルは、日付が付いたフォルダに配置されます。

设置->高级->录像->文件名格式
/
%CCYY-%MM-%DD/%hh-%mm-%ss

AutoCut は、このフォルダ内のビデオのキャプション抽出とカットを継続します。 たとえば、ビデオ録画を完了し、保存したとします。 AutoCut が生成されます。 保持する必要がある文を選択すると、AutoCut によって切り取られ、結果をプレビューするために生成されます。

11-28-18.mp4
11-28-18.md
11-28-18_cut.mp4
11-28-18_cut.md

任意の Markdown エディタを使用できます。 たとえば、VS Code と Typora をよく使います。 次の図は、Typora を使用して編集されています。

11-28-18.md

すべて完了したら、スプライスが必要なビデオを選択すると、AutoCut は対応するキャプション ファイルを出力します。

autocut.md
autocut_merged.mp4

インストールします

まず、Python パッケージをインストールします

pip install git+https://github.com/mli/autocut.git

テストをローカルにインストールします

git clone https://github.com/mli/autocut
cd autocut
pip install .

pytorch は上記にインストールされます。 GPU を実行する必要があり、既定のインストールバージョンが一致しない場合は、最初に Pytorch をインストールできます。 Whipser のインストールに問題がある場合は、公式ドキュメントを参照してください。

また、ffmpeg をインストールする必要があります

# on Ubuntu or Debian
sudo apt update && sudo apt install ffmpeg

# on Arch Linux
sudo pacman -S ffmpeg

# on MacOS using Homebrew (https://brew.sh/)
brew install ffmpeg

# on Windows using Scoop (https://scoop.sh/)
scoop install ffmpeg

Docker インストール

まず、プロジェクトをローカルに複製します。

git clone https://github.com/mli/autocut.git

CPU バージョンをインストールします

プロジェクトのルートに移動し、docker イメージを構築します。

docker build -t autocut .

次のコマンドを実行して docker コンテナーを作成し、直接使用できます。

docker run -it --rm -v E:\autocut:/autocut/video autocut /bin/bash

ここで、ホストがビデオを格納するフォルダを仮想マシンにマップするディレクトリです。 は、ホストがビデオを保持するディレクトリであり、ホストがビデオを保持するディレクトリを変更する必要があります。

-v
E:\autocut
/autocut/video
E:\autocut

GPU バージョンをインストールします

GPU アクセラレーションを使用するには、ホストに Nvidia のグラフィックス カードが必要で、適切なドライバがインストールされている必要があります。 次に、プロジェクトのルートディレクトリで、次のコマンドを実行して docker イメージを構築します。

docker build -f ./Dockerfile.cuda -t autocut-gpu .

GPU アクセラレーションを使用する場合は、docker コンテナーを実行するときにパラメーターを追加する必要があります。

--gpus all

docker run --gpus all -it --rm -v E:\autocut:/autocut/video autocut-gpu

その他の使用オプション

ビデオの生成と結果を転写します。
.srt
.md

autocut -t 22-52-00.mp4
  1. 転写品質に満足できない場合は、例えば、より大きなモデルを使用することができます

    autocut -t 22-52-00.mp4 --whisper-model large

    デフォルトは. より良いモデルは、合計ですが、より良い速度のためにGPUを使用することをお勧めします。 また、より高速な和を使用することができますが、転写品質が低下します。

    small
    medium
    large
    tiny
    base

  2. ビデオに長い一時停止が多い場合は、余分な VAD モデルを使用してこれらのポーズを事前に識別し、タイムスタンプの認識をより正確にできます。

    --vad

ビデオをカットします

autocut -c 22-52-00.mp4 22-52-00.srt 22-52-00.md
  1. デフォルトのビデオビットレートは、必要に応じて小さくすることができます。

    --bitrate 10m

  2. Markdown 形式のファイルに慣れていない場合は、ファイル名を入力せずにカットするときに、不要な文をファイルから直接削除することもできます。 です

    srt
    md
    autocut -c 22-52-00.mp4 22-52-00.srt

  3. ファイルのみの場合、編集が不便な場合は、次のようなコマンドを使用してファイルを生成し、ファイルを編集しますが、この時点では、などのプロンプト テキストなしで完全に比較されます。

    srt
    md
    md
    srt
    no speech

    autocut -m test.srt test.mp4
    autocut -m test.mp4 test.srt # 支持视频和字幕乱序传入
    autocut -m test.srt # 也可以只传入字幕文件

いくつかの小さなヒント

  1. 流暢なビデオの転写品質は、ウィスパートレーニングデータ分布のために、より高くなります。 ビデオでは、まず文を大まかに選択し、切り取ったビデオでもう一度カットできます。
  2. 最終的なビデオ生成字幕は、通常、いくつかのマイナーな編集を行う必要があります。 md ファイルを直接編集できます (srt ファイルよりもコンパクトで、ビデオが埋め込まれている)。 次に、autocut -s 22-52-00.md 22-52-00.srtを使用して、更新されたキャプション 22-52-00_edited.srtを生成します。 ここでは、文が選択されているかどうかは無視され、すべて srt に変換されることに注意してください。
  3. 最終的なビデオ生成字幕は、通常、いくつかのマイナーな編集を行う必要があります。 しかし、空の行が多すぎます。 編集しやすいコンパクトなバージョンを生成するために使用できます (この形式は違法ですが、VS Code などのエディタは構文を強調表示します)。 編集が完了したら、通常の形式に戻ります。
    srt
    autocut -s 22-52-00.srt
    22-52-00_compact.srt
    autocut -s 22-52-00_compact.srt
  4. Markdown を Typora と VS Code で編集すると便利です。 どちらも、対応するショートカット キー mark の 1 つ以上の行を持っています。 しかし、VS Codeビデオのプレビューは少し問題があるようです。
  5. ビデオは ffmpeg 経由でエクスポートされます。 Apple M1 チップでは GPU を使用できず、プロのビデオ ソフトウェアほどエクスポートできません。

よく寄せられる質問です

  1. 出力は文字化けですか?

    AutoCut のデフォルト出力エンコーディングは. エディタもデコードを使用していることを確認します。 別のエンコード形式を指定できます。 ただし、キャプション ファイルを生成し、キャプション ファイル クリップを使用する場合は、エンコード形式が一貫している必要があります。 たとえば、使用します。

    utf-8
    utf-8
    --encoding
    gbk

    autocut -t test.mp4 --encoding=gbk
    autocut -c test.mp4 test.srt test.md --encoding=gbk

    別のエンコード形式 (など) を使用してファイルを生成し、Typora で開くと、ファイルが Typora によって別のエンコード形式に自動的にトランスコードされ、ビルド時に指定したエンコード形式でクリップするときにエンコードがサポートされないアイソクログラム エラーが発生する可能性があります。 したがって、クリップ機能を使用する前に、Typora で編集した後、VSCode などで必要なエンコード形式に変更して保存できます。

    gbk
    md

  2. GPU を使用して転写するにはどうすればよいですか。

    Nvidia GPU があり、対応するバージョンの PyTorch がインストールされている場合、転写は GPU で行われます。 現在 GPU がサポートされているかどうかを確認するには、コマンドを使用します。

    python -c "import torch; print(torch.cuda.is_available())"

    それ以外の場合は、AutoCut をインストールする前に、対応する GPU バージョン PyTorch を手動でインストールできます。

  3. GPU を使用して誤って表示するには不十分です。

    whisper のビッグ モデルには、GPU のメモリが必要です。 十分にメモリが存在していない場合は、例えば、小さいモデルを使用することができます。 それでも大きなモデルを使用する場合は、CPU を強制的に使用できます。 たとえば、

    small
    --device

    autocut -t 11-28-18.mp4 --whisper-model large --device cpu
  4. pipを使用してインストールできますか?

    AutoCut の依存 whisper は PyPI でパッケージをリリースしていないため、現時点ではこの方法でのみリリースできます。 困っている学生は、whisper モデルが huggingface hub で直接ダウンロードできるかどうかを確認し、whisper パッケージの依存関係から解放できます。

    pip install git+https://github.com/mli/autocut.git

貢献に参加する方法

ここでは、貢献を歓迎するフェタチュレを行うにはいくつかある

コード構造

autocut
│  .gitignore
│  LICENSE
│  README.md # 一般新增或修改需要让使用者知道就需要对应更新 README.md 内容
│  setup.py
│
└─autocut # 核心代码位于 autocut 文件夹中,新增功能的实现也一般在这里面进行修改或新增
   │  cut.py
   │  daemon.py
   │  main.py
   │  transcribe.py
   │  utils.py
   └─ __init__.py

安装依赖

开始安装这个项目的需要的依赖之前,建议先了解一下 Anaconda 或者 venv 的虚拟环境使用,推荐使用虚拟环境来搭建该项目的开发环境。 具体安装方式为在你搭建搭建的虚拟环境之中按照上方安装步骤进行安装。

为什么推荐使用虚拟环境开发?

一方面是保证各种不同的开发环境之间互相不污染。

更重要的是在于这个项目实际上是一个 Python Package,所以在你安装之后 AutoCut 的代码实际也会变成你的环境依赖。 因此在你更新代码之后,你需要让将新代码重新安装到环境中,然后才能调用到新的代码。

开发

  1. 代码风格目前遵循 PEP-8,可以使用相关的自动格式化软件完成。
  2. utils.py
    主要是全局共用的一些工具方法。
  3. transcribe.py
    是调用模型生成
    srt
    md
    的部分。
  4. cut.py
    提供根据标记后
    md
    srt
    进行视频剪切合并的功能。
  5. daemon.py
    提供的是监听文件夹生成字幕和剪切视频的功能。
  6. main.py
    声明命令行参数,根据输入参数调用对应功能。

开发过程中请尽量保证修改在正确的地方,以及合理地复用代码, 同时工具函数请尽可能放在

utils.py
中。 代码格式目前是遵循 PEP-8,变量命名尽量语义化即可。

在开发完成之后,最重要的一点是需要进行测试,请保证提交之前对所有与你修改直接相关的部分以及你修改会影响到的部分都进行了测试,并保证功能的正常。 目前使用

GitHub Actions
CI, Lint 使用 black 提交前请运行
black

提交

  1. commit 信息用英文描述清楚你做了哪些修改即可,小写字母开头。
  2. 最好可以保证一次的 commit 涉及的修改比较小,可以简短地描述清楚,这样也方便之后有修改时的查找。
  3. PR 的时候 title 简述有哪些修改, contents 可以具体写下修改内容。
  4. run test
    pip install pytest
    then
    pytest test
  5. run lint
    pip install black
    then
    black .