AiSrt:字幕を翻訳、抽出、文字起こし(アップデート)

AiSrt : 人工知能で字幕を翻訳、抽出、文字起こし

29言語の動画を、ろう者や難聴者、そして多言語コンテンツを愛するすべての人に届けやすくする無料ツール

英語字幕付きの動画をフランス語、スペイン語、アラビア語、日本語にしたいと思ったことはありませんか? それとも、字幕がまったくない映画から .srt を取り出したいと思ったことは? まさにそのためにAiSrtを書きました。

AiSrtはAIを使って字幕ファイル .srt翻訳し、動画ファイルにすでに埋め込まれている字幕トラックを抽出し、動画の音声を直接字幕に文字起こしするコマンドラインツールです。3つとも同じバイナリに入っています。

翻訳では、5つのエンジンから選べます。OpenAIAnthropic(Claude)、Google(Gemini)、xAI(Grok)のAPIは、映画1本につき数セントです。あるいは、自分のマシンで動くOllamaサーバーも使えます。無料、オフライン、キー不要、アカウント不要です。字幕がハードディスクから外に出ることはありません。

動画に字幕がない場合、AiSrtはOpenAIの音声認識モデルであるWhisperを使い、音声トラックを自動で .srt に変換します。正直なところ、1時間の講演が、自分では1行も入力していないのに字幕付きで出てきたのを初めて見たときは、ちょっと感動しました。

今回のバージョンの新機能は、テキストではなく画像になっているBlu-rayの字幕も読めるようになったことです。AiSrtはそれらをデコードし、文字認識エンジンにかけ、その結果をAIに見直させます。詳しくは下でまた触れますが、ここが自分でもっとも気に入っている部分です。


なぜAiSrtなのか?

  • まずはアクセシビリティ。 ろう者や難聴者には、動画コンテンツに簡単にアクセスできる環境が必要です。字幕の生成や翻訳にかかるのは数分であるべきで、一晩ではありません。
  • 29言語。 アラビア語、ドイツ語、英語、中国語、韓国語、デンマーク語、スペイン語、フィンランド語、フランス語、ギリシャ語、ヒンディー語、ヘブライ語、ハンガリー語、インドネシア語、イタリア語、日本語、マレー語、オランダ語、ノルウェー語、ポーランド語、ポルトガル語、ルーマニア語、ロシア語、スウェーデン語、チェコ語、タイ語、トルコ語、ウクライナ語、ベトナム語。
  • 文脈を理解する翻訳。 逐語訳との違いはまさにそこです。慣用表現やユーモア、言葉遊びがずっとうまく伝わります。
  • 1つのツールに3つの機能:翻訳、抽出、文字起こし。
  • 画像になっている字幕にも対応。 Blu-rayのPGSトラックを文字認識で読み取り、OCRが読み間違えた部分をAIに見直させます。
  • 5つの翻訳エンジンから選択。 OpenAI、Claude、Gemini、Grok、Ollamaを、自分のキーで使え、オプション1つで切り替えられます。
  • 必要なら無料でオフライン。 自分のマシンにOllamaをインストールすれば、翻訳は無料で、キーも不要、どこにもデータを送信しません。第三者のサービスを通したくないコンテンツに便利です。
  • 別途インストールするものはなし。 バイナリは単体で動作し、ダウンロードする.NETランタイムはなく、すべて中に入っています。ffmpegとwhisper.cppも、必要になった時点でWindowsとLinuxに自動取得されます。
  • WindowsでのNVIDIAアクセラレーション。 AiSrtがグラフィックカードを検出すると、WhisperのCUDA版に切り替わり、文字起こしがかなり速くなります。

インストール

前提条件

実のところ、必須のものは何もありません。抽出と文字起こしは、キーもアカウントも不要で、どこにも何も送信せずに動きます。

翻訳には、4つの有料サービス(OpenAI、Anthropic、Google、xAI)のいずれかのキー、または自分のマシンにインストールしたOllamaが必要です。Ollamaは無料でオフラインです。続く2つのセクションでそれぞれ説明するので、都合のいいほうを選んでください。

