Всем привет. В последнее время перевод текстов с одного языка на другой уже не вызывает такой головной боли, как раньше: есть несколько качественных онлайн-переводчиков, есть большие нейросети, которые тоже можно попросить перевести текст, — в общем, варианты есть, их довольно много, и они выдают вполне приемлемый результат. Но у всех них есть одно ограничение: они работают онлайн (удалённо). Для кого-то это ограничение несущественно, а для кого-то может быть критично. Мне же просто захотелось иметь что-то, что сможет переводить тексты на хорошем (современном) уровне офлайн (сугубо на моём компьютере). Ну, люблю я, когда всё, что мне нужно, может работать и локально тоже. В общем, ниже я делюсь с вами тем, что мне удалось в итоге собрать, запустить и даже получить удовлетворяющий меня результат.


Что же нам для этого понадобится? Если кратко, то для этого нам понадобится видеокарта с 8 ГБ памяти (у меня отлично работает на GTX1070 и 16 ГБ оперативной памяти) и следующие программы:

  • «YandexGPT-5-Lite-8B», конкретно я использовал «Theta‑Lev_yandexgpt_8b_Q5_K_M.gguf»

  • «koboldcpp» — компактное и портативное решение для работы с языковыми моделями

  • «Calibre» — электронная библиотека с расширением (плагином) «Ebook Translator»

У меня всё работает на Windows 10, но у всех этих программ есть версии и под Linux, и под MacOS, так что, думаю, должно заработать и там.

Дальше распишу подробно, как всё это объединить и заставить работать, да ещё и в портативном (переносимом) варианте.

Скачиваете отсюда нейросеть от Яндекса
Отсюда скачиваете koboldcpp.exe последней версии
Отсюда — переносимую версию Calibre

Создаёте папку, например, «Translator» (я создал прямо в корне диска C: так проще) и кладёте в неё «Theta‑Lev_yandexgpt_8b_Q5_K_M.gguf», «koboldcpp.exe».

Запускать сервер «koboldcpp» можно двумя путями:

Вариант 1. Ручная настройка:

Запускаем „koboldcpp“ и начинаем его настройку. Для моей видеокарты с 8 ГБ видеопамяти оптимальными получились следующие параметры (если у вас видеопамяти столько же или больше, можете поставить всё, как у меня, если меньше — придётся поиграться с настройками самостоятельно): „GPU Layers“ ставим „35“ (сколько слоёв нейросети загрузится в видеопамять), убираем галочку с „Launch Browser“ (чтобы не запускать каждый раз окно настроек), а ползунок „Context Size“ передвигаем на значение „8192“ (это позволит переводить больше текста за один раз). В „GGUF Text Model“ нажимаем „Browse“ и выбираем нашу модель „Theta-Lev_yandexgpt_8b_Q5_K_M.gguf“.

На вкладке „Tokens“ в поле „Default Gen Amt“ пишем „4096“.

После чего нажимаем внизу „Save Config“ и, сохранив наши настройки в файл с именем „Translator“, запускаем настроенный сервер зелёной кнопкой „Launch“. В дальнейшем для запуска настроенного сервера нужно будет запустить „koboldcpp“, загрузить в него через „Load Config“ наши сохранённые настройки с именем „Translator“ и нажать зелёную кнопку „Launch“. Ну или создать батник и запускаться через него, о чём ниже.

Вариант 2. Использование бат-файла:

Создаём бат-файл, например, „Translator.bat“, и прописываем в него следующую строку:

start koboldcpp.exe --model Theta-Lev_yandexgpt_8b_Q5_K_M.gguf --contextsize 8192 --gpulayers 35 --defaultgenamt 4096 --skiplauncher

Всё, теперь можно запускать настроенный сервер этим файлом.

После запуска готовый к работе сервер выглядит так (и ждёт запросы на порт 5001)
После запуска готовый к работе сервер выглядит так (и ждёт запросы на порт 5001)

