Ця сторінка описує 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має перевагу над нею.
Задайте їх і для програми для робочого столу: запущений нею демон успадковує її середовище. Запис запуску під час входу їх не передає.