追加のツールが必要なのは1つの場合だけです。画像になっている字幕です。その場合はTesseractが必要で、自分でインストールします。コマンド1つで、あとはずっとそのまま使えます。

ランタイムのインストールは不要です。それぞれのアーカイブに、あなたのシステム用の単体実行ファイルが入っています。

  1. 以下から、お使いのマシンに対応するアーカイブをダウンロードしてください:Windows x64、Linux x64、またはmacOS(Apple Silicon M1からM4、またはIntel x64)。
  2. お好みのフォルダーに解凍してください。
  3. オプション:どのターミナルからでもaisrtを呼び出せるように、このフォルダーを環境変数PATHに追加してください。

macOSでシステムがバイナリの起動を拒否する場合は、フォルダー内でターミナルを開き、chmod +x aisrtを実行し、それからxattr -cr aisrtを実行してください。macOS向けのビルドは署名済みで公証も受けているので、原則としてこれらは必要ないはずです。

お好みのサービスのAPIキー

もう一度言います:翻訳のためだけです。

  1. platform.openai.comにアクセスしてアカウントを作成するか、ログインしてください。
  2. 右上にあるプロフィールメニューからAPI Keysに移動してください。
  3. Create new secret keyをクリックしてください。
  4. AiSrtなどの名前を付けて、確定してください。
  5. すぐにキーをコピーしてください、二度と表示されなくなります。
  6. appsettings.jsonで、"OPENAI_KEY"の代わりに貼り付けてください:
{
  "OpenAI": {
    "ApiKey": "sk-votre-cle-api-ici",
    "Model": "gpt-5-mini",
    "Temperature": 1
  }
}

このファイルは実行ファイルの隣にあります。AiSrtをインストールすると、Windowsでは%LOCALAPPDATA%\AiSrt\appsettings.jsonから、LinuxとmacOSでは~/.config/aisrt/appsettings.jsonから読み込まれます。

ヒント:キーを別の.envファイルに保存しておくこともできます。appsettings.json"UseSecretEnvFile": trueを入れ、ファイルのパスを指定し、その中にOPENAI_KEY=sk-votre-cle-api-iciという行を書いてください。私は自宅ではこうしています、考えずに共有してしまう設定ファイルの中でキーを持ち歩かずに済みます。

費用:OpenAIは使用量に応じて課金し、字幕の使用量はごくわずかです。gpt-5-miniなら、映画1本まるごとで数セント程度だと思ってください。

Claude、Gemini、またはGrokのほうがいい場合は

このバージョンからは、OpenAIだけが有料サービスというわけではありません。自分のキーを使えば、まったく同じ仕事をしてくれるサービスがあと3つあります。ClaudeにはAnthropic、GeminiにはGoogle AI Studio、GrokにはxAIです。どこでも手順は同じです。アカウントを作り、キーを生成して、appsettings.jsonに貼り付けます。

各サービスにはそれぞれのセクションがあり、デフォルトのモデルはすでに入力されています。

{
  "Translation": { "Provider": "anthropic" },
  "Anthropic": { "ApiKey": "sk-ant-votre-cle", "Model": "claude-haiku-4-5" },
  "Gemini":    { "ApiKey": "votre-cle",        "Model": "gemini-3.6-flash" },
  "Xai":       { "ApiKey": "xai-votre-cle",    "Model": "grok-4.5" }
}

ファイルに触らずにサービスを試すなら、--providerオプションがあります。

aisrt "film.srt" -t fr --provider anthropic
aisrt "film.srt" -t fr --provider gemini
aisrt "film.srt" -t fr --provider grok

よく使われる名前も受け付けるので、claudegooglegrokgptは正式名称と同じように使えます。自分でも2回に1回は間違えていたので追加しました。

私が一晩を費やすことになった細かい点があります。各サービスはキー用の環境変数名を2つ受け付けます。たとえばANTHROPIC_API_KEYまたはCLAUDE_API_KEYです。私は.envファイルに企業名ではなくモデル名を入れていて、AiSrtからキーがないと丁寧に説明されました。キーはそこにありました。AiSrtが見ていない名前の下にです。

