Перейти до змісту

Ця сторінка описує Dictum 0.5.

Де Dictum зберігає файли

Для кожного користувача Dictum тримає дві теки: одну для ваших налаштувань і одну для своїх даних. Оновлення й видалення Dictum їх не чіпають, тож після повторного встановлення все буде так, як ви залишили.

Дві теки

Тека Windows Linux
Налаштування: config.json і ваші запити %APPDATA%\Dictum ~/.config/dictum
Дані: моделі, історія й журнали %LOCALAPPDATA%\Dictum ~/.local/share/dictum

У Linux Dictum враховує XDG_CONFIG_HOME і XDG_DATA_HOME, якщо їх задано: тоді теки — це $XDG_CONFIG_HOME/dictum і $XDG_DATA_HOME/dictum.

Щоб відкрити теку у Windows, вставте її шлях, наприклад %APPDATA%\Dictum, в адресний рядок Провідника. У Linux виконайте xdg-open ~/.config/dictum. Шлях до файлу налаштувань показує команда:

dictum config path

У Windows запускайте dictum за повним шляхом: див. Командний рядок.

Що в них лежить

Тека налаштувань

Файл Що в ньому
config.json Усі ваші налаштування: профілі, розпізнавання мовлення, обробники тощо. Його записують Налаштування, майстер налаштування й команди dictum, як-от dictum vocab add.
prompts/ Ваші запити для чищення тексту мовною моделлю, кожен в окремому файлі: prompts/<name>.md. Якщо ви редагуєте вбудований запит cleanup у Налаштуваннях, ваша версія зберігається як prompts/cleanup.md і замінює його.

Тека даних

Файл Що в ньому
models/ Моделі мовлення, ggml-*.bin, і детектор голосової активності. Модель мовлення займає від 265 МБ до 875 МБ.
history.jsonl Ваші останні диктування, по одному в рядку: текст, як його почув Whisper і як його вставлено. Звуку там немає ніколи. Скільки їх зберігати, задає поле Історія в Налаштуваннях → Загальні: спершу 200, а 0 вимикає історію.
logs/ Файли журналів: див. Журнали.
downloads.json Незавершені завантаження, щоб вони продовжилися після перезапуску.
setup.json Відповіді майстра налаштування, поки завантажуються його файли, щоб після перезапуску повернутися до майстра.
update-check.json Коли програма востаннє питала GitHub про найновішу версію, що знайшла і про яку версію востаннє вам повідомила, щоб після перезапуску не повідомляти знову. Див. Перевіряти оновлення.
remote-desktop.token Linux у Wayland: дозвіл робочого столу натискати Ctrl+V для Dictum. Якщо його видалити, робочий стіл спитає знову.
tray-icons/ Linux: зображення значка в треї.
dictum.sock Windows: сокет, через який програма для робочого столу й команди dictum спілкуються з демоном, поки той працює. У Linux це $XDG_RUNTIME_DIR/dictum.sock.

config.json

config.json зберігає всі налаштування в одному файлі JSON. Більшість із них можна змінити в Налаштуваннях; сам файл знадобиться для того, що зручніше набрати, скопіювати чи зберегти в резервній копії.

Приклад

У цьому файлі два профілі. dictate записує, поки ви тримаєте клавіші, розпізнає українську й англійську і перед вставленням пропускає текст через обробник llm — мовну модель за адресою http://localhost:8080/v1. toggle починає запис після першого натискання, закінчує після другого й вставляє текст так, як його почув Whisper.

{
  "schemaVersion": 1,
  "general": {
    "historySize": 200,
    "sounds": true,
    "pasteDelayMs": 150,
    "overlay": {
      "enabled": true,
      "position": "bottom",
      "size": "medium",
      "opacity": 1.0,
      "palette": "aurora"
    }
  },
  "stt": {
    "local": {
      "type": "whisper-local",
      "model": "ggml-large-v3-turbo-q8_0.bin",
      "vad": true,
      "vadModel": "ggml-silero-v6.2.0.bin",
      "runtime": "auto"
    }
  },
  "processors": {
    "llm": {
      "type": "llm",
      "baseUrl": "http://localhost:8080/v1",
      "model": "qwen3-4b",
      "prompt": "cleanup",
      "apiKey": "secret:dictum-processor-llm",
      "timeoutMs": 15000,
      "onError": "passthrough"
    }
  },
  "profiles": [
    {
      "id": "dictate",
      "name": "Dictate",
      "hotkey": "Ctrl+Alt+Space",
      "mode": "PushToTalk",
      "stt": "local",
      "language": "uk, en",
      "vocabulary": ["Dictum", "Whisper", "llama.cpp"],
      "pipeline": ["llm"],
      "output": "paste"
    },
    {
      "id": "toggle",
      "name": "Toggle",
      "hotkey": "Ctrl+Alt+D",
      "mode": "Toggle",
      "stt": "local",
      "language": "uk, en",
      "pipeline": [],
      "output": "paste"
    }
  ]
}

Коли Dictum зберігає файл, він записує всі налаштування, зокрема типові значення, яких у прикладі немає, тож ваш файл буде довшим.

