-
Notifications
You must be signed in to change notification settings - Fork 87
Translation Engine
LLPlayer supports multiple translation engines. Each engine is explained below.
It is a normal translation API, sending subtitles one by one, so accuracy is low, but it works fast and very stable.
Accuracy (A-E) | Speed (A-E) | Price | Local / Remote |
---|---|---|---|
D | A | Free | Remote |
Google Translation V1: https://translate.googleapis.com
Translation accuracy is not good, but it is free and very fast.
Accuracy | Speed | Price | Local / Remote |
---|---|---|---|
C | B | Free or Paid | Remote |
DeepL: https://www.deepl.com
API key is required with registered account. A certain amount of usage per month is free of charge.
Accuracy | Speed | Price | Local / Remote |
---|---|---|---|
C | C | Free | Remote |
DeepLX: https://github.com/OwO-Network/DeepLX
This is a chat-style API.
It can retain the context of the subtitles, so the translation is more accurate than normal APIs.
However, it is not stable.
Accuracy | Speed | Price | Local / Remote |
---|---|---|---|
A - D | B - E | Free | Local |
Ollama: https://ollama.com
It is an LLM engine that runs locally.
Since the AI is run locally, a significant CPU and GPU are required to use it comfortably.
The amount of memory is important for a GPU.
The server must be up and running and the model must be downloaded in the command line.
- Install Ollama
- Download Model from Powershell
$ ollama pull aya-expanse
$ ollama pull gemma3
- Setup Ollama server by launching from GUI or Powershell
# if you need detail log information such as GPU usage
$ $env:OLLAMA_DEBUG=1
$ ollama serve
- (LLPlayer) Setup Ollama endpoint and model in
Subtitles -> Translate
section - (LLPlayer) Clicking
Hello API
button to test API - (LLPlayer) Enable translation from the subtitle button in seek bar
- Ollama's response time can be checked from the console when started with
ollama serve
.
Ollama is officially provided only as an API and CLI.
If you want a GUI like LM Studio for testing, you will need to install a separate tool.
Recommended GUIs
Accuracy | Speed | Price | Local / Remote |
---|---|---|---|
A - D | B - E | Free | Local |
LM Studio: https://lmstudio.ai
It is an LLM engine that runs locally.
Since the AI is run locally, a considerable CPU and GPU are required to use it comfortably.
The amount of memory is important for a GPU.
The server must be up and running and the model must be downloaded in the GUI.
- Install LM Studio
- Download Model from GUI or Powershell
$ lms get aya-23-8b
- Setup LM Studio API from GUI
You don't need to select model from GUI.
You may need to change default port 1234 to some number.
- Do same steps as Ollama
Accuracy | Speed | Price | Local / Remote |
---|---|---|---|
A | C | Paid | Remote |
OpenAI API: https://openai.com/index/openai-api
API key is required with registered account.
Billing is required to use the service.
It can translate with very high accuracy.
Accuracy | Speed | Price | Local / Remote |
---|---|---|---|
A | C | Paid | Remote |
Anthropic Claude API: https://www.anthropic.com/api
API key is required with registered account.
Billing is required to use the service.
It can translate with very high accuracy.
Each piece of subtitle data is independent. If these are translated by API one by one, the translation will inevitably be inaccurate because the context of the entire subtitle is not taken into account.
If a sentence is cut off in the middle, the translation will be particularly inaccurate.
However, LLM can increase accuracy by sending multiple previous subtitles to the chat simultaneously, rather than sending them one by one.
The actual API call now works as follows.
$ curl http://localhost:11434/api/chat -d '{
"model": "aya-expanse:latest",
"messages": [
{
"role": "system",
"content": "I will send the text of the subtitles for the video one at a time. Please translate the text while taking into account the context of the previous text.\nTranslate from English to Japanese."
},
{
"role": "user",
"content": "Chris Anderson: This is such a strange thing."
},
{
"role": "assistant",
"content": "クリス・アンダーソン:これって、本当に変なことだよね。"
},
{
"role": "user",
"content": "Your software, Linux, is in millions of computers,"
},
{
"role": "assistant",
"content": "あなたのソフトウェア、Linuxは何百万人ものコンピュータにインストールされていますが、"
},
{
"role": "user",
"content": "it probably powers much of the Internet."
}
],
"stream": false
}'
{
"model": "aya-expanse:latest",
"created_at": "2025-04-01T01:03:22.4755695Z",
"message": {
"role": "assistant",
"content": "それはおそらくインターネットの大半を動かしているでしょう。"
},
"done_reason": "stop",
"done": true,
"total_duration": 1201720300,
"load_duration": 26240300,
"prompt_eval_count": 148,
"prompt_eval_duration": 350339700,
"eval_count": 15,
"eval_duration": 822862100
}
From Subtitles > Translate
section in settings, if Translate Chat Method
is set to KeepContext
, the translation will be done while preserving context.
But be careful with paid LLMs, as more tokens will be consumed.
The number of subtitles sent simultaneously can be adjusted in the settings.