bilibili/Index-Translate
Index-Translate is Bilibili's Apache-2.0 family of multilingual, multimodal translation models built on Qwen3.5 (2B, 9B and 35B-A3B preview), covering 150 languages with instruction following (glossaries, format preservation, tone). Variants add native image translation with no OCR (vision encoder), Index-Echo for speech subtitles and dubbing, Index-Homura for syllable-controlled translation and Index-NativeLong for full-document translation. The repo provides GGUF, FP8 and NVFP4 quantized builds, vLLM serving scripts, a free OpenAI-compatible API, four new benchmarks (instTrans, MEME, SandGlass, NAtIveLong), and links to three papers including HOMURA and RIVAL (RL for translation).
What it claims
Index-Translate ships text models at 2B, 9B and 35B-A3B (preview). On the low-resource FLORES_minor_pair set, 35B-A3B scores 0.8168 COMET-22 and 0.7164 XCOMET-XXL, with a 2.4% off-target rate. On instTrans_minor, Index-Translate-9B has the highest instruction score (IFscore 0.7725) and the lowest off-target rate (3.47%) of all compared models, with a quality score of 0.5222. Weights came out on 30 September 2026. Quantized builds, the public API and the benchmarks followed in early October, and image input arrived on 10 October 2026.
Evidence
- Index-Homura-9B: 81.92% of outputs land within 10% of the target syllable count on SandGlass.
- Index-NativeLong-9B: scores 0.7891 on GuoFeng, 0.7683 on BWB and 0.8848 on Books. GuoFeng and BWB use Track A3 at 64K Chinese-side tokens.
- Radar chart: the headline chart uses per-axis min–max normalization across 14 models. It is not an accuracy percentage. Its gray "best non-Index" line combines the best score on each axis and does not represent a single model.
- Metrics: WMT26 uses a judge score and FLORES uses COMET-22.
- instTrans scoring: hard constraints are binary-gated, so one failed format or glossary constraint zeroes the instance score. Soft constraints, such as tone, are graded.
How to use it
The public API serves Index-Translate-35B-A3B at https://index-translate.bilibili.com/v1. It is OpenAI-compatible, offers both Chat Completions and Responses endpoints, and the examples send no API key. Image requests use the OpenAI image_url format with base64 data, and the example sets a User-Agent header:
python inference/llm/call_api.py "Hello, world!" --target zh
python inference/llm/call_api.py --image photo.jpg --target zh -m Index-Translate-2BTo run locally, you need a vLLM build with Qwen3.5 support:
git clone https://github.com/bilibili/Index-Translate.git
cd Index-Translate
pip install -U vllm
pip install -r inference/llm/requirements.txt
vllm serve IndexTeam/Index-Translate-2B --host 127.0.0.1 --port 8000 --max-model-len 4096
python inference/llm/translate.py "你好,世界。今天天气不错,我们去公园散步吧。" --target en --model IndexTeam/Index-Translate-2BConstraints are passed as CLI flags:
| Flag | Purpose |
|---|---|
-g | Glossary |
-H | Hard requirement |
-S | Soft requirement |
-d | Genre |
Syllable-budgeted output uses syllable_translate.py, for example --syllables 7 --target en --glossary "电影:cinema".
Local clients default to http://127.0.0.1:8000/v1 with API key EMPTY. They also read OPENAI_BASE_URL, OPENAI_API_KEY and INDEX_MODEL.
A few model IDs and endpoints differ from what you might expect:
- 35B locally: serve and select
IndexTeam/Index-Translate-35B-A3B-preview. - NativeLong: it is published as
IndexTeam/Index-Nailong-2BandIndexTeam/Index-Nailong-9B. - Browser extensions: tools such as Immersive Translate need the local proxy started with
call_api.py --serve, athttp://127.0.0.1:8080/v1. The proxy handles CORS/WAF headers and suppresses thinking tags.
Each model is also published in three quantized formats:
- GGUF: all bit-widths in one repository, with mmproj vision weights.
- FP8 W8A8: compressed-tensors format for vLLM.
- NVFP4 W4A4: for Blackwell GPUs.
All repositories are mirrored on ModelScope.
Limits
- Model sizes: 35B-A3B is a preview. Homura, NativeLong and Echo come only in 2B and 9B.
- Language coverage: the speech and long-document packages cover fewer languages than the text models' 150. The web demo and the packaged interfaces also differ in coverage.
- Syllable control: it is approximate in general, and spoken duration also depends on delivery.
- Index-Echo GGUF: these repositories contain only the text LLM backbone. The full pipeline ships only in the FP8/FP4 repositories.
- Index-Echo dubbing API: the
DubbingBridgeModel.dubwrapper exposes neither a seed nor token budgets, andchunk=Trueis not implemented. - NAtIveLong benchmark: it ships no source novels or reference translations. BWB data must be obtained separately, and GuoFeng comes with a reconstruction tool.
- instTrans benchmark: the release omits the 2,793 low-resource extension tasks used in the evaluation tables.
- Benchmark scores and licences: historical scores were not rerun after the benchmark review. Each benchmark has its own licence terms, which the repository's Apache-2.0 root licence does not replace.
- Demo comparison: the S2ST demo compares against SeamlessM4T-v2, which does not clone voices. It is separate from the report's six-direction study.
Organisations named here
- Bilibili
- Index LLM Team
- Hugging Face
- ModelScope
- BWB
- COMET-22
- FLORES
- GuoFeng
- HOMURA
- IFMTBench
- instTrans
- MEME
- NAtIveLong
- RIVAL
- SandGlass
- WMT
- WMT24++
- XCOMET-XXL
Technologies named here
- vLLM
- Index-Translate-35B-A3B
- llama.cpp
- Index-Translate-9B
- call_api.py
- Index-Translate-2B
- translate.py
- Index-Translate
- Index-Echo
- syllable_translate.py
- Immersive Translate
- Index-Homura
- Index-NativeLong
- ModelScope
- Qwen3.5
- Hugging Face
- SeamlessM4T-v2
- OpenAI-compatible API
- GGUF
- OpenAI API
- Vision language model
- Mixture of Experts
- Python
Techniques named here
- Instruction-following translation
- Syllable-controlled translation
- Native full-document translation
- Native multimodal image translation
- Quantization
- Local proxy bridge
Related in models


