0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

多言語単語学習音声を作成したい!#2 DeepLAPIを利用して単語翻訳をする

Last updated at Posted at 2025-09-01

この記事は多言語単語学習音声を作成したい!#1の続きです。

前回の復習

言語の単語帳(音声)を作りたい!
スマートウォッチへ入れるために音声で作りたい!
以上!

DeepL APIを利用して単語群を翻訳する

翻訳と言えばDeepLでしょう。
DeepLのAPIでは個人利用でも50万文字(月)が無料で可能です。

ちなみに文字数のカウント方法は原文の文字数だそうです。
しかもバイト数ではなく文字数カウントらしいので、
猫→1文字
cat→3文字
としてカウントされます。
漢字が多く、文字数を減らせる日本語を原文にすれば多くの翻訳が無料の範囲内で実行可能です。

次回に行う単語群のグラフ構造化のために今回は複数言語で翻訳します。
今回利用する言語一覧はこんな感じです。

lang_array = [
    "JA",  # 日本語
    "EN-US",  # 英語(アメリカ)
    "ES",  # スペイン語
    "FR",  # フランス語
    "UK",  # ウクライナ語
    "ZH-HANS",  # 中国語(簡体字)
]

今回は日本語から各言語に翻訳します。
(日本語は漢字の利用も多く、単語の平均使用文字数が少ないので)

プログラム作成

今回はPythonで作成します。
auth_keyの取得などはググってください。

単語群は二次元配列で下記のように記載されています。(イメージ)
一つ目の数字は単語群の参照元に記載されていた単語の難易度です。
一気に8000個も覚えるのは無理なのでこのランクも利用させて抱きます。

words_grade_lists=[
    [1,"愛"],
    [3,"青"],
    ・
    ・
    ・
    [0,"乱"]
]

auth_keyを直書きしていますが、.envファイルなどに記載すべきです。
またAPI利用でも時間内の実行可能回数に制限がある場合はtime.sleep()などを利用しましょう

translate.py
import deepl

lang_array = [
    "GRADE",  # 配列の関係で記載するのみで文字列は何でも良い
    "JA",  # 日本語
    "EN-US",  # 英語(アメリカ)
    "ES",  # スペイン語
    "FR",  # フランス語
    "UK",  # ウクライナ語
    "ZH-HANS",  # 中国語(簡体字)
]
deepl_auth_key = ""
deepl_client = deepl.DeepLClient(deepl_auth_key)

words_array=[]
for i in range(len(word_list)):
    add_array = []
    add_array.append(word_list[i][0])
    target_word = word_list[i][1]
    add_array.append(target_word)
    for k in range(2, len(lang_array)):
        params = {
                    "auth_key": deepl_auth_key,
                    "text": target_word,
                    "source_lang": "JA",
                    "target_lang": lang_array[k],
                }
                request = requests.post(
                    "https://api-free.deepl.com/v2/translate", data=params
                )
                result = request.json()
                add_word = result["translations"][0]["text"]
                add_array.append(add_word)
    words_array.append(add_array)

これで下記のような配列が作成されるはずです。

words_grade_lists=[
    [1,"愛","love",・・・,"愛"],
    ・
    ・
    ・
]

あとは実行時間と相談して一旦スプレッドシートなりメモ帳なりに記載します。

次回は作成した単語群をグループ化します

シリーズはこちらからご覧ください!

多言語単語学習音声を作成したい!#1
多言語単語学習音声を作成したい!#番外編 UUIDで単語を管理する
多言語単語学習音声を作成したい!#3 Union-Find構造で単語群をグループ化する
多言語単語学習音声を作成したい!#4 Text2Speechを用いて単語を音声化する

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?