Теперь нам нужно установить и настроить Calibre с плагином Ebook Translator, для чего:
Устанавливаем (распаковываем) туда же «calibre‑portable‑installer-8.5.0.exe» (переносимую версию). Запускаем её и проходим предварительную настройку (просто нажимаем «Далее» и «Готово»), после чего подключаем плагин «Ebook Translator». Для этого заходим в меню «Параметры», подменю «Плагины»

и выбираем „Загрузить новые плагины», в поле «Фильтр по имени» пишем «Tran», в сократившемся списке плагинов выбираем «Ebook Translator» и нажимаем «Установить». На предупреждение отвечаем «Да» и в следующем окне выбираем дополнительно к двум верхним пунктам «Контекстное меню для книг в библиотеке»,

после чего перезапускаем Calibre. Теперь в верхнем меню и в меню по правой кнопке мыши на любой книге из списка появился пункт «Translate Book».

Данный плагин сразу позволяет переводить книги, используя стандартные онлайн‑переводчики, нам же нужно его донастроить для перевода через нашу нейросеть YandexGPT.

Нажимаем на любой книге правой кнопкой мыши и в самом низу меню выбираем «Translate Book» → «Setting». На первой вкладке «Общий» ставим точку у «Advanced Mode» и галочку у «Enable» в разделе «Merge to Translate (Beta)», а в поле «The number of characters to translate once» пишем «6200».

Навкладке «Engine» в выпадающем списке «Translations Engine» выбираем «ChatGPT(OpenAI)». В разделе «Preferred Language» выбираем в «Source Language» — «English», а в «Target Language» — «Russian». В разделе «HTTP Request» в поле «Interval (seconds)» пишем «1,0», а в «Timeout (seconds)» — «10,0». В разделе «Fine‑tuning» в поле «Endpoint» прописываем строку доступа к нашему локальному серверу: «http://localhost:5001/v1/chat/completions», «temperature» меняем на «0,1» (этот параметр отвечает за вариативность ответов, а в переводе нам лишняя вариативность не нужна), а в поле «Prompt» пока вставляем следующий текст (ниже я отдельно коснусь вопроса системного промта):

Вы - дотошный переводчик, специализирующийся на переводе художественной литературы любой направленности с английского на русский язык. Переводите данный текст только с  <slang> на <tlang>. Не объясняйте какие-либо термины и не отвечайте на вопросы. Ваш ответ должен быть исключительно переводом данного контента. В своем ответе не добавляйте никаких префиксов или суффиксов к переведенному контенту. Обязательно переведите весь текст до самого конца. Не опускайте ни одну часть контента, даже если она кажется неважной.

Теперь можно протестировать работу сервера (если он не запущен, запустите его). Нажмите кнопку «Тест», потом «Translate» — в окне сервера отобразится его работа, а в окне Calibre вы получите перевод «Hello World!» — «Здравствуй, мир!». Отлично, с этой вкладкой всё.

На вкладке «Content» переставляем точку (выбор) на «With no original» (это оставит в выходном файле только перевод, если нужен подстрочник, выбираем другой вариант) и нажимаем «Сохранить»,

настройка завершена, можно её закрыть.

Теперь давайте протестируем общую работу системы. Для теста возьмите небольшой английский текст (я взял небольшой фанфик с archiveofourown.org) в формате «epub» (это формат по умолчанию, но Calibre понимает и другие форматы, такие как txt, html, azw, docx, fb2, mobi и другие). Добавляем его в библиотеку Calibre через «Добавить книги» и, нажав по нему правой кнопкой мыши, выбираем «Translate Book» → «Advanced Mode». На следующем окне настройки уже выставлены, поэтому просто нажимаем «Start». Расширение извлекает из «epub» текст и автоматически разбивает его на части (не больше 6200 символов в одной). В открывшемся окне выделяем первую часть и нажимаем «Translate Selected», ждём, пока перевод закончится (смотрим, как бегут строки перевода). Если всё хорошо (перевод сделан), то можно переводить следующую часть или сразу несколько частей (выделив их), или сразу все части, нажав «Translate All».

