Translator API を使用して、Web サイトまたはブラウザー拡張機能の JavaScript コードから異なる言語間でテキストを翻訳します。 Translator API は、Microsoft Edge に組み込まれているタスク固有のモデルを利用します。
詳細な内容:
- はじめに
- Translator API で Language Detector API を使用する
- Translator API の可用性
- Translator API の利点
- Translator API の代替手段
- 免責事項
- モデルの可用性
- 動作する例を見る
- Translator API を使用する
- Translator API が有効になっているかどうかを確認する
- モデルを使用できるかどうかを確認する (availability())
- 新しいセッションを作成する (create())
- モデルのダウンロードの進行状況を監視する (モニター)
- Translator API を実行する
- テキストの翻訳を停止する (abortController.signal)
- セッションを破棄する (destroy())
- フィードバック送信
- 関連項目
概要
Translator API の概要については、次を参照してください。
Translator API で Language Detector API を使用する
ユーザーが指定したテキストを別の言語に翻訳しやすくするには、Language Detector API と共に Translator API を使用します。
Language Detector API の詳細については、「Language Detector API を使用して言語を検出する」を参照してください。
Translator API の可用性
Translator API は、Microsoft Edge 148 以降で使用できます。
Translator API の利点
Translator API では、タスク固有のモデルを使用して、モデルの入力と出力が使用されているのと同じデバイス (つまり、ローカル) で実行される機械翻訳を行います。 このアプローチには、クラウドベースのソリューションと比較して次の利点があります。
コストの削減: クラウド翻訳サービスの使用に関連するコストはありません。
ネットワークの独立性: 最初のモデルのダウンロード以外に、この API を使用してテキストを翻訳する場合のネットワーク待機時間はなく、デバイスがオフラインのときに API を使用することもできます。
プライバシーの強化: モデルへのデータ入力はデバイスから離れることはなく、AI モデルをトレーニングするために収集されることはありません。
指定された言語ペアの翻訳モデルは、API が Microsoft Edge で初めて使用されるときにダウンロードされ、その後ブラウザー内のすべての Web サイトで共有されます。 モデルには、サードパーティのフレームワークに関する知識を必要とせず、人工知能 (AI) または Machine Learning (ML) の専門知識を必要としない単純な Web API を介してアクセスします。
Translator API の代替手段
ニューラル翻訳など、より高度な機能を備えたクラウドベースの翻訳サービスにネットワーク要求を送信できます。AI Translator のドキュメントAzure参照してください。
デバイス上の代替手段として、Prompt API は、Microsoft Edge に組み込まれている小さな言語モデルを使用して、よりカスタムの多言語プロンプト シナリオにも対応できます。 「Prompt API を使用して組み込みの言語モデルをプロンプトする」を参照してください。
免責事項
他の機械翻訳モデルと同様に、Microsoft Edge のタスク固有のモデルは、不公平、信頼性の低い、または不快な翻訳を生成する可能性があります。 これらの機械翻訳モデルの制限事項の詳細については、「Azure AI 翻訳 Transparency Note」の制限事項に関するページを参照してください。
モデルの可用性
Web サイトが Translator API を初めて呼び出す場合は、デバイス上の翻訳モデルを最初にダウンロードする必要があります。 モデルのダウンロードを監視するには、新しい Translator API セッションを作成するときに monitor オプションを使用します。以下 の「モデルのダウンロードの進行状況を監視する (モニター)」を参照してください。
動作する例を見る
Translator API の動作を確認し、API を使用する既存のコードを確認するには:
Microsoft Edge 148 以降で、新しいウィンドウまたはタブで Translator API プレイグラウンド に移動します。
上部の情報バナーで、状態をチェックします。最初は"デバイス上の API とモデルのダウンロード可能" と読み取られます。指定した言語ペアのモデルは、API が初めて使用されるときにダウンロードされます。
[ 翻訳するテキスト ] テキスト ボックスに、翻訳するテキストを入力し、必要に応じて [ ソース言語 ] と [ ターゲット言語 ] の値を変更します。
[ 翻訳 ] ボタンをクリックします。
指定した言語ペアのモデルが以前にダウンロードされていない場合は、ダウンロードが開始されます。
モデルのダウンロードが開始されない場合は、Microsoft Edge を再起動して、もう一度やり直してください。
モデルがダウンロードされると、モデルはソース言語からターゲット言語へのテキストの翻訳の生成を開始します。
出力は、ページの応答セクションで生成されます。
応答の生成を停止するには、いつでも [停止] ボタンをクリックします。
関連項目:
- /built-in-ai/ - 組み込 みの AI プレイグラウンドのデモのソース コードと Readme。
Translator API を使用する
次のセクションでは、Translator API の使用について説明します。
Translator API が有効になっているかどうかを確認する
Web サイトのコードで Translator API を使用する前に、Translator オブジェクトの存在をテストすることで、API が使用可能であることをチェックします。
if (!Translator) {
// The Translator API is not available.
} else {
// The Translator API is available.
}
モデルを使用できるかどうかを確認する (availability())
Translator API には、次の要件があります。
- 指定したソース言語から指定されたターゲット言語への変換がサポートされている必要があります。
- 言語ペアとモデル ランタイムの翻訳モデルは、Microsoft Edge によって既にダウンロードされている必要があります。
Translator API を使用できるかどうかをチェックするには、次のTranslator.availability()を呼び出します。
const availability = await Translator.availability({
sourceLanguage: "en",
targetLanguage: "es"
});
if (availability == "unavailable") {
// The model is not available.
}
if (availability == "downloadable" || availability == "downloading") {
// The model can be used, but it needs to be downloaded first.
}
if (availability == "available") {
// The model is available and can be used.
}
sourceLanguageとtargetLanguageの場合は、「言語を識別するためのタグ」の言語コードを文字列として使用します。
新しいセッションを作成する (create())
セッションを作成すると、言語モデルをメモリに読み込んで使用できるようにブラウザーに指示されます。 テキストを翻訳する前に、 Translator.create() メソッドを使用して新しいセッションを作成し、ソース言語とターゲット言語を指定します。
// Create a Translator session.
const session = await Translator.create({
sourceLanguage: "en",
targetLanguage: "es"
});
モデルのダウンロードは、次のように monitor オプションを使用して監視できます。
モデルのダウンロードの進行状況を監視する (monitor)
monitor オプションを使用して、モデルのダウンロードの進行状況を追跡できます。 これは、モデルが使用されるデバイスにまだ完全にダウンロードされていない場合に役立ち、ユーザーが待機する必要があることを Web サイトに通知します。
// Use the monitor option to monitor the model download.
const session = await Translator.create({
sourceLanguage: "en",
targetLanguage: "es",
monitor: m => {
// Use the monitor object argument to add an listener for the
// downloadprogress event.
m.addEventListener("downloadprogress", event => {
// The event is an object with the loaded and total properties.
if (event.loaded == event.total) {
// The model is fully downloaded.
} else {
// The model is still downloading.
const percentageComplete = (event.loaded / event.total) * 100;
}
});
}
});
Translator API を実行する
モデル セッションを作成したら、テキストを翻訳できます。 翻訳 API には、テキストを翻訳するための 2 つのメソッドが用意されています。
-
session.translate()は promise を返します。これは、テキストが翻訳された後に解決されます。 -
session.translateStreaming()すぐにストリーム オブジェクトが返されます。これを使用すると、変換されたテキストをトークンごとのトークンで表示できます。これは、生成中です。
詳細は以下のとおりです。
テキストが翻訳されるまで待つ (translate())
テキストを翻訳します。 文字列が翻訳された後に解決される promise を返します。
コードの実行を続行する前にテキストが完全に翻訳されるのを待つには、 translate() 非同期メソッドを使用します。 このメソッドは、API がテキストの生成を完了した後に解決される promise を返します。
// Create a Translator session.
const translatorSession = await Translator.create({
sourceLanguage: "en",
targetLanguage: "es"
});
// Translate the text and wait for the translation to be done.
const translatedText = await translatorSession.translate(sourceText);
// Use the translation.
console.log(translatedText);
トークンを生成時に表示する (translateStreaming())
テキストを翻訳します。 ストリーム オブジェクトをすぐに返します。これを使用すると、変換されたテキスト (トークンごとのトークン) を生成中に表示できます。
生成中のトークンを表示するには、このストリーミング メソッドを使用します。
translateStreaming() メソッドはストリーム オブジェクトを直ちに返します。 返されたストリーム オブジェクトを使用して、生成中の応答トークンを表示します。
// Create a Translator session.
const translatorSession = await Translator.create({
sourceLanguage: "en",
targetLanguage: "es"
});
// Ask the model to translate text.
const stream = translatorSession.translateStreaming(sourceText);
// Use the stream object to display tokens that are generated by the model,
// as they are being generated.
for await (const token of stream) {
console.log(token);
}
テキストの翻訳を停止する (abortController.signal)
上記のメソッドによって返された promise またはストリームが解決または終了する前にテキストの翻訳を停止するには、 AbortController シグナルを使用します。
// Create a Translator session.
const translatorSession = await Translator.create({
sourceLanguage: "en",
targetLanguage: "es"
});
// Create an AbortController object.
const abortController = new AbortController();
// Use the model session to translate some text and pass the AbortController
// object by using the signal option.
const stream = translatorSession.translateStreaming(sourceText, {
signal: abortController.signal
});
// Later, perhaps when the user presses a "Stop" button, call the abort()
// method on the AbortController object to stop translating text.
abortController.abort();
セッションを破棄する (destroy())
テキストを翻訳した後、セッションを破棄して、モデルをメモリからアンロードできるように、言語モデルが不要であることをブラウザーに通知します。
セッションは、次の 2 つの方法で破棄できます:
-
destroy()メソッドを使用すると。 -
AbortControllerを使用すると。
詳細は以下のとおりです。
を呼び出してセッションを破棄する destroy()
Translator セッションでdestroy()を呼び出してセッションを破棄するには:
const session = await Translator.create({
sourceLanguage: "en",
targetLanguage: "es"
});
// Later, destroy the session by using the destroy method.
session.destroy();
を使用してセッションを破棄する AbortController
AbortController オブジェクトを作成してセッションを破棄するには、Translator セッションを作成し、abort()を呼び出します。
// Create an AbortController object.
const controller = new AbortController();
// Create a Translator session and pass the
// AbortController object by using the signal option.
const session = await Translator.create({
sourceLanguage: "en",
targetLanguage: "es",
signal: controller.signal
});
// Later, perhaps when the user interacts with the UI, destroy the session by
// calling the abort() function of the AbortController object.
controller.abort();
フィードバックの送信
次のことについて学習することに興味があります。
- Translator API を使用するシナリオの範囲。
- Translator API に関する問題。
- デバイス上の翻訳モデルに関する問題。
- 他のタスク固有の組み込み API が役に立つかどうか。
シナリオと達成するタスクに関するフィードバックを送信するには、 Translator API フィードバックの問題にコメントを追加してください。
代わりに API を使用する際に問題が発生した場合は、リポジトリに報告してください。
また、W3C Web Machine Learning ワーキング グループ リポジトリの Translator API の設計に関するディスカッションに投稿することもできます。
関連項目
Github:
- webmachinelearning/translation-api リポジトリ。
-
Translator および Language Detector API
-
言語を識別するためのタグ -
sourceLanguageとtargetLanguage用。
-
言語を識別するためのタグ -
Azureドキュメント:
- AI Translator ドキュメントをAzureする
- AZURE AI Translator の透明性に関するメモの制限事項。
Demos リポジトリ:
- Translator API プレイグラウンド
- /built-in-ai/ - 組み込 みの AI プレイグラウンドのデモのソース コードと Readme。