Amazon Translate による「翻訳」をブラウザから試す

## はじめに

AWS は様々な AI サービスを提供しています

そして、それらのサービスはブラウザから簡単に試せるようになっています

https://aws.amazon.com/jp/free/machine-learning/

| サービス    | 機能                     | お試し記事     | Elixir 実装例 |
|:------------|:-------------------------|:----------------| :-----|
| Transcribe  |音声の文字起こし（音声認識）| [参照](https://qiita.com/RyoWakabayashi/private/396e2047d377e258950f)  | [参照](https://qiita.com/RyoWakabayashi/items/1fc64587c9fa352935c6) |
| Polly       |文書の読み上げ（音声合成）  | [参照](https://qiita.com/RyoWakabayashi/private/2aad1952f63b4e76b652) | [参照](https://qiita.com/RyoWakabayashi/items/93adae047ccb4fee8d78) |
| Lex         |チャットボット             | [参照](https://qiita.com/RyoWakabayashi/private/6c7e7a248e192f3a8afc) | Coming Soon... |
| Translate   |翻訳                      | [参照](https://qiita.com/RyoWakabayashi/private/688418e52cde44871c1e) | [参照](https://qiita.com/RyoWakabayashi/items/5f262ba0d1e11219edec) |
| Rekognition |画像認識<br/>顔認識        | [参照](https://qiita.com/RyoWakabayashi/private/d8c7f57a71e83d9140d5)<br/>[参照](https://qiita.com/RyoWakabayashi/private/10f93c3417041b005c31)  | [参照](https://qiita.com/RyoWakabayashi/items/2219e84642ff2d05481c) |
| Textract    |画像からの表データ読込     | [参照](https://qiita.com/RyoWakabayashi/private/b7bd7079d20326d9e4be) | [参照](https://qiita.com/RyoWakabayashi/items/7c26d0dda7d566adc694) |
| Bedrock     |生成AIによるチャット、画像生成| [参照](https://qiita.com/RyoWakabayashi/private/5680a4bac246a1a0c532) | [参照](https://qiita.com/RyoWakabayashi/private/bb85dd2286420205e2da) |

本記事では AWS の翻訳サービス Translate をブラウザから試してみます

## Amazon Translate とは

Amazon Translate　は AI モデルによって文章を多言語へ翻訳します

https://aws.amazon.com/jp/translate/

### Amazon Translate の使い途（ユースケース）

Amazon Translate は 2023年11月現在、 75 の言語・国に対応しており、日本語も利用可能です

https://docs.aws.amazon.com/ja_jp/translate/latest/dg/what-is-languages.html

ほとんどの言語（6つの言語以外）で、不適切な単語のマスキングも可能です

https://docs.aws.amazon.com/ja_jp/translate/latest/dg/customizing-translations-profanity.html

日本語含む　11　の言語では、翻訳先のフォーマリティ = 「くだけた言葉遣い」と「丁寧な言葉遣い」 = 敬語の使用有無の設定ができます

日本語を含まない 5 つの言語では文章を簡潔にして翻訳することも可能です

Amazon Translate は以下のような用途に使用可能です

- メールや書類などの翻訳
- Transcribe と組み合わせて英語の自動通訳

### Amazon Translate の料金

https://aws.amazon.com/jp/translate/pricing/

AWS の料金は基本的に従量課金制です

Translate は基本的に $15 / 100 万文字（¥150/$ の場合、 ¥2,250 / 100 万文字）で利用できます

メールが 1 通 500 文字程度の場合、 2,000 通翻訳して ¥2,250 になります

ただし、 AWS のサービスの多くには無料利用枠が存在します

> Amazon Translate 無料利用枠は、一部の翻訳サービスに対して提供されており、最初の翻訳リクエストの日付から 12 か月間ご利用いただけます。無料利用枠での使用量は、AWS リージョン全体で毎月計算され、自動的に請求額に適用されます。未使用分は持ち越されません。

無料利用枠のページを確認すると、 Amazon Translate の無料利用枠は 200 万文字 / 月です

https://aws.amazon.com/jp/free/

無料利用期間中の場合、 本記事で実行する程度の処理であれば無料範囲内に収まります

## アカウント作成

Amazon Translate を使うためには、 AWS のアカウント作成が必要です

以下の公式手順に従って、アカウントを作成してください

:::note warn
クレジットカードと電話番号が必要になります

予めご用意ください
:::

https://aws.amazon.com/jp/register-flow/

## ブラウザからの翻訳実行

### Amazon Translate への移動

AWS のマネジメントコンソールにログインすると、以下のような画面が表示されます

https://ap-northeast-1.console.aws.amazon.com/console/home?region=ap-northeast-1#

![スクリーンショット 2023-11-26 9.59.09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/ccb18a17-4e2e-e5e6-098f-e779c8f69eef.png)

この画面から最近使ったサービスなどにアクセスできるようになっています

上メニューにある検索ボックスに `transl` と入力してみましょう

![スクリーンショット 2023-12-02 9.04.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/6d1f08f9-0f15-f5a5-153d-d32ca2841983.png)

サービスの候補として Amazon Translate が表示されます

Amazon Lex をクリックして、サービスページに移動しましょう

以下のような画面が表示されます

https://ap-northeast-1.console.aws.amazon.com/translate/home?region=ap-northeast-1#translation

![スクリーンショット 2023-12-02 9.06.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/cca456b5-cdbc-e17e-8252-dfe589150d41.png)

### リアルタイム翻訳

リアルタイムでの翻訳を試してみましょう

「ソース言語」（翻訳元）に「日本語 (ja)」、「ターゲット言語」（翻訳先）に「英語 (en)」を選択します

その状態で左側の「テキストの入力」欄に日本語を書き込むと、リアルタイムに右側の「翻訳済みテキスト」欄に英語が表示されていきます

![translate.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/782747fc-f804-650e-3e87-b773e3895dfd.gif)

### 形式（フォーマリティ = 敬語使用）の変更

ソース言語とターゲット言語の間にある左右矢印のアイコンをクリックするとお互いが入れ替わり、英語から日本語に翻訳するようになります

英語側に「Put your hands up!」と入れると、日本語側に「手を上げて！」と表示されます

翻訳先が日本語の場合、翻訳結果を敬語に変更できます

「追加設定」をクリックすると、下に 4 つの項目が表示されます

- カスタム言語
- 簡潔さ
- 形式
- 不敬表現のマスキング

![スクリーンショット 2023-12-02 9.24.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/f8ffaf29-5785-f632-4b03-bd36966ac362.png)

「形式」の左にあるトグルボタンをクリックし、表示される選択肢から「Formal」を選択すると、日本語が「手を挙げてください！」に変更されます

![スクリーンショット 2023-12-02 9.30.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/60a1d4e3-54a5-7841-caf1-5f209852e378.png)

### 不敬表現のマスキング

そのまま「英語」の方に「Goddamm it」と入力すると、「日本語」は「くそー」になります

「ちくしょう！」とか「くそっ！」とかいう意味の言葉なので、正しく翻訳できてはいます

![スクリーンショット 2023-12-02 9.33.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/b408e5f3-6a8d-a2b4-b4dc-180b4c14fd40.png)

「不敬表現のマスキング」の左にあるトグルボタンをクリックすると、日本語が「?$#@$ー」になります

「くそ」が不敬だとして「?$#@$」にマスキングされたわけですね

![スクリーンショット 2023-12-02 9.35.05.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1485835/03cb3393-4e4e-f9ca-3a5e-732707e3a2cd.png)

## Elixir からの使用例

プログラミング言語の　Elixir から Translate を使用する例です

https://qiita.com/RyoWakabayashi/items/5f262ba0d1e11219edec

ざっくり、以下のような書き方で翻訳できます

```elixir
text # 入力テキスト
|> Translate.translate_text(src_lang, dst_lang) # 元言語、先言語を指定して翻訳の設定
|> ExAws.request!(auth_config) # AWS に要求
|> then(& &1["TranslatedText"]) # AWS の返答から翻訳結果を取得
```

## まとめ

Amazon Translate を使うことでリアルタイム翻訳が実行できました

単なる翻訳だけでなく、敬語の強制や不適切な単語のマスキングも可能なので、よく分からないまま不適切な表現を使ってしまうリスクが軽減できます