Що означають ключі

Пояснення стоять тут, під файлом, бо приклад — звичайний JSON, який можна скопіювати як є.

schemaVersion
Версія будови файлу. Dictum 0.5 пише 1; не змінюйте її.
general

Налаштування для всіх профілів.

  • historySize: скільки останніх диктувань зберігати; 0 — жодного.
  • sounds: короткий сигнал, коли запис починається і закінчується.
  • pasteDelayMs: скільки Dictum чекає після натискання Ctrl+V, перш ніж повернути в буфер обміну те, що там було, від 0 до 5000 мілісекунд.
  • overlay: індикатор диктування, який малює програма для робочого столу: enabled, position (bottom або top), size (small, medium або large), opacity (від 0.3 до 1.0) і palette (aurora, ember або mist).
  • Немає в прикладі: audioDevice — назва мікрофона, а без неї береться типовий мікрофон системи; uiLanguage — "en" або "uk", а без нього мова інтерфейсу така, як у системі; injector — як Dictum натискає Ctrl+V у Wayland: auto у Sway та Hyprland пробує wtype, потім ydotool, потім портал RemoteDesktop, а деінде — портал, потім ydotool; terminalApps — програми, які отримують Ctrl+Shift+V, за назвою процесу чи класом вікна, у Windows і X11. І checkForUpdates: true, типове значення, дозволяє програмі раз на день питати GitHub про найновішу версію; false це вимикає.
stt

Постачальники розпізнавання мовлення. Кожен має ідентифікатор на ваш вибір, тут local, і профілі посилаються на нього.

  • type: whisper-local запускає Whisper на вашому комп'ютері; openai-compatible надсилає запис на сервер, з baseUrl, model, apiKey і timeoutMs (60000, якщо не вказати).
  • model: назва файлу моделі в теці models або повний шлях.
  • vad і vadModel: детектор голосової активності, який знаходить мовлення в записі, тож запис без мовлення не дає тексту.
  • runtime: auto бере відеокарту, коли може, а інакше — процесор; cpu завжди працює на процесорі.
  • Немає в прикладі: threads — скільки потоків процесора бере Whisper; 0 вибирає за кількістю ядер.
processors

Кроки, які змінюють текст після розпізнавання, кожен з ідентифікатором на ваш вибір, тут llm. Профіль виконує ті, які називає його pipeline. Про обробник, якого не виконує жоден профіль, Dictum попереджає.

  • type: llm надсилає текст мовній моделі; replace застосовує ваші правила заміни, які лежать у rules. Див. Ваші слова й правила заміни.
  • baseUrl: адреса сервера з версією API, наприклад /v1. Підійде будь-який сервер з OpenAI chat API: llama-server, llama-swap, Ollama.
  • model: назва моделі на цьому сервері.
  • prompt: cleanup — вбудований запит, що виправляє пунктуацію й описки. Будь-яка інша назва читає prompts/<name>.md у теці налаштувань.
  • apiKey: звідки береться ключ сервера: див. Ключі API у сховищі ключів.
  • timeoutMs: скільки Dictum чекає на відповідь, у мілісекундах: 4000, якщо не вказати. Майстер налаштування записує 15000.
  • onError: що робити, коли сервер не відповів або відповідав задовго чи ключ не вдалося прочитати: passthrough вставляє текст без змін цього обробника, fail вважає диктування невдалим.
  • Немає в прикладі: temperature — від 0 до 2, 0.2, якщо не вказати; preserveText — відкидає відповідь, яка переписує текст замість виправити його, і без цього ключа ввімкнений для запиту cleanup; maxTokens — найдовша відповідь, а без цього ключа вона росте разом із текстом.

Чищення тексту мовною моделлю налаштовує це крок за кроком.

profiles

Ваші профілі, по порядку. Команди dictum беруть перший, якщо ви не назвали інший через --profile.

  • id: ідентифікатор профілю, неповторний у файлі. name — те, що показують «Налаштування»; меню трею, підказка його значка й команди dictum беруть id.
  • hotkey: комбінація клавіш, наприклад Ctrl+Alt+Space: будь-які з Ctrl, Alt, Shift і Super та ще одна клавіша. Кожен профіль потребує власної комбінації.
  • mode: PushToTalk записує, поки ви тримаєте клавіші; Toggle починає після першого натискання й закінчує після другого.
  • stt: ідентифікатор запису в stt.
  • language: код однієї мови, наприклад uk; список, наприклад uk, en, де перша — основна мова; або auto, щоб визначати будь-яку мову. Див. Мови.
  • vocabulary: ваші слова, які Whisper має писати саме так, як ви їх записали. Ваш власний запит до LLM отримує їх через {{vocabulary}}; вбудовані запити — ні.
  • pipeline: ідентифікатори обробників, по порядку. Якщо список порожній, текст вставляється так, як його почув Whisper.
  • output: paste кладе текст у буфер обміну, натискає Ctrl+V і повертає в буфер те, що там було; clipboard залишає текст у буфері обміну. type з попередніх версій не підтримується: такий профіль вставляє текст, а Dictum попереджає про це.
  • Немає в прикладі: pasteShortcut — auto, ctrl+v або ctrl+shift+v, для термінала у Wayland; sttPrompt — підказка для Whisper на додачу до слів.

