pyvideotransとは:動画翻訳パイプラインを丸ごと自動化するOSS
海外のYouTube動画を日本語字幕付きで視聴したい、自社の日本語動画を英語圏に展開したい――こうした「動画の言語変換」は、従来なら音声書き起こし・翻訳・吹き替え録音・動画編集を個別にこなす必要があり、1本あたり数時間から数日の作業が発生していた。プロの翻訳者+ナレーターに依頼すれば10分の動画で数万円、字幕翻訳だけでも1万円前後のコストがかかる。
pyvideotransは、この工程を音声認識(ASR)→ 字幕翻訳(LLM)→ AI吹き替え(TTS)→ 動画合成の4ステップで全自動化するPython製OSSツール。GitHub Stars 16,800超、フォーク2,000超、リリース80回以上と活発に開発が続いており、中国語圏を中心にグローバルなユーザーコミュニティが形成されている。
最大の特徴は選択肢の豊富さにある。ASRエンジンだけでFaster-Whisper、OpenAI Whisper、Alibaba Qwen3-ASRなど7種類以上、翻訳エンジンはDeepSeek、ChatGPT、Claude、Gemini、Ollamaなど10種類以上、TTSはEdge-TTS、ChatTTS、OpenAI TTSなど9種類以上を組み合わせて使える。商用APIを一切使わずにFaster-Whisper+Ollama+Edge-TTSでローカル完結運用も可能であり、コスト面・プライバシー面の両方で柔軟な選択ができる。
さらに、GUIとCLIの両方のインターフェースを備えているため、個人クリエイターが1本ずつ手動で処理する使い方から、サーバー上で数百本の動画をバッチ処理する運用まで、スケールを問わず対応できる。
- リポジトリ: jianchang512/pyvideotrans
- GitHub Stars: 16,800+ / フォーク: 2,000+
- 言語: Python 100%
- ライセンス: GPL-3.0
- 対応OS: Windows(exeパッケージあり)、macOS、Linux
- インターフェース: GUI(sp.py)、CLI(cli.py)
- 必須要件: Python 3.10〜3.12、FFmpeg
動画翻訳の全自動パイプライン:ASRからTTSまでの処理フロー
pyvideotransの中核は、4つのステージを順番に処理する翻訳パイプラインである。各ステージで異なるエンジンを選択でき、途中で一時停止して手動校正を挟むインタラクティブ編集にも対応している。
mp4, avi, mov, mkv等"] --> B["Stage 1: ASR
音声認識・字幕生成"] B --> C["Stage 2: Translation
字幕テキスト翻訳"] C --> D["Stage 3: TTS
AI音声合成・吹き替え"] D --> E["Stage 4: Synthesis
動画+字幕+音声合成"] E --> F["出力動画
翻訳済み・吹き替え済み"] B -->|"一時停止・手動校正"| B C -->|"一時停止・手動校正"| C D -->|"一時停止・手動校正"| D
Stage 1: 音声認識(ASR)
動画から音声を抽出し、タイムスタンプ付きの字幕テキストを生成する。話者分離(Speaker Diarization)にも対応しており、複数の話者がいる動画では誰がどの部分を話しているかを自動判別できる。
| ASRエンジン | 実行環境 | 特徴 |
|---|---|---|
| Faster-Whisper | ローカル(GPU推奨) | 高精度・高速。ローカル完結の定番 |
| WhisperX / Parakeet | ローカル | タイムスタンプ精度向上+話者分離 |
| OpenAI Whisper | クラウドAPI | OpenAI公式。安定性が高い |
| Alibaba Qwen3-ASR | クラウドAPI | 中国語に特化した高精度認識 |
| ByteDance Volcano | クラウドAPI | ByteDance提供の音声認識 |
| Google Cloud Speech | クラウドAPI | 多言語対応。Googleインフラ |
| Azure Speech Services | クラウドAPI | Microsoft提供。エンタープライズ向け |
ローカルでの音声認識なら、insanely-fast-whisperのようなWhisper高速化ツールと組み合わせることも検討できる。pyvideotransはFaster-Whisperをデフォルトで内蔵しているため、追加設定なしでローカルASRが利用可能だ。
Stage 2: 字幕翻訳(LLM / 機械翻訳)
ASRで生成された字幕テキストを目的言語に翻訳する。LLMベースの翻訳は文脈を考慮した自然な訳文を生成できるのが強みで、従来の機械翻訳(Google Translate等)も選択できる。
| 翻訳エンジン | 種別 | 特徴 |
|---|---|---|
| DeepSeek | クラウドLLM | 低コスト・高品質。日本語にも対応 |
| ChatGPT (GPT-4o) | クラウドLLM | 安定した翻訳品質 |
| Claude | クラウドLLM | 長文脈の翻訳が得意 |
| Gemini | クラウドLLM | Google提供のマルチモーダルLLM |
| MiniMax | クラウドLLM | 中国語⇔他言語に強い |
| Ollama | ローカルLLM | 完全ローカル。APIキー不要 |
| Alibaba Bailian | クラウドLLM | Alibaba Cloud統合 |
| Google Translate | 機械翻訳 | 無料枠あり。シンプルな翻訳向き |
| Microsoft Translator | 機械翻訳 | Azure統合。エンタープライズ向け |
| M2M100 | ローカル | Meta製の多言語翻訳モデル |
Ollamaを使えば、DeepSeek-R1やLlama 3.1などのオープンモデルをローカルで動かして翻訳できる。APIキーもクラウド通信も不要。機密性の高い動画コンテンツを外部に送信せずに処理したい場合に有効。
Stage 3: AI音声合成(TTS)・吹き替え
翻訳後の字幕テキストから目的言語の音声を合成する。単純なTTSだけでなく、音声クローン(元の話者の声を模倣した合成)にも対応しており、F5-TTS、CosyVoice、GPT-SoVITSの3つの音声クローンエンジンを利用できる。
| TTSエンジン | 実行環境 | 音声クローン | 特徴 |
|---|---|---|---|
| Edge-TTS | クラウド(無料) | – | Microsoft Edge音声。無料で高品質 |
| F5-TTS | ローカル(GPU推奨) | 対応 | ゼロショット音声クローン |
| CosyVoice | ローカル(GPU推奨) | 対応 | Alibaba製。多言語音声クローン |
| GPT-SoVITS | ローカル(GPU推奨) | 対応 | 少量サンプルで声を再現 |
| ChatTTS | ローカル | – | 対話向けの自然な音声 |
| ChatterBox | ローカル | – | 軽量なローカルTTS |
| OpenAI TTS | クラウドAPI | – | OpenAI公式。安定品質 |
| Azure TTS | クラウドAPI | – | 多言語・多話者対応 |
| 302.AI | クラウドAPI | – | 中国発のTTSサービス |
RealtimeTTSのようなリアルタイム音声合成ライブラリと異なり、pyvideotransのTTSはバッチ処理に最適化されている。動画1本分の字幕を一括で音声変換し、タイムスタンプに合わせて配置する。
Stage 4: 動画合成
翻訳済み字幕、合成音声、元動画を統合して最終的な出力動画を生成する。FFmpegを内部で使用しており、字幕の焼き込み(ハードサブ)やソフトサブの選択、音声トラックの差し替えなどが自動で処理される。
このステージでは、TTS音声の長さと元動画の字幕タイミングの調整も自動で行われる。翻訳後のテキストは元言語と長さが異なることが多いため、音声の速度調整やポーズの挿入・削除が自動的に処理される。
ユーティリティツール
pyvideotransは翻訳パイプラインのほかに、個別に使える便利なユーティリティ機能も備えている:
- ボーカル分離: 動画の音声からBGMとボーカルを分離(Demucs等を利用)
- 動画+字幕マージ: 既存のSRTファイルを動画に焼き込み
- 音声+動画合成: 別途用意した音声トラックを動画に重ねる
- 字幕フォーマット変換: SRT⇔VTT⇔ASS等の相互変換
これらは翻訳パイプラインの一部としてだけでなく、単独のツールとしても利用できる。たとえば、既に翻訳済みの字幕ファイルがある場合は、ボーカル分離→TTS→動画合成のステップだけを実行することも可能だ。
インストールと環境構築:uvを使った最短セットアップ
pyvideotransの推奨インストール方法はuv(Pythonパッケージマネージャ)を使う方法。3コマンドで環境構築が完了する。
前提条件
- Python 3.10〜3.12(3.13以降は未対応)
- FFmpeg(PATHに通っていること)
- uv(Pythonパッケージマネージャ)
OS別のFFmpegインストール:
# macOS
brew install ffmpeg libsndfile git
# Linux (Ubuntu/Debian)
sudo apt-get install ffmpeg libsndfile1-dev
# Windows: FFmpegを公式サイトからダウンロードし、PATHに追加
# または、ffmpeg.exe と ffprobe.exe をプロジェクトディレクトリに配置
基本インストール
# リポジトリをクローン
git clone https://github.com/jianchang512/pyvideotrans.git
cd pyvideotrans
# 依存関係をインストール(uv推奨)
uv sync
# GUIを起動
uv run sp.py
Alibaba Qwen系のASR/TTSを使う場合は、追加オプションを指定する:
uv sync --extra qwen-tts --extra qwen-asr
NVIDIA GPU環境でのCUDAセットアップ
Faster-WhisperやF5-TTSなどGPUを活用するエンジンを使う場合、PyTorchをCUDA対応版に差し替える:
uv remove torch torchaudio
uv add torch==2.7 torchaudio==2.7 --index-url https://download.pytorch.org/whl/cu128
uv add nvidia-cublas-cu12 nvidia-cudnn-cu12
この構成にはCUDA 12.8とcuDNN 9.11が必要。NVIDIA GPUを持っていない環境ではCPUフォールバックで動作するが、ASR処理に時間がかかる点は留意したい。
Windowsユーザー向け: exeパッケージ
Pythonの環境構築が不要なWindows専用のexeパッケージも配布されている。Windows 10/11環境であれば、ダウンロードしてsp.exeを実行するだけでGUIが起動する。GitHub Releasesページから最新版をダウンロードできる。
ただし、exeパッケージはファイルサイズが大きく(数GBになる場合がある)、また更新のたびに再ダウンロードが必要になる。頻繁にアップデートを追いたい場合は、uv経由のインストールの方がgit pull && uv syncで差分更新できるため効率的だ。
GUI操作とCLIバッチ処理:2つのインターフェースの使い分け
pyvideotransはGUI(グラフィカルUI)とCLI(コマンドラインインターフェース)の2つのインターフェースを提供している。用途に応じて使い分けることで、単発の動画翻訳から大量バッチ処理まで対応できる。
GUI: 直感的な操作でステップごとに確認
GUIモードでは、動画ファイルをドラッグ&ドロップで追加し、ソース言語・ターゲット言語・各エンジンをドロップダウンで選択するだけで翻訳が開始される。各ステージ(ASR→翻訳→TTS→合成)の間で一時停止し、字幕の手動校正や翻訳の微調整ができるのが大きな特徴だ。
完全自動で通しても動作するが、専門用語が多い動画や固有名詞を含むコンテンツでは、ASR後に字幕を手動チェックしてから翻訳に進めるのが品質向上のポイント。特にLLM翻訳は入力の品質に大きく左右されるため、ASR結果の修正が最終品質に直結する。
CLI: サーバー運用・バッチ処理向け
CLIモードはヘッドレスサーバーでの運用や、複数動画の一括処理に適している。
# 動画翻訳(中国語 → 英語)
uv run cli.py --task vtv \
--name "./video.mp4" \
--source_language_code zh \
--target_language_code en
# 音声からの字幕生成のみ
uv run cli.py --task stt \
--name "./audio.wav" \
--model_name large-v3
| パラメータ | 説明 | 例 |
|---|---|---|
--task |
処理タイプ | vtv(動画翻訳)、stt(音声→字幕) |
--name |
入力ファイルパス | ./video.mp4 |
--source_language_code |
ソース言語 | zh, en, ja |
--target_language_code |
ターゲット言語 | en, ja, ko |
--model_name |
ASRモデル名 | large-v3, medium |
CLIはシェルスクリプトやcronジョブと組み合わせることで、フォルダ内の動画を監視して自動翻訳するパイプラインを構築できる。動画制作の自動化パイプラインに関心がある方は、MoneyPrinterV2の自動動画生成アプローチも参考になる。
バッチ処理の実践例: フォルダ内の全動画を一括翻訳
CLIの実用的な使い方として、特定フォルダ内のmp4ファイルを全て日本語→英語に翻訳するシェルスクリプトの例を紹介する:
#!/bin/bash
# input_dir内の全mp4を英語に翻訳し、output_dirに出力
INPUT_DIR="./input_videos"
OUTPUT_DIR="./output_videos"
for video in "$INPUT_DIR"/*.mp4; do
filename=$(basename "$video")
echo "Processing: $filename"
uv run cli.py --task vtv \
--name "$video" \
--source_language_code ja \
--target_language_code en
done
echo "All videos processed."
このスクリプトをcronに登録すれば、指定フォルダに動画を置くだけで自動的に翻訳が走る仕組みが作れる。本番運用では処理済みファイルの管理(完了フラグやファイル移動)を追加するとよい。
音声クローンの仕組み:元の話者の声で吹き替える
pyvideotransの音声クローン機能は、元動画の話者の声を模倣して目的言語の吹き替え音声を生成する。これにより、機械的なTTS音声ではなく、オリジナルの話者が別の言語を話しているかのような自然な吹き替えが実現する。
対応する音声クローンエンジン
| エンジン | 方式 | 必要なサンプル | GPU要件 |
|---|---|---|---|
| F5-TTS | ゼロショット | 数秒の音声 | NVIDIA GPU推奨 |
| CosyVoice | ゼロショット | 数秒の音声 | NVIDIA GPU推奨 |
| GPT-SoVITS | 少量学習 | 数分の音声 | NVIDIA GPU必須 |
F5-TTSとCosyVoiceはゼロショット(事前学習なし)で動作するため、元動画の音声をそのまま参照サンプルとして使えるのが手軽。GPT-SoVITSはより高品質な声の再現が可能だが、数分の音声サンプルと事前のファインチューニングが必要になる。
数秒〜数分"] C["翻訳済み字幕
目的言語テキスト"] --> D["音声クローンエンジン
F5-TTS / CosyVoice / GPT-SoVITS"] B --> D D --> E["クローン音声
元の声 × 新言語"] E --> F["動画合成"]
話者分離(Speaker Diarization)との連携
複数の話者がいる動画では、WhisperXやParakeetによる話者分離と組み合わせることで、話者Aの声で話者Aのセリフを、話者Bの声で話者Bのセリフをそれぞれクローンして吹き替えできる。教育コンテンツの対談形式やインタビュー動画の翻訳に特に効果的だ。
音声クローンの品質を左右する要因
音声クローンの品質は以下の要因に大きく左右される:
- 参照サンプルの品質: BGMやノイズが少ないクリーンな音声ほど再現度が高い。pyvideotransのボーカル分離機能で前処理するとよい
- 参照サンプルの長さ: F5-TTSは5〜10秒程度のサンプルでも動作するが、30秒以上あるとより安定する
- 言語の組み合わせ: 同系統の言語(日本語→韓国語など)は比較的自然に聞こえるが、音韻体系が大きく異なる言語間(日本語→アラビア語など)では違和感が出やすい
- テキストの長さ: 1セグメントあたりのテキストが長すぎると音声が不自然になる場合がある。字幕の分割粒度を適切に設定することが重要
ローカル完結構成 vs クラウドAPI構成:コストと品質の比較
pyvideotransの最大の強みは、ユーザーの環境・予算・品質要件に応じてエンジンを自由に組み合わせられること。代表的な2つの構成パターンを比較する。
| 項目 | ローカル完結構成 | クラウドAPI構成 |
|---|---|---|
| ASR | Faster-Whisper (large-v3) | OpenAI Whisper API |
| 翻訳 | Ollama (DeepSeek-R1等) | ChatGPT (GPT-4o) |
| TTS | Edge-TTS (無料) | Azure TTS |
| 音声クローン | F5-TTS | – |
| API費用 | 0円(Edge-TTSのみ外部通信) | 従量課金(数十円〜数百円/動画) |
| GPU要件 | NVIDIA GPU推奨(8GB VRAM以上) | 不要(クラウド処理) |
| 処理速度 | GPU依存(RTX 3060で10分動画→約5分) | API応答時間に依存 |
| プライバシー | 動画データがローカルに留まる | API経由でクラウドに送信 |
| 翻訳品質 | モデルサイズに依存 | 大規模モデルで高品質 |
ASRはローカルのFaster-Whisper、翻訳はDeepSeek API(低コスト+高品質)、TTSはEdge-TTS(無料)の組み合わせが、コストと品質のバランスが良い。月額数百円程度でプロレベルの動画翻訳パイプラインが構築できる。
他の動画翻訳ツールとの比較:pyvideotransを選ぶ理由
動画翻訳の選択肢はpyvideotransだけではない。商用サービスとオープンソースツールの両方を含めた比較表で、pyvideotransの位置づけを整理する。
| 機能 | pyvideotrans | HeyGen (商用) | Rask.ai (商用) | Subtitle Edit (OSS) |
|---|---|---|---|---|
| ASR(音声認識) | 7エンジン以上 | 独自エンジン | 独自エンジン | – |
| LLM翻訳 | 10エンジン以上 | 独自エンジン | 独自エンジン | Google Translate |
| AI吹き替え | 9エンジン以上 | 独自エンジン | 独自エンジン | – |
| 音声クローン | F5-TTS等3種 | 対応 | 対応 | – |
| ローカル実行 | 完全対応 | 非対応 | 非対応 | 対応(字幕のみ) |
| GUI | 対応 | Web UI | Web UI | 対応 |
| CLI / バッチ | 対応 | API連携 | API連携 | 一部対応 |
| 価格 | 無料(OSS) | $29/月〜 | $60/月〜 | 無料(OSS) |
| カスタマイズ性 | エンジン自由選択 | 固定 | 固定 | 字幕編集のみ |
pyvideotransの差別化ポイントは3つ: (1) OSSで無料、(2) エンジンの自由な組み合わせ、(3) ローカル完結が可能。商用サービスは手軽だが月額費用が発生し、エンジンの選択肢がない。Subtitle Editは字幕編集に特化しており、ASR・TTS・動画合成の機能を持たない。
実践的なユースケース:どんな場面で活用できるか
pyvideotransの適用範囲は広い。以下に代表的なユースケースを整理する。
教育・学習コンテンツの多言語展開
海外の技術カンファレンス動画、オンライン講座、大学の公開講義などを日本語字幕+吹き替え付きで視聴できるようにする。Faster-Whisper+Ollama+Edge-TTSのローカル構成なら、数十本の動画を処理してもAPI費用はゼロ。
YouTube動画の多言語化
日本語で制作したYouTube動画を英語・中国語・韓国語に展開する。CLIのバッチ処理で複数言語の翻訳を一括実行でき、各言語版の動画を効率的に生産できる。
社内研修・マニュアル動画の翻訳
海外拠点向けの社内研修動画や製品マニュアル動画を翻訳する。クラウドAPIを使わないローカル構成なら、機密性の高い社内コンテンツを外部に送信せずに処理できる。
映像制作ワークフローへの組み込み
CLIモードを使えば、動画編集ソフトからの出力→pyvideotransで翻訳→配信プラットフォームへアップロードという一連のワークフローを自動化できる。Claude Codeのベストプラクティスで紹介されているような自動化の考え方は、映像制作パイプラインにも応用できる。
ポッドキャスト・音声コンテンツの多言語化
pyvideotransは動画だけでなく音声ファイル(wav、mp3等)の処理にも対応している。ポッドキャストのエピソードを他言語に翻訳して配信したり、音声コンテンツから多言語字幕を生成してブログ記事化する用途にも活用できる。--task sttで音声→字幕の変換だけを実行することも可能だ。
アクセシビリティの向上
聴覚に障害のあるユーザー向けに、動画コンテンツに正確な字幕を自動付与する用途でも利用できる。Faster-WhisperのASR精度は市販の自動字幕ツールと同等以上であり、インタラクティブ編集で手動校正を加えれば放送品質の字幕も作成可能だ。
トラブルシューティングと注意点
FFmpegが見つからないエラー
最も多いトラブルはFFmpegのパス設定。以下で確認できる:
# FFmpegが認識されているか確認
ffmpeg -version
# パスが通っていない場合(macOS / Linux)
export PATH=$PATH:/usr/local/bin
Windowsの場合は環境変数PATHにFFmpegのディレクトリを追加するか、ffmpeg.exeとffprobe.exeをpyvideotransのプロジェクトディレクトリ直下に配置する。
CUDAメモリ不足
GPUメモリ(VRAM)が不足する場合は、ASRモデルのサイズをlarge-v3からmediumやsmallに変更するか、--device cpuオプションでCPU処理にフォールバックする。8GB以上のVRAMがあればlarge-v3モデルでも安定動作する。
翻訳品質が低い場合の改善方法
LLM翻訳の品質が期待に届かない場合、以下の対策が有効:
- ASR結果を先に修正する: 翻訳の入力となるASR結果に誤りがあると、翻訳品質が連鎖的に低下する。インタラクティブ編集でASR後に字幕を確認・修正してから翻訳ステージに進める
- 翻訳エンジンを変更する: Google Translateからdeepseekやchatgptなどのllmベースの翻訳に切り替えるだけで、特に長文や技術用語の翻訳品質が向上することが多い
- ソース言語を正しく指定する: 自動言語検出に頼らず、ソース言語を明示的に指定する方が精度が上がる
音声と動画の同期ズレ
翻訳後のTTS音声が元動画のタイミングとズレる場合は、以下を確認する:
- 元動画のフレームレートが一般的な値(24fps、30fps、60fps)であること
- 字幕のタイムスタンプが正確であること(ASR後の手動校正で修正可能)
- TTS音声の速度設定が適切であること(速すぎると聞き取りにくく、遅すぎるとセグメント間で重なる)
pyvideotransはGPL-3.0ライセンスで公開されている。商用利用は可能だが、派生ソフトウェアを配布する場合はソースコードの公開が必要。また、著作権のある動画コンテンツを翻訳・再配布する場合は、各国の著作権法に基づく適切な権利処理が必要であり、利用者の責任で行う必要がある。
まとめ:pyvideotransで動画翻訳のコストと時間を削減する
pyvideotransは、動画翻訳に必要な4つのステージ(ASR→翻訳→TTS→動画合成)を一気通貫で処理できるOSSツール。エンジンの組み合わせ自由度が高く、完全ローカル運用からクラウドAPI活用まで柔軟に構成できるのが他のツールにない強みだ。
- コスト重視: Faster-Whisper+Ollama+Edge-TTSで完全無料のローカルパイプライン
- 品質重視: Faster-Whisper+ChatGPT/DeepSeek+Azure TTSでプロレベルの翻訳品質
- 運用効率: CLIバッチ処理で大量動画の自動翻訳パイプラインを構築
- プライバシー重視: ローカル完結構成で機密動画を外部に送信せずに処理
GitHub Stars 16,800超、80回以上のリリースという活発な開発実績が示す通り、動画の多言語展開を考えているならまず試す価値のあるツールだ。特に、個人クリエイターやスモールチームにとっては、商用サービスの月額費用($29〜$60/月)を払わずにプロレベルの動画翻訳環境を手に入れられる選択肢として注目に値する。
まずはuv run sp.pyでGUIを起動し、手元の短い動画で翻訳パイプラインの動作を確認してみることをおすすめする。
参照ソース
- jianchang512/pyvideotrans - GitHub — 公式リポジトリ。README、インストール手順、対応エンジン一覧
- pyvideotrans公式ドキュメント — 詳細な設定ガイド、FAQ、チュートリアル
- pyvideotransコミュニティフォーラム — ユーザーコミュニティ。質問・トラブルシューティング
- Faster-Whisper - GitHub — pyvideotransのデフォルトASRエンジン
- Edge-TTS - GitHub — 無料で利用可能なMicrosoft Edge音声合成