Translator API は、Web サイトまたはブラウザー拡張機能の JavaScript コードから、Microsoft Edge に組み込まれているエキスパート モデルを使用して、異なる言語間でテキストを翻訳できる実験的な Web API です。
Translator API の概要については、次を参照してください。
詳細な内容:
- Translator API の可用性
- Translator API の利点
- Translator API の代替手段
- 免責事項
- モデルの可用性
- Translator API を有効にする
- 動作する例を見る
- Translator API を使用する
- Translator API が有効になっているかどうかを確認する
- モデルを使用できるかどうかを確認する (availability())
- 新しいセッションを作成する (create())
- モデルのダウンロードの進行状況を監視する (monitor:)
- Translator API を実行する (translate())
- テキストの翻訳を停止する (abortController.signal)
- セッションを破棄する (destroy())
- フィードバック送信
- 関連項目
Translator API の可用性
Translator API は、バージョン 143.0.3636.0 以降の Microsoft Edge Canary または Dev チャネルで開発者プレビューとして利用できます。 Microsoft Edge (ベータ、開発、またはカナリア) のプレビュー チャネルをダウンロードするには、[ Microsoft Edge Insider になる] に移動します。
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 を使用して組み込みの言語モデルをプロンプトする」を参照してください。
免責事項
他の機械翻訳モデルと同様に、Microsft Edge のエキスパート モデルは、不公平、信頼性の低い、または不快な翻訳を生成する可能性があります。 これらの機械翻訳モデルの制限事項の詳細については、「Azure AI Translator Transparency Note」の制限事項に関するページを参照してください。
モデルの可用性
Web サイトが組み込みの AI API を初めて呼び出す場合は、モデルの初期ダウンロードが必要になります。 モデルのダウンロードを監視するには、新しい Translator API セッションを作成するときに monitor オプションを使用します。以下 の「モデルのダウンロードの進行状況の監視 (monitor:)」を参照してください。
Translator API を有効にする
Microsoft Edge で Translator API を使用するには、次のように 2 つのフラグを設定します。
Microsoft Edge で、[
edge://version] に移動し、Microsoft Edge の Canary または Dev プレビュー チャネルなど、Microsoft Edge のバージョン 143.0.3636.0 以降を使用していることを確認します。Microsoft Edge (ベータ、開発、またはカナリア) のプレビュー チャネルをダウンロードするには、[ Microsoft Edge Insider になる] に移動します。
そのバージョンの Microsoft Edge で、新しいタブまたはウィンドウを開き、[
edge://flags] に移動します。上部の [ 検索フラグ ] テキスト ボックスで、 翻訳 API の入力を開始します。
次のフラグが一覧表示されます。
試験的翻訳 API - デバイス上の言語翻訳 API を有効にします。 Translator API と Language Detector API については、「Explainer」を参照してください。
このエントリには、
edge://flags/#edge-translation-apiに移動する#edge-translation-apiが表示されます。翻訳 API ストリーミングを文別に分割 する - 有効にすると、翻訳 API によってテキストが文単位で分割され、翻訳された各文が完了するとストリーミングされ、長いテキスト翻訳の応答性が向上します。
このエントリには、
edge://flags/#edge-translation-api-streaming-by-sentenceに移動する#edge-translation-api-streaming-by-sentenceが表示されます。
[ 試験的翻訳 API] で、[ 有効] を選択します。
[ 翻訳 API ストリーミングを文で分割] で、[ 有効] を選択します。
右下に[ 再起動 ]ボタンが表示されます。
[ 再起動 ] ボタンをクリックします。
動作する例を見る
Translator API の動作を確認し、これらの API を使用する既存のコードを確認するには:
Microsoft Edge Canary または Dev で、新しいウィンドウまたはタブで 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 によって既にダウンロードされている必要があります。
API を使用できるかどうかをチェックするには、次の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())
セッションを作成すると、言語モデルをメモリに読み込んで使用できるようにブラウザーに指示されます。 テキストを翻訳する前に、 create() メソッドを使用して新しいセッションを作成し、ソース言語とターゲット言語を指定します。
// Create a Translator session.
const session = await Translator.create({
sourceLanguage: "en",
targetLanguage: "es"
});
モデルのダウンロードは、次のように monitor オプションを使用して監視できます。
モデルのダウンロードの進行状況を監視する (monitor:)
monitor オプションを使用して、モデルのダウンロードの進行状況を追跡できます。 これは、モデルが使用されるデバイスにまだ完全にダウンロードされていない場合に役立ち、ユーザーが待機する必要があることを Web サイトに通知します。
// Create a Translator session with 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 を実行する (translate())
モデル セッションを作成したら、テキストを翻訳できます。 翻訳 API には、テキストを翻訳するための 2 つのメソッドが用意されています。
-
translatorSession.translate()は promise を返します。これは、テキストが翻訳された後に解決されます。 -
translatorSession.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 chunk of stream) {
console.log(chunk);
}
テキストの翻訳を停止する (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 を使用するシナリオの範囲、API またはエキスパート モデルに関する問題、および他のタスク固有の組み込み API が役立つかどうかについて、非常に関心があります。
シナリオと達成するタスクに関するフィードバックを送信するには、 Translator API フィードバックの問題にコメントを追加してください。
代わりに API を使用する際に問題が発生した場合は、リポジトリに報告してください。
また、W3C Web Machine Learning ワーキング グループ リポジトリの Translator API の設計に関するディスカッションに投稿することもできます。
関連項目
Microsoft Edge を取得する:
- Microsoft Edge Insider になる - Microsoft Edge のプレビュー チャネル (ベータ版、開発版、またはカナリア版) をダウンロードします。
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。