仮想と物理とエトセトラ

xRや物理とかごった煮の備忘録的技術ブログ

簡易翻訳機を作ってみる その2 DeepLのWebAPIを使ってみる

今回は前回の続きです。

xr-physics-work-etc.hatenablog.com

DeepLのwebAPIを使用するための登録と、お試しで使用してみます。

「DEEPL API FREE」に登録する

まずは、DeepLのwebAPIを使用するために登録します。
今回は、試験的に利用するだけなので、月50万字制限のDeepL API Freeを使用します。
下記URLから「Sign Up for free」を選択します。

www.deepl.com

f:id:napo909:20210919143633p:plain

次にアカウントを作成するために、メールアドレスと、登録するパスワードを入力します。
f:id:napo909:20210919144147p:plain

次に住所とクレカの情報を登録します。
無料版ですが、不正利用を防ぐためにクレカ登録が必要なようです。
Pro版に手動でアップグレードしない限り、課金されることはないと記載されています。
言語はほぼ英語表記ですが、登録の際Last nameが先に来ていたり、県名が漢字で表記されていたりと日本人向けの登録フォームになっています。
f:id:napo909:20210919144442p:plain

登録すると、今回使用するサービス(DeepL API Free)についての概要が表示され、利用規約、翻訳が完全でない場合がある旨理解したことをチェックを入れます。
右下のSign Up for Freeを選択することでサインアップできます。
f:id:napo909:20210919145154p:plain

正しく利用規約などにチェックできていればアカウントの準備ができます。
f:id:napo909:20210919145448p:plain

作成されたDeepLのアカウント設定からは登録情報が確認できます。
Planからは契約しているプランの詳細と期間、Accountから登録情報とAPIを使用するための認証キー、Usageからは月50万字のうち、どの程度使用しているか確認することができます。
f:id:napo909:20210919145940p:plain

WebAPIを使った翻訳を試す

アカウントの作成ができたので、さっそくWebAPIを使った翻訳を試してみます。
DeepLのAPI仕様は下記に記載されています。

www.deepl.com

今回は手動で実施するため、curlコマンドで動作確認します。

APIの使用に必要なDeepLの認証キーは登録情報のAccountから下記項目を確認することで取得できます。
また、ログインしていると、API Reference中のExample中で認証キーは自動で補完されて表示されます。
f:id:napo909:20210919151121p:plain

APIのExampleを参考に下記コマンドを試します。

curl https://api-free.deepl.com/v2/translate auth_key=[DeepLの認証キー] -d "text=こんにちは、世界!" "target_lang=EN"

WindowsPowerShellの場合、パラメタ-dが複数あることに文句を言われるので、コマンドプロンプトで動作確認しました。

  • 1回目
    下記エラーが発生しました。
curl: (35) schannel: next InitializeSecurityContext failed: Unknown error (0x80092012) - 失効の関数は証明書の失効を確認 できませんでした。

調査したところ、SSL 証明書の失効チェックが実行できないようです。そのため、curl-kオプションを追加しました。

  • 2回目
    応答は帰ってきましたが、言語が英語と判断されてしまい、うまく翻訳できていません。

入力:

curl -k https://api-free.deepl.com/v2/translate auth_key=[DeepLの認証キー] -d "text=こんにちは、世界!" "target_lang=EN"

応答:

{"translations":[{"detected_source_language":"EN","text":"ɂ́AE!"}]}

応答が文字化けていることから、日本語送信時、文字コードが一致していないようです。
そのため、送る内容をjson化して、utf-8でファイルに保存したものを送る方法に変更しました。

コマンドプロンプトの場合、UTF-8文字コードで送るにはファイルを読み込ませるしかないようです。 zenn.dev そのため、"text=こんにちは、世界!"の部分のみファイル読み込みで再実施しました。

  • 3回目

入力:

curl -k https://api-free.deepl.com/v2/translate auth_key=[DeepLの認証キー] -d @text.txt "target_lang=EN"

※text.txtの内容:text=こんにちは、世界!
応答:

{"translations":[{"detected_source_language":"JA","text":"Hello, world!"}]}

無事入力言語が日本語と認識され、英語に翻訳することができました。
Windowsコマンドプロンプトの場合、curlで日本語を翻訳するのは不都合が多いので、アプリを作って運用するのがよさそうです。

なお、今回の動作確認で29文字ほど消費しました。
開発する分には月50万字を使い切ることはほぼないかな。
f:id:napo909:20210919161709p:plain

次回は、HoloLens2からDeepL APIを使用するための実装を行っていきます。