日本語日記 → 英語 / フランス語 翻訳の ローカル MarianMT と DeepL Free API を並列比較。①翻訳ブロックの実現性と品質を実日記サンプルで判定。
/api/deepl) をプロキシとして経由。API キーはサーバー保管しない (リクエスト毎に転送のみ・ログ無し)。
| MarianMT 初回 DL (ja→en) | 約 103MB / モバイル回線では数分 |
| MarianMT 初回 DL (ja→fr リレー) | 約 206MB / モバイル端末では現実的か要実測 🟡 |
| MarianMT 推論速度 | 1段落 (200字) で 5〜30秒 予想 🟡 (Whisper-tiny より重い) |
| DeepL Free CORS | ❌ ブラウザ直叩き不可 → Cloudflare Pages Function プロキシ必須 ✅ |
| DeepL API キー露出リスク | セッション内のみ保持。localStorage 非保存。プロキシでログ無し |
PoC #4 翻訳ブロック: 日本語日記 → 英語 / フランス語 翻訳の実現性検証。①翻訳ブロックは PoC 計画上 最後の未検証ブロック。
確定済みブロック: ②TTS = Piper TTS (✅ GO 確定 / PoC #2) / ③LRC = Whisper + forced alignment (✅ GO 確定 / PoC #3)
案 A: MarianMT — Xenova/opus-mt-ja-en (HF Hub 実在確認・量子化 ONNX あり) を transformers.js v3.1.2 で実行。日→仏は Xenova の直接モデルが存在しないため日→英→仏 リレー。
案 B: DeepL Free — CORS 不可 (DeepL 公式ドキュメントで明示) のため Cloudflare Pages Function (/functions/api/deepl.js) でサーバー側プロキシを経由。Free 版エンドポイント api-free.deepl.com に転送。
判定の核: 同じ日記サンプルを A/B 両方で訳出 → オーナーが読み比べて品質判定 (F5 戒め: カンで決めない・実データで決める)。
機密性 vs コスト: 案 A は日記が端末外に出ない / 案 B は DeepL サーバーへ送信される。両者のトレードオフを実走してから方針決定。