Наголоси!

Шарков_2 21-04-2026, 10:00

Дуже часто на просторах Форіду я стикався з коментарями, що в мене всраті наголоси.

Тому і вирішив щось з цим робити. 

Спойлер: зробив.


По-перше потрібен python (у мене версія 3.10.6)

Качаємо тут: https://www.python.org/downloads/

Далі встановлюємо і відкриваємо командну строку (тицяємо win+r i пишемо cmd)

Відкривається чорне вікно, яке дозволить завантажити потрібні бібліотеки наголосів. Пишемо:

pip install python-docx ukrainian-word-stress

Чекаємо.


Далі створюємо скрипт.

Відкриваємо або блокнот, або IDLE (оболонка python) і копіюємо цей текст:

import docx
import os
from docx.shared import Pt
from ukrainian_word_stress import Stressifier

def run_stress_tool():
# Налаштування символу наголосу над буквою
stressifier = Stressifier(stress_symbol='\u0301')

filename = input("Введіть назву вашого файлу (наприклад, text.docx): ").strip()

if not os.path.exists(filename):
print(f"Помилка: Файл '{filename}' не знайдено!")
return

try:
doc = docx.Document(filename)
print(f"Обробка файлу '{filename}'...")

for paragraph in doc.paragraphs:
if paragraph.text.strip():
original_text = paragraph.text
paragraph.text = ""

# Додавання наголосів
stressed_text = stressifier(original_text)

# Налаштування шрифту та розміру
run = paragraph.add_run(stressed_text)
run.font.name = 'Times New Roman'
run.font.size = Pt(11)

# Збереження результату
name_part, extension = os.path.splitext(filename)
output_name = f"{name_part}_stressed{extension}"

doc.save(output_name)
print("------------------------------------------")
print(f"ГОТОВО! Файл збережено як: {output_name}")
print("------------------------------------------")

except Exception as e:
print(f"Сталася помилка: {e}")

if __name__ == "__main__":
print("=== ПРОГРАМА РОЗСТАНОВКИ НАГОЛОСІВ ДЛЯ ДИКТОРІВ ===")
while True:
run_stress_tool()
cont = input("Обробити ще один файл? (так/ні): ").lower()
if cont != 'так':
break


Або качаємо готовий файл: 

https://drive.google.com/file/d/1NggFElUiJxJ9Cgun_qCabecd1gkqFKeL/view?usp=sharing


Коли все зроблено створюємо теку і закидуємо туди скачаний (створений) файл разом із текстом, який потрібно наголосити. ВАЖЛИВО! Формат тексту .docx

Запускаємо скрипт через IDLE (через run або F5)

Чекаємо на напис: "Введіть назву вашого файлу" Вводимо. Наприклад "rozdil 1.docx" ВАЖЛИВО! Формат тексту .docx

Чекаємо.

В тій же теці повинна з'явитися копія файлу з наголошеним текстом з припискою _stressed

На моєму ПК 55000 символів наголошуються приблизно від 5 до 8 хвилин.


Може комусь стане в пригоді.


18 відгуків:
  1. ValeryZ
    Диктор

    Круто! Треба спробувати.

    Апдейт:

    Посидів, полежав, подумав... Вирішив, що варто додати зручностів. 😎

    Інтерфейс. Драг-дроп було б кльово. Але треба графічний інтерфейс. -- Ну ок. Є. І графіка, і драг-дроп.

    Здалось, що було б непогано, якби у результуючому тексті зберігалось форматування оригіналу (таблички, поля і колонтитули - нафіг! тільки текст: розмір, жирний/кривий/підкреслений). -- Ну, хай...

    Жадібність кричить: а шо ти по одному файлу його туди??? -- Ок. Тепер можна кілька файлів драгдропити.

    А прогресбар? не видно, живе воно, чи скисло. -- Та блін, хай буде...

    А кіковрем'я ми там довбались? Інтересно ж... -- Ну точно. Це теж хай буде.

    Не забув, що програму запускаєм і тягнем туди файли з будь-якої папки, а вона кладе результат у ту ж папку, тільки з суфіксом? -- Нє. не забув.

    А який пайтон треба? -- НІЯКОГО! Воно само уміє.

    А шо таке огромне? -- Бібліотєків вагон патамушо.
     

    І де взять результат нічного вайбкодингу на розслабоні? -- ТУТ 

    Сирцевий код - у тій же папці. Допилювання - вітається.

    1. Шарков_2
      Диктор

      Скачав. Спробував) Задоволениииий))

       Ну от, видно, що пан Валерій - програміст) Дякую) 

      А то я вже взявся було за цю ж фігню на базі LibreOffice)

    2. Дякую. Мені воно, начебто, не потрібно, але прикольна штука) 

      1. ValeryZ
        Диктор

        Єдине - воно величезне, як доповідь Брєжнєва на XXVI з'їзді капесесе.

        1. Шарков_2
          Диктор

          180 Мб - це величезне?) Ну, не думаю)

          1. ValeryZ
            Диктор

            Так. Я подумую переробити його не на пайтоні, але ще не вирішив на чому. Бо притомна бібліотека наголосів (Марісса) є тільки для пайтону. А при збірці цього монстра в нього були вшиті як сама бібліотека, так і купа всього іншого, наприклад PyQT6 та інтерпретатор пайтону.
            Один колега подав ідею стосовно іншого типу реалізації, то, можливо увечері складу ще й ту версію, коротшеньку. Мегабайт... ну на 30-40. Але не таку зручну.
            Бо ця і велика, і в спокійному стані півгектару пам'яті жере, а при роботі проца до 60% (у мене) навантажує.
            Ну і ще деякі плани є.

            1. Шарков_2
              Диктор

              Ну ви й заморочилися) 

              Цікаво буде подивитися, що вийде) 

            2. ValeryZ
              Диктор

              Я сам в шоці. Але і мені цікаво.

            3. ValeryZ
              Диктор

              На поточний момент проаналізовано більше трьох мільйонів словоформ, що містяться в словнику типу "марісса". Виведено алгоритм для постановки наголосу у словах з однозначним наголошуванням. Словник однозначних наголосів тепер містить 208740 записів. Далі потрібно розробити алгоритм збереження інформації у словнику для розстановки наголосів у словах та словосполученнях з неоднозначним та неодноразовим наголошуванням, наприклад словосполучення "повітряно-реактивним", де з двох наголосів один - плаваючий. Поки що роздумую, як оптимізувати такий словник неоднозначностей, а він містить наразі 82478 словоформ.
              Себто, я маю намір скоротити об'єм довідкової інформації більше ніж в 10 разів, що має прискорити роботу і зменшити об'єм програми.

            4. Шарков_2
              Диктор

              От хотілося б сказати щось розумне, але в голові тільки:

              КРУТО!

    3. Pik_CaH4E3
      Диктор

      Все супер! Працює на всіх моїх девайсах, дякую!

    4. Mike Juice
      Диктор

      Запустив, виглядає цікаво, дякую!

  2. Pik_CaH4E3
    Диктор

    Щось не працює. Зробив як написано вище, але воно мені пише отаке:

    Python 3.14.4 (tags/v3.14.4:23116f9, Apr  7 2026, 14:10:54) [MSC v.1944 64 bit (AMD64)] on win32
    Enter "help" below or click "Help" above for more information.

    ======================= RESTART: nagolos.py ======================
    Traceback (most recent call last):
      File "nagolos.py", line 1, in <module>
        import docx
    ModuleNotFoundError: No module named 'docx'

    що я роблю не так?

    1. Шарков_2
      Диктор

      У вас версія python 3.14. а бібліотеки були скачані для версії 3.10.

      тицяєте win+r вводите cmd і пишите:

      py -3.14 -m pip install python-docx ukrainian-word-stress tqdm

      скачаються бібліотеки і повинно допомогти.

      1. Mike Juice
        Диктор

        То ви ще й пайтоніст? Круто. 

        Ініціатива дуже хороша, має допомогти тим, кому часто наголосами дорікають

        1. Шарков_2
          Диктор

          Я нічого такого не вмію)

          Це все Гугл з добрими людьми та трошки ШІ)

      2. Pik_CaH4E3
        Диктор

        Тепер все працює! Трошки повільно, ніж хотілося б, але задум/реалізація варті уваги.

        Дякую, буду використовувати.

        1. Шарков_2
          Диктор

          Може якось докумекаюся як зробити текстову оболонку, щоб без шаманського бубна все наголошувалося і редагувалося в разі чого)

          Радий, що допоміг)

4read.ORG » Блог » Наголоси!