最後に、これは4つすべてに当てはまります。キーが間違っている場合、アカウントの残高が空の場合、またはモデルが存在しない場合、AiSrtは開始するにそのことを伝え、修正すべき設定ファイルの行を示してくれます。翻訳が半分まで進んだ映画の途中でクラッシュすることはもうありません。


それとも、自宅でOllamaを使って無料で翻訳する

OpenAIのアカウントを作りたくない、またはファイルを第三者に送るのが嫌ですか?Ollamaをインストールすれば、言語モデルを自分のマシン上で直接動かせます。無料で、制限がなく、モデルをダウンロードしたあとはインターネット接続なしで動きます。

三つのステップ:

# 1. Installer Ollama depuis ollama.com, puis demarrer le serveur
ollama serve

# 2. Telecharger le modele livre par defaut
ollama pull gpt-oss:20b

# 3. Traduire, en local
aisrt "film.srt" -t fr --provider ollama

--providerオプションは、実行中のコマンドにだけ適用されます。Ollamaをデフォルトのエンジンにしたいなら、appsettings.jsonTranslationセクションに"Provider": "ollama"を入れておけば、もう気にする必要はありません。

どのモデルを選ぶべきか?いくつか試してみましたが、答えには驚きました。ローカルモデルには、非常に厳格な出力形式を守ることが求められます。送ったブロックごとに、順番どおり、コメントなしで翻訳済みのブロックを返さなければなりません。まったくできないモデルもあります。qwen2.5は、最大限に制限しても、3回試して3回とも字幕の途中に中国語のコメントを紛れ込ませました。これでは使いものになりません。llama3.1:8bはとてもよくやってくれて、速度もおよそ10倍です。gpt-oss:20bをデフォルトで同梱しているのは、試したかぎり一つのブロックも失ったことがないからですが、かなり重く(およそ14 GB)、速度も遅いです。

このトレードオフについては正直に言いましょう。ローカルでは無料ですが遅く、品質もgpt-5-miniの出力には及びません。今夜見る映画なら、3セントのOpenAI APIのほうが快適です。メーターを気にせずシーズン全体を処理したい場合や、機密性の高いコンテンツの場合は、Ollamaが面白くなります。

時間を奪われたので、あなたには同じ思いをさせないために言っておくことが一つあります。AiSrtはOllamaのネイティブAPIで通信し、十分なコンテキストウィンドウを指定します。OllamaのOpenAI互換レイヤーを経由すると、この設定は無視され、モデルは何も言わずに回答を途中で切り、最終ファイルのブロックが抜けることになります。こちらで処理していますが、ローカルではバッチが小さくなる理由はこれです(40ブロックではなく10ブロック)。


処理が始まる前に起きていること

起動時には二つのチェックが実行されますが、これのおかげでかなりイライラせずに済みました。

最初のものは、渡されたファイルを調べます。オプションを忘れてaisrt film.mkvと入力すると、AiSrtはそれが動画だと答え、--extractまたは--transcribeを指定するよう知らせてくれます。以前はバイナリファイルをテキストとして読み込み、そのままAIに送っていたため、AIからリクエストサイズについての意味不明なエラーが返ってきていました。ちなみに、.srtではない字幕(.ass.vtt.sub)を渡すと、ffmpegで自動的に変換して、そのまま翻訳に進みます。

2つ目のものは、何かを送信する前に翻訳エンジンが応答するか確認します。無効なキー、クレジットのないアカウント、起動していないOllamaサーバー、ダウンロードされていないモデル、それぞれのケースにメッセージと修復用のコマンドがあります。6本のトラックの抽出を開始して、コーヒーを飲みに出かけ、戻ってきたら同じエラーが6つ並んでいた、なんて最悪です。

使い方ガイド

基本構文

aisrt [<fichier>] [options]

すべてのオプション

