Перевод текста с помощью API переводчика

Используйте API переводчика для перевода текста на разных языках из кода JavaScript на веб-сайте или в расширении браузера. API переводчика основан на модели для конкретных задач, встроенной в Microsoft Edge.

Подробное содержимое:

Введение

Вводные сведения об API переводчика см. в следующих разделах:

Использование API детектора языка с API переводчика

Чтобы упростить перевод предоставленного пользователем текста на другой язык, используйте API переводчика в сочетании с API детектора языка.

Дополнительные сведения об API детектора языка см. в статье Определение языков с помощью API детектора языка.

Доступность API переводчика

API переводчика доступен в Microsoft Edge 148 или более поздней версии.

Преимущества API переводчика

API переводчика использует модель для конкретной задачи для машинного перевода, которая выполняется на том же устройстве, где используются входные данные и выходные данные модели (то есть локально). Этот подход имеет следующие преимущества по сравнению с облачными решениями:

  • Снижение стоимости: Использование облачной службы перевода не связано с затратами.

  • Независимость сети: Помимо начального скачивания модели, при использовании этого API для перевода текста не возникает задержки в сети, и API также можно использовать, когда устройство находится в автономном режиме.

  • Улучшенная конфиденциальность: Входные данные в модель никогда не покидают устройство и не собираются для обучения моделей ИИ.

Модели перевода для указанных языковых пар загружаются при первом использовании API в Microsoft Edge, а затем используются на всех веб-сайтах в браузере. Доступ к моделям осуществляется через простой веб-API, который не требует знаний о сторонних платформах и не требует опыта в области искусственного интеллекта (ИИ) или машинного обучения (ML).

Альтернативы API переводчика

Вы можете отправлять сетевые запросы в облачные службы перевода с более сложными возможностями, включая нейронный перевод; См. Azure документации по переводчику ИИ.

В качестве альтернативы API запросов на устройстве также может обслуживать более пользовательские многоязычные сценарии запросов, используя модель небольшого языка, встроенную в Microsoft Edge. См . статью Запрос встроенной языковой модели с помощью API запроса.

Заявление об отказе от ответственности

Как и другие модели машинного перевода, модели, относящиеся к задачам, в Microsoft Edge могут создавать переводы, которые являются несправедливыми, ненадежными или оскорбительными. Дополнительные сведения об ограничениях этих моделей машинного перевода см. в статье Ограничения в Azure Примечание по прозрачности переводчика ИИ.

Доступность модели

При первом вызове API переводчика требуется начальное скачивание модели перевода на устройстве. Вы можете отслеживать скачивание модели с помощью параметра монитора при создании нового сеанса API переводчика. См . раздел Мониторинг хода загрузки модели (монитор) ниже.

См. рабочий пример

Чтобы просмотреть API переводчика в действии и просмотреть существующий код, использующий API, выполните следующие действия:

  1. В Microsoft Edge 148 или более поздней версии перейдите на тестовую площадку API переводчика в новом окне или вкладке.

  2. В информационном баннере в верхней части проверка состояние: изначально отображается: API на устройстве и модель можно скачать. Модель для указанной языковой пары будет скачан при первом использовании API.

  3. В текстовом поле Текст для перевода введите текст для перевода и при необходимости измените значения Исходный язык и Целевой язык .

  4. Нажмите кнопку Перевести .

    Если модель для указанной языковой пары не была загружена ранее, начнется скачивание.

    Индикатор состояния, показывающий ход загрузки модели

    Если скачивание модели не запускается, перезапустите Microsoft Edge и повторите попытку.

    После скачивания модели модель начинает создавать перевод текста с исходного языка на целевой язык.

    Выходные данные создаются в разделе ответа страницы:

    Демонстрационная страница переводчика с параметрами и кнопкой

  5. Чтобы остановить создание ответа, в любое время нажмите кнопку Остановить .

См. также:

  • /built-in-ai/ — исходный код и файл сведений для демонстрации встроенных игровых площадок ИИ.

Использование API переводчика

В следующих разделах описывается использование API переводчика.

Проверьте, включен ли API переводчика.

Перед использованием API переводчика в коде веб-сайта проверка, что API доступен, проверив наличие Translator объекта:

if (!Translator) {
  // The Translator API is not available.
} else {
  // The Translator API is available.
}

Проверьте, можно ли использовать модель (availability())

К API переводчика предъявляют следующие требования:

  • Должен поддерживаться перевод с указанного исходного языка на указанный целевой язык.
  • Модель перевода для языковой пары и среды выполнения модели уже должна быть загружена Microsoft Edge.

Чтобы проверка, можно ли использовать 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 параметра . Это полезно, если модель еще не была полностью загружена на устройство, где она будет использоваться, чтобы сообщить пользователям вашего веб-сайта, что они должны ждать.

// 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;
      }
    });
  }
});

Запуск API переводчика

После создания сеанса модели можно перевести текст. API перевода предоставляет два метода перевода текста:

  • session.translate() возвращает обещание, которое разрешается после перевода текста.
  • session.translateStreaming() немедленно возвращает объект потока, который можно использовать для отображения преобразованного текста по токену при его создании.

Подробные сведения приведены ниже.

Дождитесь перевода текста (translate())

Переводит текст. Возвращает обещание, которое разрешается после перевода текста.

Чтобы дождаться полного перевода текста, прежде чем продолжить выполнение кода, используйте translate() асинхронный метод. Этот метод возвращает обещание, которое разрешается после завершения создания текста API:

// 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)

Чтобы остановить преобразование текста до разрешения или завершения обещания или потока, возвращенного указанными выше методами, используйте 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())

После перевода текста удалите сеанс, чтобы сообщить браузеру, что языковая модель больше не нужна, чтобы ее можно было выгрузить из памяти.

Вы можете уничтожить сеанс двумя разными способами:

  • С помощью destroy() метода .
  • С помощью AbortController.

Подробные сведения приведены ниже.

Уничтожение сеанса путем вызова destroy()

Чтобы уничтожить сеанс путем вызова destroy() с помощью сеанса, выполните приведенные далее действия.Translator

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();

Отправка отзывов

Мы заинтересованы в изучении:

  • Диапазон сценариев, для которых используется API переводчика.
  • Любые проблемы с API переводчика.
  • Любые проблемы с моделями перевода на устройстве.
  • Будут ли полезны другие встроенные API для конкретных задач.

Чтобы отправить отзыв о своих сценариях и задачах, которые вы хотите выполнить, добавьте комментарий к проблеме обратной связи API переводчика.

Если вы заметили какие-либо проблемы при использовании API, сообщите об этом в репозитории.

Вы также можете принять участие в обсуждении структуры API переводчика в репозитории рабочей группы веб-машинного обучения W3C.

См. также

Github:

документация по Azure:

Репозиторий демонстраций: