DeepL API vs OpenAI API vs Google Cloud Translation API 翻訳料金比較編
投稿日: 2024/06/13
更新日: 2024/07/02
地方税の請求書が届いてもやしを買う頻度が増えました。yosiです。
税金や保険料が高すぎて物価高や個人開発しているサービスの運用費用なんて正直どうでもよくなってきた今日この頃ですが、個人開発で使うためにDeepL API と OpenAI APIとGoogle Cloud Translation APIの比較をしたのでメモしておこうと思います。
翻訳を行えるサービスごとに課金の単位が入力文字数だったり、入出力された文字列のトークン数であったり比較するのが意外と面倒です。また、価格表示に使われてる通貨もサービスごとにばらついているので、なおさら比較を面倒にしています。
今回はこの辺をわかりやすくまとめることが目的です。
はじめる前から何となくどちらが安いか感覚はあるのですが、どのくらい違うのかはパッとわからないので調査しようと思いました。
翻訳料金比較編と書きましたが、DeepL APIやGoogle Cloud Translation APIは翻訳しかできないので他の編はありません。
前提
- この記事では翻訳についてのみ考えます。
- それぞれの翻訳精度、翻訳にかかる時間については触れません。
- 料金計算の基準がそれぞれのサービスで全く異なるので、翻訳する文章内容によって料金は大きく変動します。また、ある程度調べた上で書いてますが間違ってることもあり得ますので、参考にする場合はご自身でも確認をお願いします。
- 単純な文章の翻訳について考えます。HTMLやXML形式などの翻訳は考慮しません。
調査方法
DeepL APIとGoogle Cloud Translation APIは入力文字数によって料金が変動し、OpenAI APIは入出力トークン数と翻訳に必要なプロンプトのトークン数の合計で料金が変動します。また、入力する言語によっても同じ意味の文章でも料金が変動します。そこで同じ意味の文章を日本語と英語のそれぞれで作成し、翻訳対象の文字量ごとにfew
, normal
, many
の3段階に分けて計測する(つまり計測する文章は6パターン)。同じ意味の文章を翻訳する際に必要な料金を計算します。
DeepL APIとGoogle Cloud Translation APIについては入力文字数から費用を計算します。
OpenAI APIについてはPlaygroundを使用してトークン数を計測しました。その際、system
に与えるプロンプトはPlease translate into English.
, Please translate into Japanese.
というシンプルな命令としました。合計のトークン数しかわからないためtokenizerを使って入出力トークン数を推定しています(2024/06時点でgpt-4oに対応してないのでgpt-3.5&gpt-4と同じものを使って計算。多分あまり変わらないはず)。
推定入出力のトークン数の計算も完全には合わなかったですし、イメージをつかむ程度の参考にしてください。
ちなみに1ドル155.89円(2024/06/13時点)で計算しています。
翻訳対象の文章はChatGPTくんに書かせた物語を使います。英語版はDeepLで翻訳しました。
以下に示します。暇だったら読んでも構いませんが、飛ばしてもらって問題ないです。
27文字日本語
異世界プログラム:RubyとTypeScriptの冒険
56文字英語
Otherworldly Programs: Adventures in Ruby and TypeScript
244文字日本語
異世界プログラム:RubyとTypeScriptの冒険 プロローグ ある日、プログラマーのYutaは自分のデスクでコードを書いていた。そのとき、不思議な光に包まれ、意識を失った。目を覚ますと、Yutaは見知らぬ場所に立っていた。目の前には「JavaScriptの世界へようこそ!」と書かれた看板があり、周囲には不思議なエネルギーが漂っていた。Yutaは気がつくと、手元に赤い宝石のようなものを持っていた。その宝石は、かつて彼が愛用していたプログラミング言語「Ruby」の力を宿していた。
482文字英語
Otherworldly Programs: Adventures in Ruby and TypeScript Prologue One day, programmer Yuta was writing code at his desk. At that moment, he was enveloped by a strange light and lost consciousness. When he woke up, he found himself standing in a strange place. In front of him was a sign that read "Welcome to the world of JavaScript! Yuta found himself holding what looked like a red jewel in his hand. The gem contained the power of his former favorite programming language, Ruby.
1641文字日本語
異世界プログラム:RubyとTypeScriptの冒険 プロローグ ある日、プログラマーのYutaは自分のデスクでコードを書いていた。そのとき、不思議な光に包まれ、意識を失った。目を覚ますと、Yutaは見知らぬ場所に立っていた。目の前には「JavaScriptの世界へようこそ!」と書かれた看板があり、周囲には不思議なエネルギーが漂っていた。Yutaは気がつくと、手元に赤い宝石のようなものを持っていた。その宝石は、かつて彼が愛用していたプログラミング言語「Ruby」の力を宿していた。 出会い Yutaは宝石を握りしめ、「Rubyよ、力を貸してくれ!」と叫んだ。すると、目の前に赤髪の少女が現れた。彼女はまるで宝石のように輝く赤い瞳を持ち、優雅な身のこなしで微笑んだ。 「こんにちは、私はRuby。あなたが私を呼び出したのね。よろしくね、マスター!」 そのとき、背後からもう一人の人物が現れた。彼は青い髪を持ち、冷静沈着な表情でYutaを見つめた。 「初めまして。僕はTypeScript。君がこの世界に迷い込んだのは偶然ではないようだね。」 冒険の始まり こうして、RubyとTypeScript、そしてYutaの冒険が始まった。彼らはJavaScriptの世界を旅しながら、数々の困難に立ち向かうことになる。 Rubyは、その優れた直感力と柔軟な思考で仲間を助けた。彼女の特技は、問題を簡潔に解決する力だった。例えば、複雑なアルゴリズムを瞬時にシンプルなコードに変える能力だ。彼女はどんな状況でも素早く対応できる柔軟性を持っていた。 一方、TypeScriptはその厳密な型システムと論理的な思考で、チームの安全を守った。彼の特技は、バグを未然に防ぐ能力だ。どんなに複雑なコードでも、TypeScriptの手にかかれば型エラーを事前に発見し、修正することができた。 Yutaは、彼ら二人に新しいコードを提供する役割を果たした。彼のプログラムの知識と創造力で、RubyとTypeScriptはより強力な力を発揮することができた。Yutaはまた、戦略を立てたり、必要なときに迅速な判断を下すことで、冒険を成功に導いた。 初めての試練 ある日、彼らは巨大な迷宮に足を踏み入れた。そこには「バグの魔王」が待ち受けていた。魔王は強力なエラーを操り、プログラムを破壊する力を持っていた。 「今だ、Yuta!」Yutaが叫び、キーボードを叩いた。 その一瞬、新しいコードがRubyの手に届き、彼女は素早く動き、魔王の弱点を突くシンプルなコードを編み出した。 しかし、それだけでは魔王を完全に倒すことはできなかった。そのとき、Yutaは新たなアイデアを思いついた。 「任せて!」Yutaが叫び、キーボードを叩くと、新しいコードがRubyに届いた。 「了解!」Rubyが素早く動き、新しいコードを実行し、強力な一撃を放った。その力で、魔王はついに崩れ落ちた。 絆 試練を乗り越えた三人の絆は深まった。Rubyの柔軟性とTypeScriptの厳密性、そしてYutaの創造力が見事に融合し、三人は互いに欠けた部分を補完し合う最高のチームとなった。 「ありがとう、二人とも。君たちのおかげで勝てたよ。」Yutaは微笑んだ。 「ううん、Yuta。あなたがいてくれたからこそ、私たちも全力を出せたんだよ。」Rubyも微笑み返した。 「そうだね、Yuta。君のコードは本当に素晴らしかった。」TypeScriptも同意した。 エピローグ こうして、Yuta、Ruby、TypeScriptの冒険は続く。彼らはJavaScriptの世界で数々の試練を乗り越え、仲間と共に成長していく。未来にはまだまだ多くの困難が待ち受けているが、三人が力を合わせれば、どんな試練も乗り越えられるだろう。 そして、いつの日か彼らが元の世界に戻れる日が来るのを信じて。冒険は終わらない。
3596文字英語
Otherworldly Programs: Adventures in Ruby and TypeScript Prologue One day, programmer Yuta was writing code at his desk. At that moment, he was enveloped by a strange light and lost consciousness. When he woke up, he found himself standing in a strange place. In front of him was a sign that read "Welcome to the world of JavaScript! Yuta found himself holding what looked like a red jewel in his hand. The gem contained the power of his former favorite programming language, Ruby. Encounter Yuta clutched her jewelry, "Ruby, give me strength! he shouted. Then a red-haired girl appeared before him. She had red eyes that shone like jewels, and she smiled with a graceful gesture. Hello, I'm Ruby, you called me. Nice to meet you, Master!" At that moment, another figure appeared behind her. He had blue hair and looked at Yuta with a calm and collected expression. Nice to meet you, I'm TypeScript. I am TypeScript, and it is no coincidence that you have wandered into this world. The Beginning of an Adventure Thus began the adventure of Ruby, TypeScript, and Yuta. They faced many challenges as they traveled through the world of JavaScript. Ruby helped her friends with her great intuition and flexible thinking. One of her specialties was her ability to solve problems succinctly. For example, her ability to turn complex algorithms into simple code in an instant. She had the flexibility to adapt quickly to any situation. TypeScript, on the other hand, kept the team safe with his strict type system and logical thinking. His special skill is his ability to prevent bugs before they happen. No matter how complex the code was, TypeScript was able to find and fix type errors before they occurred. Yuta was responsible for providing them both with new code. With his programming knowledge and creativity, Ruby and TypeScript were able to become more powerful, and Yuta also helped make the adventure a success by strategizing and making quick decisions when needed. Their first ordeal One day, they stepped into a huge labyrinth. There, the "Demon King of Bugs" was waiting for them. He had the power to manipulate powerful errors and destroy programs. Yuta shouted and tapped on his keyboard, "Now, Yuta! In that instant, a new code arrived in Ruby's hands, and she moved quickly, weaving a simple code that exploited the Demon King's weakness. However, it was not enough to completely defeat the Demon King. It was then that Yuta came up with a new idea. Leave it to me!" Yuta shouted, tapped the keyboard, and the new code arrived in Ruby. Got it!" Ruby moved quickly, executed the new code, and delivered a powerful blow. With the force of the blow, the Demon King finally collapsed. The Bond The three of them bonded over the ordeal: Ruby's flexibility, TypeScript's rigor, and Yuta's creativity merged beautifully, making the three of them a great team that complemented each other's deficiencies. Thanks, both of you," said Yuta. We couldn't have won without you guys." Yuta smiled. No, Yuta, it's because of you that we were able to give it our all," Ruby smiled back. Ruby smiled back. Your code was really great. TypeScript agreed. Epilogue And so the adventures of Yuta, Ruby, and TypeScript continued. They overcome many challenges in the JavaScript world and grow together with their friends. There are still many challenges awaiting them in the future, but if the three of them work together, they will be able to overcome any obstacle. And, they believe that one day they will be able to return to the world they came from. The adventure will never end.
各サービスの料金一覧
DeepL APIの料金は入力1文字あたり0.0025円で計算します。
1か月の基本料金630円は考慮しません。無料プランも考慮しません。
https://support.deepl.com/hc/ja/articles/360021183620-DeepL-API-Free%E3%81%A8DeepL-API-Pro
Google Cloud Translation APIはNMT 50 万文字以上
を使用します。
Google Cloud Translation API(NMT 50 万文字以上) - 1文字あたり0.00002ドル
https://cloud.google.com/translate/pricing?hl=ja
以下の2つのモデルを使います。
GPT-4o - 入力$5.00 / 1M tokens, 出力$15.00 / 1M tokens
gpt-3.5-turbo-0125 - 入力$0.50 / 1M tokens, 出力$1.50 / 1M tokens
https://openai.com/api/pricing/
比較
以下の2つの表は同じ意味の文章が各サービスの単位でどれだけの量になるかを表したものです。
計算のためにまとめただけなので読み飛ばしてOKです。
few, normal, manyの対応表 (ja -> en)
日本語から英語への翻訳
- | few | normal | many |
---|---|---|---|
DeepL API入力文字数 | 27文字 | 244文字 | 1641文字 |
Google Cloud Translation API 入力文字数 | 27文字 | 244文字 | 1641文字 |
gpt-3.5-turbo-16 入出力合計token数 | 46tokens(推定入力36tokens/推定出力10tokens) | 358tokens(推定入力242tokens/推定出力116tokens) | 2331tokens(推定入力1600tokens/推定出力731tokens) |
gpt-4o 入出力合計token数 | 39tokens(推定入力29tokens/推定出力10tokens) | 306tokens(推定入力190tokens/推定出力116tokens) | 1981tokens(推定入力1250tokens/推定出力731tokens) |
few, normal, manyの対応表 (en -> ja)
英語から日本語への翻訳
- | few | normal | many |
---|---|---|---|
DeepL API入力文字数 | 56文字 | 482文字 | 3596文字 |
Google Cloud Translation API 入力文字数 | 56文字 | 482文字 | 3596文字 |
gpt-3.5-turbo-16 入出力合計token数 | 47tokens(推定入力26tokens/推定出力21tokens) | 344tokens(推定入力119tokens/推定出力225tokens) | 2340tokens(推定入力778tokens/推定出力1562tokens) |
gpt-4o 入出力合計46token数 | tokens(推定入力26tokens/推定出力20tokens) | 331tokens(推定入力119tokens/推定出力212tokens) | 2349tokens(推定入力778tokens/推定出力1571tokens) |
本命です。
同じ意味の文章を書くサービスで翻訳したときの料金比較です。
まずは日本語から英語への翻訳にかかる料金(ja -> en)
サービス \ 対象文字量 | few | normal | many |
---|---|---|---|
DeepL API | 0.068円(0.000436ドル) | 0.61円(0.00391ドル) | 4.10円(0.0263ドル) |
Google Cloud Translation API | 0.00054ドル(0.084円) | 0.00488ドル(0.76円) | 0.033ドル(5.14円) |
gpt-3.5-turbo-16 | 0.000033ドル(0.0051円) | 0.000295ドル(0.046円) | 0.0018965ドル(0.30円) |
gpt-4o | 0.000295ドル(0.046円) | 0.00269ドル(0.42円) | 0.018965ドル(2.96円) |
そして英語から日本語への翻訳にかかる料金(en -> ja)
サービス \ 対象文字量 | few | normal | many |
---|---|---|---|
DeepL API | 0.14円(0.000898ドル) | 1.21円(0.00776ドル) | 8.99円(0.0577ドル) |
Google Cloud Translation API | 0.00112ドル(0.17円) | 0.00964ドル(1.50円) | 0.07192ドル(11.21円) |
gpt-3.5-turbo-16 | 0.0000445ドル(0.0069円) | 0.000397ドル(0.062円) | 0.002732ドル(0.43円) |
gpt-4o | 0.00043ドル(0.067円) | 0.003775ドル(0.59円) | 0.027455ドル(4.28円) |
まとめ
個人的にDeepL APIはOpenAI APIより安価な印象があったので、意外な結果でした。
実際のところ、gpt-4-turboはgpt-4oの2倍の値段ですし、gpt-4-32kはgpt-4oの10倍近い値段ですので、多分このあたりの価格と比較した印象だったのだと思います。
Model | Input | Output |
---|---|---|
gpt-4-turbo | $10.00 / 1M tokens | $30.00 / 1M tokens |
gpt-4-32k | $60.00 / 1M tokens | $120.00 / 1M tokens |
特にgpt-3.5-turboを使用した翻訳は非常に安価なことがわかります。
全体的に英語から日本語に翻訳する方がコストが高いですが、OpenAI APIを用いた翻訳は翻訳する言語による料金変動が少ないです。
また、今回はOpenAI APIで非常に簡素なプロンプトを使用しましたが、実務で使うときは翻訳精度を上げるためにプロンプトを追加するはずです。その際、追加したプロンプト分だけ料金が上がります。さらにOpenAI APIは自然言語処理なので安定して翻訳だけ行うことが難しいという問題点も存在します。
今回は比較するうえで処理速度など考慮しませんでしたが、要件に合えばコストパフォーマンス的にOpenAI APIを翻訳に使うモチベーションは高まりました。DeepL APIでは難易度の高いマークダウンの翻訳などさせることができるなどメリットもあります。
プロンプトを無視したりすることもあるので難しいところではありますけどね。
今回は各サービスで料金の単位が異なる翻訳サービスの費用比較を行いました(とても大変でした)。
もし間違ってるとこありましたら、指摘いただけますと幸いです。
※ Google Cloud Translation APIよりもDeepL APIの方が安い結果になりましたが、これは為替の影響が強く出た結果だと思います。他サービスがドル決済なのに対してDeepL APIだけは円決済となってます。今後、為替の影響が価格に反映される可能性は考慮しておくべきです。