オプション説明デフォルト値
<file>翻訳する.srtファイルへのパス、または--extract--transcribeで使用する動画ファイルなし
-t, --target <code>対象言語のコードfr
-s, --source <code>原言語のコードen
--languages29言語とそのコードを表示なし
--streams動画の字幕トラックを何も抽出せずに一覧表示なし
--extract動画の字幕トラックを対話形式で選択して抽出。画像トラックはOCRで読み取られるなし
--transcribewhisper.cppで動画の音声を.srtに書き起こすなし
-p, --provider <nom>翻訳エンジン: openaianthropicgeminixaiまたはollamaappsettings.jsonのもの
--stream <n|all>--extractと一緒に使用: メニューを経由せずに抽出するトラックなし
-tt, --translate-to <code>--extractまたは--transcribeと一緒に使用: 何も尋ねずに結果を翻訳なし
-m, --model <nom>--transcribeと一緒に使用: メニューを経由せずに使用するwhisperモデルなし
-al, --audio-language <code>--transcribeと一緒に使用: 動画で話されている言語whisperが検出
-ni, --non-interactive質問を一切せず、デフォルト値を適用なし
--versionバージョンを表示なし
-h, --helpヘルプを表示なし

--streamsは複数形で、単にトラックを一覧表示するだけなのに対して、--streamは単数形で、抽出するトラックを1つ選びます。1文字違うだけで、効果はまったく違います。名前を変更しようか迷いましたが、やっぱりやめました:どちらも自然に思いつく名前だからです。


1. 字幕を翻訳する

主な機能で、私がいちばんよく使っているものです:

# Traduire de l'anglais vers le français (comportement par défaut)
aisrt "film.srt"

# Traduire de l'anglais vers l'espagnol
aisrt "film.srt" -s en -t es

# Traduire du français vers le japonais
aisrt "film.fr.srt" -s fr -t ja

翻訳されたファイルの名前には対象言語のコードが入ります:film.fr.srtfilm.es.srtなどです。前の出力ファイルがすでに存在する場合は、上書きする前に.bak.srtとしてコピーされます。

翻訳は40ブロックずつのバッチで行われ、各バッチは戻ってくるとすぐにディスクへ書き込まれます。私の環境で映画全編を処理すると、こんな感じです:

翻訳中のターミナルウィンドウ、経過時間とバッチごとの進行状況

598ブロックを15バッチに分割し、右側に時間が積み上がっていくのが見えます:1バッチあたりだいたい1分、映画全体では15分弱です。13番目のバッチで止まったら、同じコマンドをもう一度実行すれば13番目のバッチから再開します。

2. 動画のトラックを一覧表示する

抽出する前に、ファイルの中身を確認できます:

aisrt --streams "film.mkv"

各トラックについて、ストリーム番号、言語、コーデック、種類が表で表示されます。種類はテキストまたはビットマップです。

3. 動画から字幕を抽出する

多くのMKVやMP4には、すでに字幕が埋め込まれています。作り直すより、取り出して使うほうがいいでしょう:

aisrt --extract "film.mkv"

メニューからトラックを1つ選ぶことも、まとめてすべて抽出することもできます。テキスト形式(SRT、ASS、SSA、WebVTT、mov_text)に対応しています。PGSトラック、つまりBlu-rayの字幕は画像です:現在は文字認識で読み取れるようになっていて、次のセクションで取り上げます。DVDや地デジの字幕はまだデコードできませんが、AiSrtはそれらを黙って飛ばす代わりに、はっきりそう伝えてくれます。抽出が終わると、各トラックの言語を開始言語として、そのまま各トラックの翻訳を提案します。

注記:ffmpegがマシンにまだ入っていなければ、WindowsとLinuxでは自動的にダウンロードされます。macOSでは、brew install ffmpegでインストールしてください。

4. 音声を字幕に書き起こす

動画に字幕がまったくない?whisper.cppで作る。

aisrt --transcribe "film.mkv"

初回起動時、AiSrtはどの音声認識モデルを使うか尋ねてくる。

  • base.en、約150 Mo:速く、英語をはっきり発音した音声なら問題ない
  • small.en、約500 Mo:ちょうどいい妥協点
  • medium.en、約1,5 Go:より正確だが、より遅い
  • basesmallmedium:同じサイズだが、多言語対応
  • large-v3、約3 Go:最も正確で、多言語対応、そして最も遅い

何が欲しいかすでにわかっているなら、--modelでこのメニューを飛ばせる。

英語以外のものを文字起こしする

以前のAiSrtは、英語を渡されるものと思い込んでいた。これはかなりまずいアイデアだった。フランス語のスピーチは、警告の一言もなく、いい加減な英語の字幕になって出てきて、続けて翻訳すると、その英語から訳し直されたフランス語ができあがった。自分の動画でやる伝言ゲームだ。

