AI-102 学習メモ (8) : 言語を翻訳する

# はじめに
この投稿は AI-102: Microsoft Azure AI エンジニア の学習をした内容のメモです。

投稿の一覧は以下のリンク先にあります。

https://qiita.com/atsmin77/items/5235dfe16ad1bed065ca

# 前の投稿

https://qiita.com/atsmin77/items/4998abe771d2d3d445f2

# Azure AI Translator

Azure AI Translator を利用すると、PDF ドキュメントなどを翻訳することができます。[多数の言語](https://learn.microsoft.com/ja-jp/azure/ai-services/translator/language-support#translation)に対応しています。

https://learn.microsoft.com/ja-jp/azure/ai-services/translator/translator-overview

Azure AI Translator サービスを実際に [Azure Language Studio](https://language.cognitive.azure.com/) から利用してみます。
※ 新しい [Azure AI Foundry](https://ai.azure.com/explore/language) からも同様に利用できます。

## ストレージアカウントの作成

翻訳を行うドキュメントをアップロードするストレージアカウントとコンテナを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/04c7af09-7ed3-5fde-4c3b-e07798b1f26e.png)

::: note warn
以下のように、ストレージアカウントの [リソースの共有 (CORS)] の設定から、Blob service への CORS を許可しておきます。そうしないと Azure Language Studio からストレージアカウントへのアクセスが行えず、Azure Language Studio でエラーが発生します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/cccd2e97-d8d5-78b0-b4d1-9d97b261fe96.png)
:::

## Azre AI Translator リソースの作成

Azure AI Translator を利用するためには、Azure AI Translator リソースを作成する必要があります。

Azure Language Studio へアクセスすると、以下のダイアログが表示されます。[Resource Type] として [Translator] を選択し、使用するAzure AI Translator リソースを選択します。まだリソースの作成を行っていない場合は、下のリンクから Azure Portal を開き、リソースの作成を行います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/59661d30-b771-8a3f-36e8-e97cdae12c70.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/b7cbbfb8-63a7-d307-5425-9f53bcf68c52.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/242d932a-e11d-4b5d-04fd-16347b5bd0df.png)

::: note warn
Translator リソースは Blob ストレージにアクセスするためマネージドIDをオン
にする必要があります。マネージドIDがオンの場合、リージョンに [グローバル] を指定するとデプロイに失敗します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/b9200078-1b39-c9ae-c441-2b158f085a4a.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/976a256e-e54a-a583-2130-b71c833d40ab.png)

また価格レベルで Free F0 を選択して作成すると Language Studio から利用することができません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/07b3175d-4754-810c-d84b-7a5d7936806a.png)
:::

## Azure RBAC ロールの割り当て

### Translator リソースへの割り当て

Translator リソースが 翻訳対象のドキュメントを配置した Blob ストレージへアクセスできるように、Translator リソースに RBAC ロールを割り当てます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/144e6672-1664-6804-268c-0993659b9554.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/390472de-a168-2f27-6a6d-feb1d15cfd14.png)

### ユーザーへの割り当て

また、Language Studio へサインインするユーザーに対しても同様にストレージへのアクセスを許可する RBAC ロールを割り当てます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/179cdc19-88f2-e8d6-f468-a61f47113756.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/ae270da9-eff0-2e7b-7331-319c2f6db9b1.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/b0ae4beb-7000-ed69-ae64-41fa97ace9f1.png)

## Language Studio から Azure AI Translator を利用

[Azure Language Studio](https://language.cognitive.azure.com/) から、作成した Translator リソースを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/1e71e8d7-5e85-44f0-2690-3bd55d267672.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/e042c4a8-a81b-bd86-460b-e19024c9fab0.png)

[Translate text] - [Documant translation] を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/4ecdf54e-aa2d-e721-058f-1fea2e588887.png)

翻訳するドキュメントを配置したストレージアカウントを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/fa9bec5a-239e-539c-ed51-87635188e84b.png)

翻訳する言語を指定します。最大で 10 の言語を指定して同時に翻訳することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/c7007995-b1a5-c55e-94e5-92cd6aa8a791.png)

次に、翻訳するドキュメントをアップロードします。今回は以下で公開されている日本語 PDF ファイルを利用させていただきました。
https://hiroba.jitco.or.jp/info/sample_ja/?doing_wp_cron=1736154388.6466650962829589843750

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/54f6cbfd-2667-f11f-23cc-210509e89139.png)

翻訳後のファイルの出力先を指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/f47a0384-bd72-3ce7-39cc-2ea4ec3c4a27.png)

[Start translation job] をクリックすると、ドキュメントの翻訳が開始されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/9c053190-226d-5025-8b44-9c3dd9e8b898.png)

処理が完了すると、[Status] が [Succeeded] になり、言語ごとに翻訳結果をダウンロードすることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/6d4142bd-599e-cf96-6ee6-603a6e434fa2.png)

::: note warn
初回は以下のようなエラーになりジョブが失敗しましたが、再度実行すると 2 回目は成功しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2680397/84a3da4c-eaed-17b8-66a3-cc7c79dfa33c.png)
:::

# その他の機能

### 不適切な表現のフィルター

翻訳対象のドキュメントに不適切な表現が含まれていた場合に、削除やアスタリスクへの置き換えを行うことができます。

https://learn.microsoft.com/ja-jp/azure/ai-services/translator/profanity-filtering

### Custom Translator

ユーザーが独自のモデルを作成し、精度の高い翻訳を行うことができます。

https://learn.microsoft.com/ja-jp/azure/ai-services/translator/custom-translator/overview

### 音声間翻訳

音声を複数の言語に同時に翻訳することができます。

https://learn.microsoft.com/ja-jp/azure/ai-services/speech-service/speech-translation

### Translator API

REST API を利用してテキストを翻訳する際に利用します。

https://learn.microsoft.com/en-us/azure/ai-services/translator/reference/v3-0-translate

#### Ocp-Apim-Subscription-key ヘッダ

REST API **Ocp-Apim-Subscription-Key** ヘッダーに Translator リソースのアクセスキーを指定します。

https://learn.microsoft.com/en-gb/azure/ai-services/Translator/quickstart-text-rest-api?tabs=csharp#prerequisites

# 次の投稿

https://qiita.com/atsmin77/items/5ccf7ba6f07174eb6a1c