Поделиться через


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

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

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

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

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

API переводчика доступен в качестве предварительной версии для разработчиков на каналах Microsoft Edge Canary или Dev, начиная с версии 143.0.3636.0. Чтобы скачать канал предварительной версии Microsoft Edge (бета-версия, разработка или Canary), перейдите в раздел Стать участником программы предварительной оценки Microsoft Edge.

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

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

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

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

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

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

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

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

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

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

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

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

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

Включение API переводчика

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

  1. В Microsoft Edge перейдите на страницу edge://versionи убедитесь, что вы используете Microsoft Edge версии 143.0.3636.0 или более поздней, например канал Предварительной версии Canary или Dev microsoft Edge.

    Чтобы скачать канал предварительной версии Microsoft Edge (бета-версия, разработка или Canary), перейдите в раздел Стать участником программы предварительной оценки Microsoft Edge.

  2. В этой версии Microsoft Edge откройте новую вкладку или окно и перейдите по адресу edge://flags.

  3. В текстовом поле Поиск флагов в верхней части окна начните вводить API перевода:

    Страница

    Перечислены следующие флаги:

    • API экспериментального перевода . Включает API перевода языка на устройстве. См . описание API-интерфейсов переводчика и детектора языка.

      В этой записи отображается #edge-translation-apiзначение , которое передается в edge://flags/#edge-translation-api.

    • Потоковая передача API перевода, разделенная по предложению . Если этот параметр включен, API перевода будет разделять текст по предложению и передавать каждое переведенное предложение по мере его завершения, обеспечивая лучшую скорость реагирования при переводе длинного текста.

      В этой записи отображается #edge-translation-api-streaming-by-sentenceзначение , которое передается в edge://flags/#edge-translation-api-streaming-by-sentence.

  4. В разделе Экспериментальный API перевода выберите Включено.

  5. В разделе Потоковая передача API перевода, разделенная по предложению, выберите Включено.

    В правом нижнем углу отображается кнопка Перезапустить .

  6. Нажмите кнопку Перезапустить .

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

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

  1. Включите API переводчика, как описано выше.

  2. В Microsoft Edge Canary или Dev перейдите на тестовую площадку API переводчика в новом окне или вкладке.

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

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

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

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

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

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

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

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

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

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

См. также:

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

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

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

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

  • translatorSession.translate() возвращает обещание, которое разрешается после перевода текста.
  • translatorSession.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 chunk of stream) {
  console.log(chunk);
}

Прекращение перевода текста (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.

См. также

Получение Microsoft Edge:

GitHub:

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

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