今は、whisperが話されている言語を検出し、AiSrtはその返答をその場で読み取る。何も申告する必要はなく、生成されるファイルには正しい言語コードが付く。多言語モデルを使えば、何をしているかわかっている場合に、いつでも言語を指定できる:

aisrt --transcribe "film.mkv" --audio-language fr --model base

この場合、生成されるファイルはfilm.fr.srtという名前になり、続けて翻訳すると、AiSrtは出発点がフランス語だとわかる。

少しのあいだ考え込んだ落とし穴がある。名前が.enで終わるモデルは、英語だけで訓練されている。フランス語の音声を渡しても文句を言わず、完全な自信満々さで英語らしい音声表記を返してくる。ファイルを読んで初めて気づくような結果だ。だからAiSrtは何かを起動する前にその組み合わせを拒否し、使えるモデルの一覧を表示する。

WindowsLinuxでは、AiSrtがwhisperを勝手にダウンロードする。WindowsではさらにNVIDIAのカードを検出して、ずっと速いCUDA版を使う。

macOSでは、もう一歩進める必要がある。whisper.cppプロジェクトは、そこではコマンドライン実行ファイルを公開しておらず、Appleの開発者向けフレームワークだけを公開している。だから自動的にダウンロードするものがない。解決策は一つのコマンドで済む:

brew install whisper-cpp ffmpeg

するとAiSrtはシステムにインストールされたツールを探し、そのまま使う。手元にMacがなくてこのシナリオを最初から最後まで試せないので、もしmacOSを使っていて詰まったら、私に書いてほしい、興味がある。


画像になっている字幕

Blu-rayから字幕トラックを取り出しても、テキストは手に入らない。手に入るのは画像で、セリフごとに一枚ずつ、PGSという形式になっている。ディスクに保存されているのは言葉ではなく、言葉の写真だ。映画のフォントと正確な配置を保つには便利だが、翻訳したいとなると悲惨だ。翻訳するものは何もなく、ピクセルしかない。

これまで、AiSrtは丁寧に対応できないと伝えていた。今はできる。

コマンドを実行すると起きること

新しく入力するものはありません、前と同じコマンドです:

aisrt --extract "film.mkv"

画像トラックを選ぶと、AiSrtは3つの段階を続けて実行します。まずffmpegでコンテナから生のトラックを取り出します。次に画像を自分で、字幕1つにつき1枚ずつデコードし、その際にディスクが書き込んだ表示時刻も取得します。それから全トラック分を一度にTesseractに渡します。Tesseractは文字認識エンジン(画像上のテキストを読み取るソフトウェア)です。

Tesseractの言語ファイルは、トラックが示す言語で自動的にダウンロードされます。フランス語のトラックならフランス語、日本語のトラックなら日本語です。選ぶ必要はありません。

Tesseractは自分でインストールする必要がある

これはAiSrtが代わりに探してくれない唯一の依存関係で、意図的にそうしています。ffmpegとwhisperは自律型の実行ファイルを公開しているので、きちんとダウンロードできます。Tesseractは違います、プラットフォームごとに異なるシステムインストーラーだからです。必要なのは1つのコマンドだけです:

# Windows
winget install tesseract-ocr.tesseract

# Linux
sudo apt install tesseract-ocr

# macOS
brew install tesseract

30分を無駄にしたちょっとした余談です、WindowsではこのインストーラーはTesseractをPATHに追加しません。そこでAiSrtはツールが見つからないと返し、今実行したばかりのコマンドをそのまま実行するよう提案してきました。出口のないループです。AiSrtはこれから、インストーラーが実際にバイナリを置くフォルダーを探すようになります。

AIがOCRの読んだものを読み直す

文字認識エンジンはいつも同じ間違いをします。大文字のIの代わりに縦棒になる。rの後にnが続くとmになる。アクセントが飲み込まれる。映画全体となると、最後にはそれが目につくようになります。