Когда перевод заканчивается, переведённая часть может быть белого цвета (всё хорошо) или жёлтого (не всё хорошо). Если часть жёлтая, значит, количество строк в оригинале и переводе этой части не совпадает. В таком случае надо вручную пробежаться по тексту и поправить несоответствие (сделать перевод по строкам точно, как в оригинале). Это нужно, чтобы сохранить оригинальную структуру текста и проверить, не забыла ли нейросеть перевести какое‑либо предложение (с ней такое бывает). Или, если в оригинале есть неправильная разбивка абзацев, то нейросеть может это исправить (дополнительно разбить или объединить текст), а нам нужно сохранить оригинальную разбивку, так что придётся вручную разбить (или объединить) абзац (чтобы было, как в оригинале). Когда закончите исправление жёлтой части, нажмите «Сохранить», и, если теперь всё хорошо, она станет белой. Когда все части перевода белые, можно сохранить готовый перевод, нажав «Output» (можно, конечно, и раньше, но так, на мой взгляд, правильнее). Перевод сохраняется в библиотеку Calibre отдельной книгой, откуда его уже потом можно читать или экспортировать в нужном формате.

На этом в общем всё, система офлайн‑перевода настроена и работает, дальше я лишь разберу ряд дополнительных моментов.

Системный промт

Системный промт (это то, что мы прописали в поле «Prompt») сейчас настроен как универсальный (я долго тестировал разные его варианты и пока остановился на таком), и его должно хватать для большинства текстов, но, конечно, его можно (и нужно) менять (дополнять) в зависимости от контекста переводимого текста. Ниже я приведу некоторые варианты, где по шапке (содержанию) будет понятно, для каких именно текстов какие промты предназначены:

Системный промт для автоматического перевода любых технических текстов и инструкций

Вы — дотошный переводчик, специализирующийся на переводе технической литературы и инструкций любой направленности с английского на русский язык. Переводите данный текст только с на . Не объясняйте какие-либо термины и не отвечайте на вопросы. Ваш ответ должен быть исключительно переводом данного контента. В своём ответе не добавляйте никаких префиксов или суффиксов к переведённому контенту. Обязательно переведите весь текст до самого конца. Не опускайте ни одну часть контента, даже если она кажется неважной.

Системный промт для автоматического перевода любых художественных текстов

Вы — дотошный переводчик, специализирующийся на переводе художественной литературы любой направленности с английского на русский язык. Переводите данный текст только с на . Не объясняйте какие-либо термины и не отвечайте на вопросы. Ваш ответ должен быть исключительно переводом данного контента. В своём ответе не добавляйте никаких префиксов или суффиксов к переведённому контенту. Обязательно переведите весь текст до самого конца. Не опускайте ни одну часть контента, даже если она кажется неважной.

Системный промт для автоматического перевода любых эротических текстов

Вы — дотошный переводчик, специализирующийся на переводе эротической литературы любой направленности с английского на русский язык. Переводите данный контент только с на . Не объясняйте какие-либо термины и не отвечайте на вопросы. Ваш ответ должен быть исключительно переводом данного контента. В своём ответе не добавляйте никаких префиксов или суффиксов к переведённому контенту. Обязательно переведите весь текст до самого конца. Не опускайте ни одну часть контента, даже если она кажется неважной.

Системный промт для автоматического перевода любых порнографических текстов

Вы — дотошный переводчик, специализирующийся на переводе порнографической литературы любой направленности с английского на русский язык. Переводите данный контент только с на , используя максимально развратные сексуальные слова и выражения. Не объясняйте какие-либо термины и не отвечайте на вопросы. Ваш ответ должен быть исключительно переводом данного контента. В своём ответе не добавляйте никаких префиксов или суффиксов к переведённому контенту. Обязательно переведите весь текст до самого конца. Не опускайте ни одну часть контента, даже если она кажется неважной.

