簡易翻訳機を作ってみる その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」を選択します。
次にアカウントを作成するために、メールアドレスと、登録するパスワードを入力します。
次に住所とクレカの情報を登録します。
無料版ですが、不正利用を防ぐためにクレカ登録が必要なようです。
Pro版に手動でアップグレードしない限り、課金されることはないと記載されています。
言語はほぼ英語表記ですが、登録の際Last nameが先に来ていたり、県名が漢字で表記されていたりと日本人向けの登録フォームになっています。
登録すると、今回使用するサービス(DeepL API Free)についての概要が表示され、利用規約、翻訳が完全でない場合がある旨理解したことをチェックを入れます。
右下のSign Up for Free
を選択することでサインアップできます。
正しく利用規約などにチェックできていればアカウントの準備ができます。
作成されたDeepLのアカウント設定からは登録情報が確認できます。
Plan
からは契約しているプランの詳細と期間、Account
から登録情報とAPIを使用するための認証キー、Usage
からは月50万字のうち、どの程度使用しているか確認することができます。
WebAPIを使った翻訳を試す
アカウントの作成ができたので、さっそくWebAPIを使った翻訳を試してみます。
DeepLのAPI仕様は下記に記載されています。
今回は手動で実施するため、curlコマンドで動作確認します。
APIの使用に必要なDeepLの認証キーは登録情報のAccount
から下記項目を確認することで取得できます。
また、ログインしていると、API Reference中のExample中で認証キーは自動で補完されて表示されます。
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万字を使い切ることはほぼないかな。
次回は、HoloLens2からDeepL APIを使用するための実装を行っていきます。