Як редагувати вручну

Щоб відкрити файл у редакторі, виконайте:

dictum config edit

Команда відкриває редактор, названий у VISUAL або EDITOR, а якщо їх немає — Блокнот у Windows і типову програму для цього файлу в Linux. Коли редактор закривається, вона перевіряє файл. У Linux типова програма може повернути керування ще до того, як ви збережете файл, тож перевірте ще раз самі:

dictum config validate

Демон і програма для робочого столу помічають, що файл змінився, і завантажують його. Якщо в новому файлі є помилка, вони залишаються з останніми робочими налаштуваннями, а dictum config validate пише, що не так: див. Розв'язання проблем.

Dictum читає коментарі // і зайві коми в кінці, але відкидає їх, щойно наступного разу збереже файл із Налаштувань, майстра чи команди dictum.

Ключі API у сховищі ключів

Ключ API, який ви вводите в Налаштуваннях, у майстрі налаштування чи в dictum init, не потрапляє в config.json. Dictum кладе його в системне сховище ключів, а у файл записує посилання на нього, наприклад "apiKey": "secret:dictum-processor-llm".

Windows
Диспетчер облікових даних (Credential Manager), розділ «Облікові дані Windows», загальний запис із назвою dictum:<name>, наприклад dictum:dictum-processor-llm.
Linux
Secret Service: GNOME Keyring або KWallet. Запис має мітку Dictum: <name> і атрибути application = dictum та name = <name>.

Назва — це dictum-processor-<id> для ключа обробника і dictum-stt-<id> для ключа сервера розпізнавання, де <id> — його ідентифікатор у config.json.

apiKey має три форми:

  • secret:<name> читає ключ зі сховища ключів;
  • env:<VARIABLE>, наприклад env:OPENAI_API_KEY, читає його зі змінної середовища, яку бачить демон;
  • будь-що інше — це сам ключ, відкритим текстом. Про це попереджають dictum doctor і dictum config validate.

Керувати ключами з термінала:

dictum secret set dictum-processor-llm      # питає ключ, не показуючи його на екрані
dictum secret check dictum-processor-llm    # каже, чи ключ збережено, але ніколи його не виводить
dictum secret delete dictum-processor-llm

Після видалення Dictum ключі залишаються в сховищі: як видалити й їх, описано в розділі Почати з нуля. Якщо сховище ключів не відповідає, див. Розв'язання проблем.

Журнали

Журнали лежать у теці logs всередині теки даних: %LOCALAPPDATA%\Dictum\logs у Windows, ~/.local/share/dictum/logs у Linux.

dictum.log
Демон і команди dictum.
dictum-gui.log
Програма для робочого столу разом із тим, що виводить запущений нею демон.

Коли файл перевищує 1 МБ, Dictum перейменовує його, dictum.log на dictum.log.1, і починає новий. Зберігаються три старіші файли, від .1 до .3.

Журнали показують, що робив Dictum і що пішло не так, але не те, що ви сказали: надиктований текст записується лише як його довжина, наприклад <42 chars>. Сам текст пише тільки --verbose: dictum daemon --verbose виводить подробиці, зокрема надиктований текст, у термінал і в журнал. На що в журналах звертати увагу, підкаже Розв'язання проблем.

Програми й запуск під час входу

Окрім двох тек, файли Dictum лежать там, куди їх поклав пакет:

Пакет Програми
Інсталятор для Windows %LOCALAPPDATA%\Programs\Dictum
Zip-архів для Windows вибрана вами тека, наприклад C:\Tools\Dictum
AppImage сам файл AppImage
Архів tar.gz ~/.local/lib/dictum, з посиланнями в ~/.local/bin і пунктом меню ~/.local/share/applications/dictum.desktop
Пакет для Arch /opt/dictum, з посиланнями в /usr/bin

А ось де лежать записи запуску під час входу й запис для порталу робочого столу:

Що Де
Запуск під час входу у Windows значення Dictum у HKCU\Software\Microsoft\Windows\CurrentVersion\Run
Запуск під час входу в Linux, програма для робочого столу ~/.config/autostart/dictum.desktop
Запуск під час входу в Linux, лише демон користувацький модуль systemd ~/.config/systemd/user/dictum.service
Запис для порталу у Wayland ~/.local/share/applications/dev.dictum.Dictum.desktop, прихований у меню

Обидва види запуску під час входу пояснює посібник Запуск під час входу.

Інші теки

Ці змінні середовища вказують Dictum на інші місця, для другого набору налаштувань чи для скрипта:

DICTUM_CONFIG_DIR
Тека налаштувань.
DICTUM_DATA_DIR
Тека даних.
DICTUM_CONFIG
Файл налаштувань замість config.json. Параметр --config команди dictum має перевагу над нею.

Задайте їх і для програми для робочого столу: запущений нею демон успадковує її середовище. Запис запуску під час входу їх не передає.