配信用リアルタイム字幕アプリ — 音声認識・句読点付け・英訳まで、すべてローカルで。
A fully-offline real-time captioning app for live streaming: Japanese speech recognition, punctuation, and English translation — all running locally on your PC.
日本語の話し声をリアルタイムに字幕化し、OBS のブラウザソースに重ねられます。音声はネットに送られず、 モデルの推論も含めてすべてお使いの PC の中だけで動きます。
▶ 30秒デモ動画を見る(YouTube) — 2人の字幕・翻訳・エフェクトが動く様子
テスト協力: 絵咲まくらさん
| コックピット(メイン画面) | 1対1コラボ中(自分/相手の見た目を個別に割当) |
|---|---|
![]() | ![]() |
📖 画像つきの詳しい使い方は docs/MANUAL.md(配布版には同内容の マニュアル.html を同梱)
| やりたいこと | 見る場所 |
|---|---|
| とにかく動かしたい | 使い方(配布版) |
| OBS に字幕を出したい | マニュアル 5章 |
| 字幕の見た目を手早く変えたい | 「字幕の見た目」の切替 — マニュアル 3章 |
| 自分だけの字幕デザインを作りたい | スタイル・レイアウト作成ガイド |
| 「ありがとう」でキラキラを飛ばしたい | エフェクトガイド |
| 名前・ゲーム名が誤認識される | 認識させる単語 — マニュアル 6章 |
| 英語・中国語などの字幕も併記したい | マニュアル 7章 |
| 日本語を出さず訳文だけの字幕にしたい | 表示モード「翻訳のみ」— マニュアル 7章 |
| VRChatのチャットボックスに字幕を出したい | VRChat連携 — マニュアル 4章 |
| 日本語以外の言語で配信したい | 多言語モデル — マニュアル 4章 |
| 海外の配信を日本語字幕で見たい | 多言語認識+翻訳先=日本語 — マニュアル 7章 |
| コラボ相手の字幕も出したい | マニュアル 8章 |
| 歌枠で歌詞みたいに散らしたい | リリックビデオ風字幕 — スタイルガイド 4章 |
| 作ったスタイルを配りたい・もらいたい | mojipack — スタイルガイド 7章 |
| 配信後の文字起こしが欲しい | ログ保存 — マニュアル 9章 |
| 設定をバックアップしたい | data\ をコピーするだけ — マニュアル 9章 |
| 動作が重い | 認識モデルを「多言語」に(負荷約1/3)— マニュアル 10章 / テクニカルガイド |
| うまく動かない | マニュアル 10章 |
.mojipack ファイルでスタイルの配布・取り込みも可能マイク → VAD → 音声認識 → 単語置換 → 数字正規化 → 句読点 ┬→ 字幕(OBSオーバーレイ)
(Silero) (k2) (ホットワード) (numnorm) (BERT) └→ 英訳(FuguMT) ┘
推論はすべて軽量ランタイムで動きます(PyTorch / Transformers 非依存):
| 処理 | モデル | ランタイム |
|---|---|---|
| 音声認識(日本語) / VAD | ReazonSpeech k2 v2 / Silero VAD | sherpa-onnx |
| 音声認識(多言語) | SenseVoice small(中英日韓粤・句読点/数字内蔵) | sherpa-onnx |
| 句読点(日本語特化時) | 日本語BERT(ONNX変換済み) | ONNX Runtime |
| 英訳 | FuguMT ja-en(CTranslate2変換済み) | CTranslate2 + SentencePiece |
| 多方向翻訳 | M2M-100 418M(int8)+ OpenCC(地域表記) | CTranslate2 + SentencePiece |
認識モデルと翻訳先は「アプリ設定」で切替でき、認識言語×翻訳先から使うモデルが自動選択されます。
内部は pywebview のデスクトップ窓+ローカル HTTP/SSE サーバで、OBS 用オーバーレイと 設定 UI を同じサーバから配信します。英訳(FuguMT)は Transformer による生成型の ニューラル機械翻訳で、いわゆる「生成 AI」を部品として利用しています。
利用するモデル・ライブラリとそのライセンスは CREDITS.md を参照してください。
翻訳まわりの実測(4言語の速度・失敗の仕方・効いた対策)は ローカル翻訳の実測レポート にまとめています。 CPUだけでリアルタイム翻訳を作るときの参考にどうぞ。
| 最低 | 推奨 | |
|---|---|---|
| OS | Windows 10 2004 以降(64bit) | Windows 11 |
| CPU | 4コア8スレッド・AVX2対応(2017年以降の Core i5 / Ryzen 5 相当) | Ryzen 7000/9000(最適)/ Intel 12世代以降・AVX-512対応の10〜11世代 |
| メモリ | 8GB | 16GB |
| ストレージ | 空き5GB | SSD |
負荷の本体は int8 の ONNX 推論のため、コア数より CPU の世代(AVX-512 VNNI / AVX-VNNI 対応)が 効きます。世代別の適性表・実測データは docs/TECH_GUIDE.md を参照。 ほか: マイク / WebView2(Win11標準搭載) / 初回のみネット接続(モデル約1.2GB DL)。 OBS併用時はGPUエンコード(NVENC / AMF)推奨。開発には Python 3.11。
Mojicast.exe をダブルクリックhttp://localhost:8765初回の ▶開始 時に AI モデル(約1.2GB)を自動ダウンロードします。以降はオフラインで動作します。
詳しい操作は同梱の マニュアル.html を参照。
git clone <this-repo>
cd mojicast
python -m venv .venv && . .venv/Scripts/activate # Windows
# 依存を入れる(torch / transformers / ReazonSpeechパッケージは不要)
pip install -r requirements.txt
# 起動
python app.py
句読点・翻訳は変換済みモデル(ONNX / CTranslate2)を Hugging Face の配布リポジトリ
(mojicast-punct-onnx /
mojicast-fugumt-ja-en-ct2 /
mojicast-m2m100-ct2)
から取得します。認識モデル(k2 / SenseVoice)は各配布元から取得します。
モデルを変換し直す場合のみ tools/convert_models.py を使ってください
(このときだけ torch / transformers が必要)。移行時の品質検証は
bench/regression_diff.py(実配信ログでの新旧比較)で行います。
pyinstaller --noconfirm Mojicast.spec
.\build_bundle.ps1 -NoModels # 軽量版(モデル無し・初回DL・約0.22GB / Zip 約91MB)
.\build_bundle.ps1 # 同梱版(モデル込み・完全オフライン・約1.7GB)
.\smoke_test.ps1 -Fresh # リリース前検証(新規ユーザーのDL経路を再現)
詳細は STUDIO_README.md。
| パス | 内容 |
|---|---|
app.py | エントリポイント(pywebview 窓) |
app_server.py | ローカル HTTP/SSE サーバ・設定/プロファイル/mojipack API |
engine.py | 認識エンジン(VAD→ASR→後処理→翻訳・多言語/コラボ対応) |
asr_model.py / punct.py / translate.py | 各モデルのローダと推論 |
vocab.py / numnorm.py | ホットワード語彙処理 / 漢数字→算用数字の正規化 |
wordstore.py | ユーザーデータ(data/)の管理・単語プロファイルの合成 |
overlay.html / ui/ | OBS オーバーレイと GUI(コックピット / スタジオ / アプリ設定・ライト基調/ダーク切替) |
defaults/ | 既定データ(初回に個人環境へ複製される種) |
tools/ | モデル変換(ONNX / CTranslate2 化・開発時のみ) |
bench/ | 移行ベンチ・回帰diff(アプリ非組込) |
apppaths.py | 実行時パス解決(開発/凍結 両対応) |
Mojicast.spec / build_bundle.ps1 / smoke_test.ps1 | 配布ビルドと検証 |
ROADMAP.md / COLLAB_DESIGN.md | 将来構想・コラボ字幕の設計メモ |
設定・単語帳などの実行時データは data/ フォルダに集約され、各自の環境で
生成・編集されるもので、リポジトリには含まれません(初回起動時に defaults/ から複製。
旧バージョンでルート直下にあったデータは初回起動時に data/ へ自動移行)。
バックアップは data/ フォルダのコピーだけで済みます。
翻訳モデル FuguMT は CC BY-SA 4.0 のため、変換済みモデルの配布リポジトリは 同ライセンスを継承し原作者クレジットを掲載しています。モデルを同梱した配布物を 作る場合も各ライセンスの遵守が必要です(詳細は CREDITS.md)。
作者: 癒色えも
不具合報告・要望・感想はお気軽にどうぞ。報告の際は、アプリ設定の「情報・連絡先」に表示される バージョン番号もあわせてお知らせいただけると調査がスムーズです。
| 窓口 | 用途 |
|---|---|
| 💬 Discord | 使い方の質問・要望・雑談(コミュニティ) |
| 🐙 GitHub Issues | 不具合報告・機能要望(推奨) |
| 𝕏 X @ishiki_emo | 作者へ直接ひとこと・最新情報 |
アプリ内でも アプリ設定 → 情報・連絡先 から上記リンクをブラウザで開けます。 新しいバージョンが出るとコックピットにお知らせが表示され、同画面の「更新を確認」からも手動確認できます。
319 commits
HTML
73.3%
Python
20.8%
JavaScript
5.1%
配信用リアルタイム字幕アプリ — 音声認識・句読点付け・英訳まで、すべてローカルで。
A fully-offline real-time captioning app for live streaming: Japanese speech recognition, punctuation, and English translation — all running locally on your PC.
日本語の話し声をリアルタイムに字幕化し、OBS のブラウザソースに重ねられます。音声はネットに送られず、 モデルの推論も含めてすべてお使いの PC の中だけで動きます。
▶ 30秒デモ動画を見る(YouTube) — 2人の字幕・翻訳・エフェクトが動く様子
テスト協力: 絵咲まくらさん
| コックピット(メイン画面) | 1対1コラボ中(自分/相手の見た目を個別に割当) |
|---|---|
![]() | ![]() |
📖 画像つきの詳しい使い方は docs/MANUAL.md(配布版には同内容の マニュアル.html を同梱)
| やりたいこと | 見る場所 |
|---|---|
| とにかく動かしたい | 使い方(配布版) |
| OBS に字幕を出したい | マニュアル 5章 |
| 字幕の見た目を手早く変えたい | 「字幕の見た目」の切替 — マニュアル 3章 |
| 自分だけの字幕デザインを作りたい | スタイル・レイアウト作成ガイド |
| 「ありがとう」でキラキラを飛ばしたい | エフェクトガイド |
| 名前・ゲーム名が誤認識される | 認識させる単語 — マニュアル 6章 |
| 英語・中国語などの字幕も併記したい | マニュアル 7章 |
| 日本語を出さず訳文だけの字幕にしたい | 表示モード「翻訳のみ」— マニュアル 7章 |
| VRChatのチャットボックスに字幕を出したい | VRChat連携 — マニュアル 4章 |
| 日本語以外の言語で配信したい | 多言語モデル — マニュアル 4章 |
| 海外の配信を日本語字幕で見たい | 多言語認識+翻訳先=日本語 — マニュアル 7章 |
| コラボ相手の字幕も出したい | マニュアル 8章 |
| 歌枠で歌詞みたいに散らしたい | リリックビデオ風字幕 — スタイルガイド 4章 |
| 作ったスタイルを配りたい・もらいたい | mojipack — スタイルガイド 7章 |
| 配信後の文字起こしが欲しい | ログ保存 — マニュアル 9章 |
| 設定をバックアップしたい | data\ をコピーするだけ — マニュアル 9章 |
| 動作が重い | 認識モデルを「多言語」に(負荷約1/3)— マニュアル 10章 / テクニカルガイド |
| うまく動かない | マニュアル 10章 |
.mojipack ファイルでスタイルの配布・取り込みも可能マイク → VAD → 音声認識 → 単語置換 → 数字正規化 → 句読点 ┬→ 字幕(OBSオーバーレイ)
(Silero) (k2) (ホットワード) (numnorm) (BERT) └→ 英訳(FuguMT) ┘
推論はすべて軽量ランタイムで動きます(PyTorch / Transformers 非依存):
| 処理 | モデル | ランタイム |
|---|---|---|
| 音声認識(日本語) / VAD | ReazonSpeech k2 v2 / Silero VAD | sherpa-onnx |
| 音声認識(多言語) | SenseVoice small(中英日韓粤・句読点/数字内蔵) | sherpa-onnx |
| 句読点(日本語特化時) | 日本語BERT(ONNX変換済み) | ONNX Runtime |
| 英訳 | FuguMT ja-en(CTranslate2変換済み) | CTranslate2 + SentencePiece |
| 多方向翻訳 | M2M-100 418M(int8)+ OpenCC(地域表記) | CTranslate2 + SentencePiece |
認識モデルと翻訳先は「アプリ設定」で切替でき、認識言語×翻訳先から使うモデルが自動選択されます。
内部は pywebview のデスクトップ窓+ローカル HTTP/SSE サーバで、OBS 用オーバーレイと 設定 UI を同じサーバから配信します。英訳(FuguMT)は Transformer による生成型の ニューラル機械翻訳で、いわゆる「生成 AI」を部品として利用しています。
利用するモデル・ライブラリとそのライセンスは CREDITS.md を参照してください。
翻訳まわりの実測(4言語の速度・失敗の仕方・効いた対策)は ローカル翻訳の実測レポート にまとめています。 CPUだけでリアルタイム翻訳を作るときの参考にどうぞ。
| 最低 | 推奨 | |
|---|---|---|
| OS | Windows 10 2004 以降(64bit) | Windows 11 |
| CPU | 4コア8スレッド・AVX2対応(2017年以降の Core i5 / Ryzen 5 相当) | Ryzen 7000/9000(最適)/ Intel 12世代以降・AVX-512対応の10〜11世代 |
| メモリ | 8GB | 16GB |
| ストレージ | 空き5GB | SSD |
負荷の本体は int8 の ONNX 推論のため、コア数より CPU の世代(AVX-512 VNNI / AVX-VNNI 対応)が 効きます。世代別の適性表・実測データは docs/TECH_GUIDE.md を参照。 ほか: マイク / WebView2(Win11標準搭載) / 初回のみネット接続(モデル約1.2GB DL)。 OBS併用時はGPUエンコード(NVENC / AMF)推奨。開発には Python 3.11。
Mojicast.exe をダブルクリックhttp://localhost:8765初回の ▶開始 時に AI モデル(約1.2GB)を自動ダウンロードします。以降はオフラインで動作します。
詳しい操作は同梱の マニュアル.html を参照。
git clone <this-repo>
cd mojicast
python -m venv .venv && . .venv/Scripts/activate # Windows
# 依存を入れる(torch / transformers / ReazonSpeechパッケージは不要)
pip install -r requirements.txt
# 起動
python app.py
句読点・翻訳は変換済みモデル(ONNX / CTranslate2)を Hugging Face の配布リポジトリ
(mojicast-punct-onnx /
mojicast-fugumt-ja-en-ct2 /
mojicast-m2m100-ct2)
から取得します。認識モデル(k2 / SenseVoice)は各配布元から取得します。
モデルを変換し直す場合のみ tools/convert_models.py を使ってください
(このときだけ torch / transformers が必要)。移行時の品質検証は
bench/regression_diff.py(実配信ログでの新旧比較)で行います。
pyinstaller --noconfirm Mojicast.spec
.\build_bundle.ps1 -NoModels # 軽量版(モデル無し・初回DL・約0.22GB / Zip 約91MB)
.\build_bundle.ps1 # 同梱版(モデル込み・完全オフライン・約1.7GB)
.\smoke_test.ps1 -Fresh # リリース前検証(新規ユーザーのDL経路を再現)
詳細は STUDIO_README.md。
| パス | 内容 |
|---|---|
app.py | エントリポイント(pywebview 窓) |
app_server.py | ローカル HTTP/SSE サーバ・設定/プロファイル/mojipack API |
engine.py | 認識エンジン(VAD→ASR→後処理→翻訳・多言語/コラボ対応) |
asr_model.py / punct.py / translate.py | 各モデルのローダと推論 |
vocab.py / numnorm.py | ホットワード語彙処理 / 漢数字→算用数字の正規化 |
wordstore.py | ユーザーデータ(data/)の管理・単語プロファイルの合成 |
overlay.html / ui/ | OBS オーバーレイと GUI(コックピット / スタジオ / アプリ設定・ライト基調/ダーク切替) |
defaults/ | 既定データ(初回に個人環境へ複製される種) |
tools/ | モデル変換(ONNX / CTranslate2 化・開発時のみ) |
bench/ | 移行ベンチ・回帰diff(アプリ非組込) |
apppaths.py | 実行時パス解決(開発/凍結 両対応) |
Mojicast.spec / build_bundle.ps1 / smoke_test.ps1 | 配布ビルドと検証 |
ROADMAP.md / COLLAB_DESIGN.md | 将来構想・コラボ字幕の設計メモ |
設定・単語帳などの実行時データは data/ フォルダに集約され、各自の環境で
生成・編集されるもので、リポジトリには含まれません(初回起動時に defaults/ から複製。
旧バージョンでルート直下にあったデータは初回起動時に data/ へ自動移行)。
バックアップは data/ フォルダのコピーだけで済みます。
翻訳モデル FuguMT は CC BY-SA 4.0 のため、変換済みモデルの配布リポジトリは 同ライセンスを継承し原作者クレジットを掲載しています。モデルを同梱した配布物を 作る場合も各ライセンスの遵守が必要です(詳細は CREDITS.md)。
作者: 癒色えも
不具合報告・要望・感想はお気軽にどうぞ。報告の際は、アプリ設定の「情報・連絡先」に表示される バージョン番号もあわせてお知らせいただけると調査がスムーズです。
| 窓口 | 用途 |
|---|---|
| 💬 Discord | 使い方の質問・要望・雑談(コミュニティ) |
| 🐙 GitHub Issues | 不具合報告・機能要望(推奨) |
| 𝕏 X @ishiki_emo | 作者へ直接ひとこと・最新情報 |
アプリ内でも アプリ設定 → 情報・連絡先 から上記リンクをブラウザで開けます。 新しいバージョンが出るとコックピットにお知らせが表示され、同画面の「更新を確認」からも手動確認できます。
319 commits
HTML
73.3%
Python
20.8%
JavaScript
5.1%