そこでAiSrtは認識したテキストを翻訳サービスに送り返し、正確な指示を添えます、読み取り間違いを修正し、何も翻訳せず、何も言い換えず、何も短くしないでください。これは校正であって、書き直しではありません。試験台に載せた映画の一場面の字幕100個では、14個が修正され、86個はすでに正しく、移動されたものも捏造されたものも1つもありませんでした。

機能よりも安全策のほうが重要なので、詳しく説明します。修正が受け入れられるのは、読み取ったものに近いままの場合だけです、セリフを翻訳しようとするモデルは弾かれます。そして返答に送ったテキストとまったく同じ数のテキストが含まれていなければ、バッチ全体を破棄して生のテキストを保存します。間違いが見える字幕のほうが、間違ったセリフに貼り付けられた完璧な字幕より好みです。

この校正はデフォルトで有効になっていて、すでに翻訳に使っているサービスを利用します。appsettings.jsonで無効にしたり、別のサービスに任せたりできます。キーが何も設定されていない場合も、劇的なことは起きません、OCRのテキストがそのまま書き出され、AiSrtがそのことを知らせ、抽出は通常どおり終了します。

探さなければ絶対に見つけられなかったバグ

多くのディスクでは字幕がフェードインやフェードアウトで表示されたり消えたりします。そのために新しい画像を送るのではなく、透明度だけを変えながら同じ画像を再利用しています。AiSrtはこの変化を字幕の終了だと受け取っていました。

結果として、4秒間表示される字幕が3つの断片として出力されていました。最初のものは1秒続き、残り2つは薄すぎて読み直せなかったので、破棄されました。私のテストファイルにはフェードが1つもなかったので、見るためにそのケースをわざと作りました。前は3つの断片、後は適切な長さの字幕1つです。

AiSrtは今では連続する描画の中から、テキストが最も読みやすいものを残します。フェードは透明な状態で始まり、透明な状態で終わります、最初も最後も正しい選択ではありません。

まだ動かないもの

DVDTNTの画像字幕はデコードされません。各画像が自律しているPGSとは違い、これらの形式はファイル内の別の場所に収められた情報を参照して読み取られます。これは別の作業であって、今回の作業の拡張ではありません。それまでの間、AiSrtはそれらを検出し、黙って無視する代わりに知らせてくれます。


未加工の動画から翻訳済み字幕まで、完全な一連の流れ

# Étape 1 : transcrire l'audio anglais
aisrt --transcribe "conference.mp4"
# donne conference.en.srt

# Étape 2 : traduire en français
aisrt "conference.en.srt" -s en -t fr
# donne conference.fr.srt

# Étape 3 : et en espagnol tant qu'à faire
aisrt "conference.en.srt" -s en -t es
# donne conference.es.srt

3つのコマンドで、字幕のない動画が3つの言語で利用できるようになります。

これを全部スクリプト化するなら大事な細かい点ですが、AiSrtはすべてうまくいったときに0を返し、失敗したときは1を、自分でキャンセルしたときは2を返します。すでにディスクに書き込まれたものはそのまま残り、次回の起動時に翻訳が再開されます。


質問を1つもせずに、すべてを自動化する

上の3つのコマンドは、どのトラックを抽出するか、どのモデルを使うか、そのあと翻訳するかを質問してきます。画面の前にいるときは便利ですが、一晩かけてシーズン全体を処理したいときには、ずっと不便です。

4つのオプションでそれらを置き換えられるので、完全な一連の流れが1行に収まります:

# Extraire la piste 2, la traduire en francais, sans jamais rien demander
aisrt --extract "episode.mkv" --stream 2 --translate-to fr --non-interactive

Windowsでフォルダー全体を処理するなら:

Get-ChildItem *.mkv | ForEach-Object {
  aisrt --extract $_.FullName --stream 1 --translate-to fr --non-interactive
}

--non-interactiveは何も推測しません:各質問にはデフォルト値が使われ、それを選んだことと、別の値を選ぶにはどのオプションを使えばよかったかを知らせてくれます。明示的に指定した値が、黙って無視されることはありません。トラックが2つしかないファイルでトラック7を要求すると、何もなかったかのように全部を抽出するのではなく、処理を止めて利用可能なトラックを一覧表示します。スクリプトでは、予想外の結果よりもはっきりしたエラーのほうがましです。