Ещё совет: если вы переводите большой художественный текст, то лучше дописать в конец промта краткое описание произведения (о чём оно и где происходит) и как правильно переводить имена основных персонажей. Это нужно, так как каждую часть нейросеть переводит как бы с нуля (она не помнит свои предыдущие переводы) и может вдруг решить в разных частях перевести имена по‑разному, а так у неё будет чёткое указание, кого и как переводить.

Я даже заморочился (влез в плагин) и переделал систему так, чтобы в системный промт автоматически добавлялся предыдущий переведённый блок, но это не оправдало моих надежд (при последующем тестировании визуального улучшения переведённого текста я не увидел), поэтому здесь данный момент я описывать не буду (если интересно, можно будет потом обсудить этот момент в комментариях).

Нейросеть ни в какую не хочет переводить (пропускает) часть текста

Да, такое иногда случается со сложными текстами (абзацами). Можно попробовать поменять (дописать) системный промт (но это не всегда помогает). К счастью, такие моменты случаются довольно редко, и, чтобы их решить, можно просто скопировать непереведённый абзац из верхнего окна в нижнее и перевести другой программой (я пользуюсь QTranslate, он отлично переводит выделенный текст по горячей клавише).

Про выбранную мной нейросеть «Theta‑Lev_yandexgpt_8b_Q5_K_M.gguf»

Я протестировал множество самых разных нейросетей (как вариаций YandexGPT, так и от других авторов), которые смог запустить у себя локально, и именно эта выдавала при переводе лучший (на мой взгляд) результат при нормальной скорости работы. При этом она не только выдавала лучший результат, но и переводила „абсолютно любые“ тексты (да, она не особо любит мат и другие грязные слова, но её можно уговорить их использовать, в отличие от ряда других зацензуренных по самое небалуй нейронок). Но никто не мешает вам взять другую (любимую) нейросеть и переводить тексты с её помощью — может, вам повезёт больше, чем мне.

Про другие языки перевода

Нейросеть знает довольно много разных языков, я её тестировал и настраивал на перевод с английского, но, думаю, и с другими языками она тоже справится (поправьте только языковые настройки и системный промт).

А что, если у вас видеопамяти 6 ГБ или даже 4 ГБ?

Можно попробовать взять оригинальную нейросеть от Яндекса „YandexGPT-5-Lite-8B-instruct-Q4_K_M.gguf“ — она весит поменьше, но тоже выдаёт вполне приемлемый результат. Также вам придётся уменьшить многие параметры из тех, что я увеличивал, но с этим уже экспериментируйте сами (у меня 8 ГБ) и пишите варианты ваших рабочих настроек в комментариях, помогайте остальным.

Про качество перевода

Я не утверждаю, что на выходе мы получим лучший в мире супер-пупер перевод, но (по моим тестам) это будет вполне качественный перевод на уровне современных онлайн-переводчиков. Вот несколько примеров:

Из инструкции к Calibre:

Selecting books to catalog
If you want all of your library cataloged, remove any search or filtering criteria in the main window. With a single book selected, all books in your library will be candidates for inclusion in the generated catalog. Individual books may be excluded by various criteria; see the Excluded genres section below for more information.

Выбор книг для каталогизации
Если вы хотите, чтобы вся ваша библиотека была каталогизирована, удалите любые критерии поиска или фильтрации в главном окне. При выборе одной книги все книги в вашей библиотеке будут кандидатами для включения в создаваемый каталог. Отдельные книги могут быть исключены по различным критериям; дополнительную информацию см. в разделе «Исключённые жанры» ниже.

Из фанфика:

