☰

ASMR Translator

Auto-translates ASMR subtitles on Kikoeru-based sites. Supports any OpenAI API-compatible LLM, DeepL, LibreTranslate, and LunaTranslator.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

Upphovsman
Makar8000
Dagliga installationer
0
Totala installationer
0
Betyg
0 0 0
Version
2.5.1
Skapad
2026-10-28
Uppdaterad
2026-10-28
Size
36,3 KB
Licens
GPL-3.0-or-later
Gäller för

ASMR Translator shows the subtitles of ASMR works in your language while they play. Each line is translated as it comes up, using the translation service you pick, and the translation replaces the original in the player's lyric bar.

Settings preview

  • Translates Chinese, Japanese and Korean subtitle lines.
  • Works with any OpenAI API-compatible LLM (OpenRouter, LM Studio, Ollama, llama.cpp and others), DeepL, LibreTranslate and LunaTranslator.
  • Keeps translations in a cache, so a work you replay is shown instantly and costs nothing.
  • Translates the next few lines ahead of playback, so they're ready when they come up.
  • Sends the previous lines along as context, so short lines and pronouns are translated in their setting.
  • Lets you keep several profiles, each with its own translator, settings and cache.

Supported sites

Running Kikoeru on another address or port? Add it as a user match: in the Tampermonkey dashboard, open the script, go to its Settings tab, and under Includes/Excludes add a user match such as http://192.168.1.50:8888/*. Keep the original matches enabled. User matches survive script updates.

Getting started

  1. Install the script, then open one of the supported sites.
  2. Click the Tampermonkey icon and choose Open Translator Settings.
  3. Pick a Translator and fill in its settings, using the guide below.
  4. Press Save, and play a work on the site.

Until a translator is picked, the script leaves the subtitles alone.

Translator setup

OpenAI API-compatible LLM

This is the most flexible option, and it works with both online services and models on your own machine.

Setting What to enter
Chat Completions URL The full chat completions address of the service, see below
Model The model's name on that service
API Key / Auth Token The service's key, or leave it empty for a local server without one
Source Language, Target Language Names like Chinese and English. Auto leaves the source out of the prompt
System Prompt The instruction sent with every line. {0} becomes the source language and {1} the target
Extra Parameters A JSON object added to every request, see below.

Common addresses:

Service Chat Completions URL
OpenRouter https://openrouter.ai/api/v1/chat/completions (the default)
LM Studio http://localhost:1234/v1/chat/completions
Ollama http://localhost:11434/v1/chat/completions
llama.cpp server http://localhost:8080/v1/chat/completions

The default model, tencent/hy-mt2-30b-a3b on OpenRouter, is a dedicated translation model and is inexpensive. To use OpenRouter, create a key at openrouter.ai and paste it into API Key / Auth Token. Alternatively, you can use llamacpp to run the same model for free.

The Extra Parameters field takes whatever your server understands, under its own names. Servers don't always support the same parameters, so check your server's documentation. Some examples:

Purpose Server Extra Parameters
Top-k and repetition penalty llama.cpp, LM Studio {"top_k": 20, "repeat_penalty": 1.05}
Top-k and repetition penalty OpenRouter, vLLM {"top_k": 20, "repetition_penalty": 1.05}
Turn off thinking, so lines arrive faster OpenRouter {"reasoning": {"effort": "none"}}
Turn off thinking llama.cpp, Ollama {"reasoning_effort": "none"}
Send nothing extra Any {}

OpenAI's reasoning models, such as the o-series and GPT-5, only accept their default temperature and reject the request otherwise. Use {} with those.

DeepL

Paste your DeepL API key into API Key. Pick a target language, and feel free to leave the source on AUTO unless detection guesses wrong.

LibreTranslate

Set API Endpoint to your instance's translate address. The default is http://localhost:5000/translate.

LunaTranslator

Set API Endpoint to the address of LunaTranslator's API server, by default http://localhost:2333/. With the server running, the LunaTranslator Model list fills in. Pick the model to use.

Settings

  • Profiles - "New" starts a profile from the defaults, and "Duplicate" copies the current one together with its cache. Switching profiles drops unsaved changes.
  • Use translation cache - Keeps translations between visits. With it off, translations last only until the page is closed. "Clear cache" empties the profile's cache, for example after changing the model or the prompt.
  • Prefetch translations - Requests the next three lines in advance while the current one plays. Helps to reduce latency on displaying subtitles.
  • Translate with context - Sends the three previous lines along with each line. Used by the OpenAI API-compatible and DeepL translators to improve translation quality.
  • Restyle the lyric bar - Applies some custom styling fixes, such as larger and more readable subtitles and adjusting the position of the audio player.
  • Apply saves without closing the window, and Save saves and closes it.

Permissions and privacy

The first time the script contacts a server that isn't built in, Tampermonkey asks whether to allow it. The built-in servers are DeepL, OpenRouter, localhost and 127.0.0.1. Choose Always allow for that domain, or Always allow all domains if you switch servers often. That is also why the install page says the script can connect to any domain: the address is whatever you enter.

Subtitle lines are sent to the translation service you configured, and nowhere else. Settings, API keys, and the cache stay in your browser's userscript storage.

Extras on asmr.one

  • Disables the warning shown when you raise the volume above 100%, so the volume boost connects instantly.
  • Enables downloads for Brave Browser.

Troubleshooting

Open the browser console with F12. Every message from the script starts with [Translate].

  • Nothing is translated, and there are no [Translate] lines - The script isn't running on that page. Check the address against the supported sites, or add a user match.
  • "No audio player found after 10 seconds" - The page isn't a player page, or that site build isn't supported yet.
  • "Failed" lines - The message includes the server's answer. Check the address, the key and the model name.

Bug reports and suggestions are welcome in the Feedback tab.