そしてこのモードでCtrl+Cを押すと、確認を求めずにすぐ停止します。答える人が誰もいないので、返事のない質問がスクリプトを完全に止めてしまうことになります。


対応言語

コード言語コード言語コード言語
arアラビア語csチェコ語daデンマーク語
deドイツ語elギリシャ語en英語
esスペイン語fiフィンランド語frフランス語
heヘブライ語hiヒンディー語huハンガリー語
idインドネシア語itイタリア語ja日本語
ko韓国語msマレー語nlオランダ語
noノルウェー語plポーランド語ptポルトガル語
roルーマニア語ruロシア語svスウェーデン語
thタイ語trトルコ語ukウクライナ語
viベトナム語zh中国語  

このリストをいつでも確認できるように、aisrt --languagesと入力してください。


高度な設定

すべてはappsettings.jsonで設定します:

  • モデル、別の OpenAI モデルを gpt-5-miniより使いたい場合は、Modelキーを使います。
  • バッチサイズBatchSizeを使います : 1回のリクエストで送るブロック数で、デフォルトは40です。
  • 行の長さMaxLineLengthを使います : 50文字を超えると、AiSrtは画面上で読みやすいように行を分割します。
  • ネットワークのタイムアウトRequestTimeoutMinutesを使います : デフォルトは10分です。BatchSizeを大きく上げるなら、こちらも上げてください。
  • AIに与える指示SystemPromptUserInstructionPromptを使います。ここからが面白いところです : この2つの文章を書き換えれば、法律、医療、宗教、技術の文脈に合わせて翻訳を調整できます。そのために、これらを意図的にコードの外に出しました。
  • 温度、非常に逐語的な翻訳の0.3から、より自由な翻訳の1.5までです。デフォルトは1です。
  • 翻訳エンジンTranslationセクションのProviderで設定します : openaianthropicgeminixaiまたはollamaです。これはすべてのコマンドに適用される設定で、--providerが現在のコマンドにしか適用されないのとは違います。
  • Ollamaの設定、専用のセクションにあります : BaseUrlでサーバーアドレス、Modelでモデル、BatchSizeでバッチサイズ、NumCtxでコンテキストウィンドウのサイズを設定します。前者を増やすなら、後者も増やすことを考えてください。
  • 文字認識Ocrセクションにあります : DefaultLanguageでフォールバック言語、PageSegModeでtesseractの分割モード、UpscaleFactorで読み取り前の画像の拡大率を設定します。最後の2つには上限と下限があり、とんでもない値は通知されたうえで置き換えられるので、画像を1枚ずつ読み取る処理全体が失敗することはありません。
  • OCRテキストの校正Ocr:Proofreadで設定します : Enabledで無効化、Providerで翻訳に使うものとは別のサービスに任せ、BatchSizeでバッチサイズを設定します。2つのプロンプトは翻訳のものと同じように書き換えられます。

どんな人向け?

  • 日常的に動画を見るために字幕を必要とするろう者や難聴者
  • 自分の言語圏を超えた人々に届けたいコンテンツクリエイター
  • オンライン講座が、いい加減な自動字幕よりも良いものに値する教師や講師
  • 数分で最初の下訳をざっと作りたいプロの翻訳者
  • もちろん、映画好きやドラマ好き
  • 動画を国際的に発信する団体やNGO

AiSrtは無料ですぐに使えます。
ダウンロードして、試して、動画を誰もが見られるようにしましょう。

Download — Version 1.10.0