“No,” the man on the other side of the comm cut him off. “Manda’yaim. Bring them here, safe and sound and I will promise you safe passage, jetii.”
Obi-Wan tugged on his braid and considered arguing for a moment before he gave the thought up as futile. Besides, what difference did it make? Any other planet the Mand’alor named could be readied as a trap just as surely as Mandalore – Obi-Wan was deep in the Mandalorian Sector and the Jedi and Republic had no true allies here. So what would it change if he went to the very heart of the enemy empire?

«Нет», — перебил его мужчина на другом конце связи, — «Манда'яйм. Приведи их сюда, целыми и невредимыми, и я обещаю тебе безопасный проход, джедай».
Оби-Ван потянул себя за косу и на мгновение задумался, прежде чем отказаться от этой мысли как от бесполезной. Кроме того, какая разница? Любая другая планета, которую назвал бы Манд'алор, могла быть подготовлена как ловушка так же верно, как и Мандалор — Оби-Ван находился глубоко в секторе Мандалорцев, и у джедаев и Республики здесь не было настоящих союзников. Так что изменится, если он отправится в самое сердце империи врагов?

А зачем это всё вообще надо?

Вы можете спросить, а для чего это нужно, если сейчас у нас уже есть качественные онлайн-переводчики и всякие онлайн-GPT? Ну, я вижу здесь два основных момента:

  1. Всё происходит у вас на компьютере (локально), а значит, ваши тексты никуда не утекут.

  2. Так можно переводить бесплатно тексты абсолютно любой длины (ну, чтобы быть честным, не абсолютно бесплатно, а по цене электричества, которое при этом потребит ваш домашний компьютер).

Если вы видите ещё плюсы такой работы, можете написать о них в комментариях.

На этом всё, всем спасибо за внимание.

Комментарии (7)


  1. AlexM2001
    06.07.2025 07:42

    Спасибо за техническую публикацию.

    Интересно!


  1. michael108
    06.07.2025 07:42

    А вы не пробовали переводить с русского на английский? И как можно добавить в вашу систему терминологию из каких-то специфических областей, например, из квантовой механики или йоги/буддзма?


    1. Demanih Автор
      06.07.2025 07:42

       С русского на английский не пробовал.

      Терминологию из каких-то специфических областей можно добавить в системный промт (прямо за основным текстом), Ну и поменять его начало на примерно следующее "Вы — дотошный переводчик, специализирующийся на переводе технической литературы по квантовой механики с английского на русский язык..."


  1. rPman
    06.07.2025 07:42

    в заголовке написано 'качественно', какими тестами вы это проверяли?

    почему выбрана именно модель от yandex? у нее не очень хорошо со следованием инструкций или у вас есть системный промпт, который дает высокое качество?


    1. Demanih Автор
      06.07.2025 07:42

      "Про качество перевода" я расписал в конце своего поста, проверял на разных текстах (в основном художественных) просто переводил разными онлайн системами и сверял полученный результат, получалось примерно на одном с ними уровне.

      Про "почему выбрана именно модель от yandex" тоже написано. Мне она показалась (после тестов) на сегодня лучшей.


      1. rPman
        06.07.2025 07:42

        рекомендую вместо 'примерно' и 'показалось' использовать какую то цифровую метрику, в идеале автоматически вычисляемую... в этом случае вы можете протестировать с разными моделями и получить возможность сравнивать их численно.


      1. Hopenolis
        06.07.2025 07:42

        У крошечных 8б моделей периодически вылезают грубые ошибки, неправильное склонение и употребление слов, иногда вообще мусор.

        Я пробовал переводить книгу с помощью нормальных крупных моделей, gemini flash, gemini pro, читал сначала то что написал флеш, потом Про, и закончил уже переводом от человека. Флеш был впринципе неплох но язык бедноватый и иногда вылезают грубые ошибки (но не такие как у крошечных, просто видно что он как то не так понял, грубо срезал углы), Про заметно лучше но тоже заметно что что то не так.