公開日: 2024 年 11 月 13 日、最終更新日: 2025 年 5 月 20 日
Browser Support
Chrome の Translator API を使用して、ブラウザで提供される AI モデルでテキストを翻訳します。
ウェブサイトですでに複数の言語でコンテンツを提供している場合もあります。Translator API を使用すると、ユーザーは自分の母語で記述できます。たとえば、ユーザーは自分の第一言語でサポート チャットに参加し、ユーザーのメッセージは、ユーザーのデバイスから送信される前に、サイトによってサポート エージェントの第一言語に翻訳されます。これにより、すべてのユーザーにスムーズで高速かつ包括的なエクスペリエンスを提供できます。
ウェブ コンテンツの翻訳には通常、クラウド サービスの使用が必要です。まず、ソース コンテンツがサーバーにアップロードされ、ターゲット言語への翻訳が実行されます。次に、結果のテキストがダウンロードされ、ユーザーに返されます。コンテンツが一時的で、データベースに保存する必要がない場合、クライアントサイドの翻訳はホスト型翻訳サービスよりも時間と費用を節約できます。
始める
ハードウェア要件を確認する
Chrome でこれらの API を使用して機能を操作するデベロッパーとユーザーには、次の要件があります。他のブラウザでは動作要件が異なる場合があります。
言語検出 API と翻訳 API は、パソコン版 Chrome で動作します。これらの API はモバイル デバイスでは動作しません。
Prompt API、Summarizer API、Writer API、Rewriter API、Proofreader API は、次の条件を満たす場合に Chrome で動作します。
- オペレーティング システム: Chromebook Plus デバイスで Windows 10 または 11、macOS 13 以降(Ventura 以降)、Linux、ChromeOS(プラットフォーム 16389.0.0 以降)。Chromebook Plus 以外のデバイスの Android 版 Chrome、iOS 版 Chrome、ChromeOS 版 Chrome は、Gemini Nano を使用する API でまだサポートされていません。
- ストレージ: Chrome プロファイルを含むボリュームに 22 GB 以上の空き容量が必要です。
- GPU または CPU: 組み込みモデルは GPU または CPU で実行できます。
- GPU: 4 GB を超える VRAM。
- CPU: 16 GB 以上の RAM と 4 個以上の CPU コア。
- 注: 音声入力を使用する Prompt API には GPU が必要です。
- ネットワーク: 無制限のデータ通信または定額制の接続。
Gemini Nano の正確なサイズは、ブラウザがモデルを更新するにつれて変化する可能性があります。現在のサイズを確認するには、chrome://on-device-internals にアクセスしてください。
機能検出を実行して、ブラウザが Translator API をサポートしているかどうかを確認します。
if ('Translator' in self) {
// The Translator API is supported.
}
翻訳の訳文の言語は常にわかりますが、原文の言語は常にわかるとは限りません。このような場合は、言語検出 API を使用できます。
モデルのダウンロード
Translator API は、高品質の翻訳を生成するようにトレーニングされたエキスパート モデルを使用します。この API は Chrome に組み込まれており、ウェブサイトがこの API を初めて使用するときにモデルがダウンロードされます。
モデルを使用できる状態かどうかを判断するには、非同期の Translator.availability() 関数を呼び出します。availability() へのレスポンスが downloadable の場合、ダウンロードの進捗状況をリッスンして、ユーザーに通知します。ダウンロードには時間がかかることがあります。
言語ペアのサポートを確認する
翻訳は、オンデマンドでダウンロードされる言語パックで管理されます。言語パックは、特定の言語の辞書のようなものです。
sourceLanguage: テキストの現在の言語。targetLanguage: テキストの最終的な翻訳先言語。
BCP 47 言語の短いコードを文字列として使用します。たとえば、スペイン語の場合は 'es'、フランス語の場合は 'fr' です。
const translatorCapabilities = await Translator.availability({
sourceLanguage: 'es',
targetLanguage: 'fr',
});
// 'available'
downloadprogress イベントでモデルのダウンロードの進行状況をリッスンします。
const translator = await Translator.create({
sourceLanguage: 'es',
targetLanguage: 'fr',
monitor(m) {
m.addEventListener('downloadprogress', (e) => {
console.log(`Downloaded ${e.loaded * 100}%`);
});
},
});
ダウンロードが失敗すると、downloadprogress イベントが停止し、ready Promise が拒否されます。
翻訳者を作成して実行する
変換ツールを作成するには、ユーザーのアクティベーションを確認し、非同期の create() 関数を呼び出します。Translator create() 関数には、sourceLanguage 用と targetLanguage 用の 2 つのフィールドを含む options パラメータが必要です。
// Create a translator that translates from English to French.
const translator = await Translator.create({
sourceLanguage: 'en',
targetLanguage: 'fr',
});
変換ツールを取得したら、非同期の translate() を呼び出します。
await translator.translate('Where is the next bus stop, please?');
// "Où est le prochain arrêt de bus, s'il vous plaît ?"
また、長いテキストを処理する必要がある場合は、API のストリーミング バージョンを使用して translateStreaming() を呼び出すこともできます。
const stream = translator.translateStreaming(longText);
for await (const chunk of stream) {
console.log(chunk);
}
順次翻訳
翻訳は順番に処理されます。翻訳するテキストを大量に送信すると、以前の翻訳が完了するまで、後続の翻訳はブロックされます。
リクエストに最適なレスポンスを得るには、リクエストをまとめて、翻訳が進行中であることを示すスピナーなどの読み込みインターフェースを追加します。
サポートされている言語
Chrome の Translator API の実装では、次の言語がサポートされています。
| コード | 言語 |
|---|---|
ar |
アラビア語 |
bg |
ブルガリア語 |
bn |
ベンガル語 |
cs |
チェコ語 |
da |
デンマーク語 |
de |
ドイツ語 |
el |
ギリシャ語 |
en |
英語 |
es |
スペイン語 |
fi |
フィンランド語 |
fr |
フランス語 |
hi |
ヒンディー語 |
hr |
クロアチア語 |
hu |
ハンガリー語 |
id |
インドネシア語 |
it |
イタリア語 |
iw |
ヘブライ語 |
ja |
日本語 |
kn |
カンナダ語 |
ko |
韓国語 |
lt |
リトアニア語 |
mr |
マラーティー語 |
nl |
オランダ語 |
no |
ノルウェー語 |
pl |
ポーランド語 |
pt |
ポルトガル語 |
ro |
ルーマニア語 |
ru |
ロシア語 |
sk |
スロバキア語 |
sl |
スロベニア語 |
sv |
スウェーデン語 |
ta |
タミル語 |
te |
テルグ語 |
th |
タイ語 |
tr |
トルコ語 |
uk |
ウクライナ語 |
vi |
ベトナム語 |
zh |
中国語 |
zh-Hant |
中国語 (繁体) |
デモ
Translator API と Language Detector API を組み合わせて使用する例については、Translator API と Language Detector API のプレイグラウンドをご覧ください。
Permission Policy、iframe、Web Worker
デフォルトでは、Translator API はトップレベルのウィンドウと同一オリジンの iframe でのみ使用できます。権限に関するポリシーの allow="" 属性を使用すると、API へのアクセスをクロスオリジンの iframe に委任できます。
<!--
The host site https://main.example.com can grant a cross-origin iframe
at https://cross-origin.example.com/ access to the Translator API by
setting the `allow="translator"` attribute.
-->
<iframe src="https://cross-origin.example.com/" allow="translator"></iframe>
Translator API は、Permissions Policy のステータスを確認するために、各 Worker の責任あるドキュメントを確立する複雑さから、Web Worker では使用できません。
フィードバックを共有
皆様がどのようなものを構築されているのかを、ぜひお聞かせください。X、YouTube、LinkedIn で、ウェブサイトやウェブ アプリケーションを共有してください。