Version history
1.10.0 2026/08/01Current
- このバージョンは1.6.2以降に追加されたすべてをまとめています。 - OpenAIやOllamaに加えて、Anthropic Claude、Google Gemini、xAI Grokの3つの翻訳サービスが追加されました。 - サービスは--providerで選択するか、appsettings.jsonで選択します。 - キーが欠如している、無効なキー、または未知のモデルは、最初の翻訳前に検出され、ファイルの途中では検出されません。 - キーはサービスごとに2つの環境変数名から取得できます。例えば、ANTHROPIC_API_KEYまたはCLAUDE_API_KEYです。 - Blu-rayのPGS画像字幕は、Tesseractを使用してOCRで読み取られます。自分でインストールする必要があります。 - 認識されたテキストは翻訳サービスによって校正され、翻訳せずに読み取りエラーを修正します。 - フェードは画像字幕を切断しなくなりました:4秒の字幕が3つの部分に分かれて表示されていました。 - 話されている言語は、英語と仮定されるのではなく、whisperによって検出されます。 - 外国のオーディオに対しては、英語のwhisperモデルのみが拒否され、発明されることはありません。 - トランスクリプションは、2つの分析ウィンドウにまたがる文の最初の単語を失わなくなりました。 - WindowsのコンソールはUTF-8で、トランスクリプション中にアクセントが正しく表示されます。 - 更新通知は起動時に表示され、15分の操作の最後には表示されません。 - Ocr:PageSegModeとOcr:UpscaleFactorは制限されています:範囲外の値は報告され、置き換えられます。 - ヘルプ--helpは、画像トラックのOCR読み取りをついに発表します。 - DVDおよびTNTの画像字幕はまだ管理されていません:それらは報告され、スキップされます。
1.6.2 2026/07/30
- Transcription : le premier mot d'une phrase n'est plus perdu quand elle est à cheval sur deux fenêtres d'analyse. « Cette vidéo présente » était transcrit « vidéo présente » — un défaut qui touchait tous les transcripts produits jusqu'ici. - Transcription : plus de répétitions en boucle sur les passages chantés ou musicaux. - Contrepartie assumée de cette correction : les annotations du type [Musique] n'apparaissent plus dans les sous-titres. - Un transcript vide est désormais signalé immédiatement, au lieu d'échouer plus loin sur un fichier jugé illisible.
1.5.1 2026/04/01
- Traduction locale et gratuite avec Ollama. En plus de l'API OpenAI, AiSrt peut traduire via un serveur Ollama qui tourne sur votre machine : aucune clé, aucun compte, aucun envoi vers un service tiers, et un coût nul. Choix du moteur avec --provider openai|ollama, ou de façon permanente dans appsettings.json. - Vérification du moteur de traduction au démarrage. Clé invalide, compte sans crédit, serveur Ollama arrêté ou modèle absent : chaque cas est détecté avant le premier envoi et donne un message avec la commande qui le corrige, au lieu d'échouer au bout de plusieurs minutes. - Le fichier d'entrée est contrôlé avant tout traitement. Lancer aisrt sur un fichier vidéo sans option ne provoque plus d'erreur incompréhensible : AiSrt explique qu'il attendait un sous-titre et indique --extract ou --transcribe. Les sous-titres .ass, .ssa, .vtt et .sub sont convertis automatiquement en .srt avant traduction. - Transcription dans une autre langue que l'anglais, avec --audio-language, et ajout des modèles whisper multilingues base, small et medium. Un modèle anglais uniquement associé à une autre langue est refusé avant de lancer le traitement, au lieu de produire une transcription fausse sans le signaler. - --transcribe propose de traduire le résultat dans la foulée, comme le fait déjà --extract. - Utilisation en script, sans aucune question posée : --stream choisit la piste à extraire, --translate-to la langue de traduction, --model le modèle whisper, et --non-interactive supprime toute lecture au clavier. Une valeur invalide arrête l'exécution avec un message clair plutôt que d'appliquer un comportement inattendu. - Correction : traduire deux pistes d'une même vidéo vers la même langue ne fait plus écraser le premier fichier par le second. - Correction : un fichier verrouillé, un disque plein ou une sauvegarde impossible donnent un message d'erreur au lieu d'un plantage, et une traduction existante n'est jamais remplacée sans sauvegarde préalable. - La vérification de mise à jour ne ralentit plus le démarrage : elle tourne en arrière-plan et son résultat s'affiche à la fin de la commande.
Join the conversation

You need an account to comment on this article. Creating one is free and takes under a minute.

  • The XMLTV file, free to download every day
  • Comment on articles and reply to other readers
  • Get an e-mail when an article you follow is updated

No comments yet.

Une erreur s'est produite. Cette application peut ne plus répondre jusqu'à ce qu'elle soit rechargée.Veuillez contacter l'auteur. Reload 🗙