Документація · генерується із застосунку
Кожна сторінка, блок, іконка і слово — в одному місці.
Це не опис «як має бути», а зліпок того, що зібрано: 11 маршрутів, 8 голосів у каталозі, 138 статей словника, 20 токенів, 21 іконок. Значення токенів читаються з живого CSS — перемкніть тему й вони зміняться.
Головнаодин скрол із шести сцен/Студіякабінет, вісім розділів/studioСловник наголосіввідкритий словник наголосів/dictionaryАудіокарткишерабельна аудіокартка/cardЦінитарифи й калькулятор/pricingДля бізнесуціна за запитом/businessAPI та інтеграціїREST · MCP · автоматизації · телефонія/integrationsДиктораммаркетплейс для дикторів/actorsДокументація сайтуця сторінка/docs
Архітектура
Три частини: сайт, API і база.
apps/web · Next 16
App Router11 маршрутів, усі пререндерені статичноlib/swarm.tsWebGL-рій: 5 200 частинок, шейдери на точкахlib/stage.tsxгід, репліки, дії з бази знань, тостиcomponents/chromeшпиль, drawer, гід, переходи між сторінкамиstyles/токени + перенесений CSS, сторінкові файли скоупеніapps/api · NestJS 11
modules/voicesкаталог голосів, ціна за моделлюmodules/dictionaryпошук, зведення, stress/checkmodules/plansтарифи, пакети кредитів, розрахунокmodules/generationsчерга синтезу, списання кредитів у транзакціїprisma/схема з 9 моделей, міграції, сідерPostgreSQL 16
Voiceголос, провайдер, тарифна модель, медіаDictionaryEntryслово, наголос, категорія, помилкаPlan / CreditPackтарифи й пакетиUser / Projectакаунт і проєктиGeneration / ApiKeyчерга й ключі з бюджетамиСторінки й блоки
Що всередині кожного маршруту.
/один скрол із шести сцен6 секцій
| 1 | Студія | #студія |
| 2 | Голоси | #голоси |
| 3 | Live | #live |
| 4 | API · MCP | #api-mcp |
| 5 | Ціни | #ціни |
| 6 | Старт | #старт |
/studioкабінет, вісім розділів8 секцій
| 1 | Студія | #студія |
| 2 | Голоси | #голоси |
| 3 | Словник | #словник |
| 4 | Історія | #історія |
| 5 | Live | #live |
| 6 | Ключі | #ключі |
| 7 | Білінг | #білінг |
| 8 | Запис | #запис |
/dictionaryвідкритий словник наголосів5 секцій
| 1 | Пошук | #пошук |
| 2 | Карта наголосів | #карта-наголосів |
| 3 | Типові помилки | #типові-помилки |
| 4 | API | #api |
| 5 | Старт | #старт |
/cardшерабельна аудіокартка3 секцій
| 1 | Картка | #картка |
| 2 | Зробити свою | #зробити-свою |
| 3 | Старт | #старт |
/pricingтарифи й калькулятор5 секцій
| 1 | Тарифи | #тарифи |
| 2 | Калькулятор | #калькулятор |
| 3 | Порівняння | #порівняння |
| 4 | Що входить | #що-входить |
| 5 | Старт | #старт |
/businessціна за запитом8 секцій
| 1 | Для бізнесу | #для-бізнесу |
| 2 | Кому | #кому |
| 3 | Що входить | #що-входить |
| 4 | Як рахуємо | #як-рахуємо |
| 5 | Процес | #процес |
| 6 | Кейси | #кейси |
| 7 | Запит | #запит |
| 8 | Старт | #старт |
/integrationsREST · MCP · автоматизації · телефонія6 секцій
| 1 | Огляд | #огляд |
| 2 | REST API | #rest-api |
| 3 | MCP | #mcp |
| 4 | Автоматизації | #автоматизації |
| 5 | Телефонія | #телефонія |
| 6 | Старт | #старт |
/actorsмаркетплейс для дикторів7 секцій
| 1 | Дикторам | #дикторам |
| 2 | Як це працює | #як-це-працює |
| 3 | Відкриті сесії | #відкриті-сесії |
| 4 | Спробувати запис | #спробувати-запис |
| 5 | QA і вимоги | #qa-і-вимоги |
| 6 | Заробіток | #заробіток |
| 7 | Заявка | #заявка |
/loginвхід і реєстрація1 секцій
| 1 | Вхід | #вхід |
/legalконспект політики1 секцій
| 1 | Конфіденційність | #конфіденційність |
/docsця сторінка8 секцій
| 1 | Карта сайту | #карта-сайту |
| 2 | Архітектура | #архітектура |
| 3 | Сторінки | #сторінки |
| 4 | Іконки | #іконки |
| 5 | Токени | #токени |
| 6 | Гід | #гід |
| 7 | API | #api |
| 8 | Чекліст | #чекліст |
Іконки
Один набір: 20×20, лінія 1.6, кругла кришка.
Actors20×20
Api20×20
Business20×20
Card20×20
Chevron20×20
Clock20×20
Close20×20
Dictionary20×20
Docs20×20
HandsFree20×20
Home20×20
Mic20×20
MoonSun20×20
Phone20×20
Play20×20
Pricing20×20
Record20×20
Send20×20
Sound20×20
Studio20×20
User20×20
Токени тем
Значення — з живого CSS.
Активна тема: dark. Перемкніть її в меню — таблиця перерахується.
| Токен | Значення | Де застосований |
|---|---|---|
--bg | — | тло сторінки |
--ink | — | основний текст і заголовки |
--ink-2 | — | другорядний текст |
--muted | — | мітки, підписи, mono-текст |
--panel | — | модалки, попапи, drawer |
--panel-2 | — | вкладені панелі |
--ember | — | акцент: наголоси, кнопки, іскри |
--ember-2 | — | глибокий вогонь у градієнтах |
--ember-3 | — | світлий блик |
--ember-ink | — | текст на янтарній кнопці |
--bronze | — | наголос у логотипі |
--bronze-2 | — | бронзові мітки у світлій темі |
--ok | — | успіх, статус ON |
--line | — | волосяні лінії, межі карток |
--line-2 | — | активні межі, фокус |
--glass | — | скло першого рівня |
--glass-2 | — | скло другого рівня, hover |
--glass-3 | — | найщільніше скло |
--glow | — | сяйво навколо акценту |
--glow-2 | — | м'яке сяйво карток |
Гід і голос
База знань і голосові команди.
У базі 24 відповідей на 3 мовах. Гід також виконує дії: прокрутити до секції, перемкнути тему чи мову, відкрити панель студії.
| Ключі запиту | Відповідь |
|---|---|
що такехто вищо цеhominгомін | HOMIN — студія озвучки з власними українськими голосами. Наголоси — як у словнику, відповідь у розмові — без паузи. Усе, що на цій сторінці, — і є продукт. |
коштцінтарифбезкоштскільки | Безкоштовно: 10 000 символів на місяць і шість голосів без картки. Pro — $19 за 300 000 символів і редактор наголосів, Business — $99 із HOMIN Live і API. Показую ціни. |
1 млнмільйонпорахуй | Мільйон символів — близько 18 годин аудіо. Окремо це 20 000 кредитів ≈ $100, тож вигідніше Business за $99 із 2 млн у пакеті. Поставив повзунок. |
кредит | Кредити — єдина валюта API і студії: $10 = 2 000 кредитів. Neo — 6 за 1 000 символів, Pro — 20, Live — від 12 за хвилину. Не згорають 12 місяців. |
claudecursormcpchatgptагентасистент | HOMIN — це MCP-сервер: один рядок у конфігурації Claude Desktop, Claude Code чи Cursor, і ваш асистент уміє озвучувати українською, перевіряти наголоси й обирати голоси. Показую. |
конфіг | {"mcpServers":{"homin":{"command":"npx","args":["-y","@homin/mcp"],"env":{"HOMIN_API_KEY":"hm_live_…"}}}} — далі асистент бачить інструменти tts.speak, stress.check, voices.list, usage.get. |
apisdkopenaiкодінтегрпідключ | API сумісний з OpenAI SDK: baseURL → https://api.homin.ua/v1, модель → homin-pro-1. Решта коду лишається. Під який стек показати? |
node | Node.js: створіть клієнт OpenAI з baseURL https://api.homin.ua/v1 і викличте audio.speech.create з моделлю homin-pro-1. Відкрив приклад. |
python | Python: OpenAI(base_url="https://api.homin.ua/v1") і client.audio.speech.create(model="homin-pro-1", voice="solomiia", input=…). Відкрив приклад. |
curl | curl: POST https://api.homin.ua/v1/audio/speech із Bearer-ключем і JSON {model, voice, input} — у відповідь mp3. Відкрив приклад. |
n8nzapiermakeвебхукавтомат | Є модулі для n8n, Make і Zapier: «новий текст → аудіо в Drive чи Telegram» збирається за п'ять хвилин. Вебхуки: generation.completed, budget.threshold. |
телефонtwiliosipliveколцентрдзвінlivekitpipecat | HOMIN Live відповідає потоком — перша фраза за ~300 мс. Підключається до Twilio, SIP/Asterisk, LiveKit і Pipecat. Показати демо дзвінка? |
демо дзвінкатак, демо | Відкриваю «Розмову»: напишіть репліку клієнта — відповім голосом без паузи. У прототипі це імітація, у продукті — потік. |
коштує livelive кошт | Live рахується за хвилини: від 12 кредитів за хвилину, тобто близько $0,06. У Business входить разом із телефонією й бюджетами API. |
голосголосисоломіяостапмирославабогданяриналев | Шість голосів, записаних у студії з дикторами: Соломія, Остап, Мирослава, Богдан, Ярина, Лев. Права викуплені — комерційне використання без обмежень. Натисніть будь-який. |
власнийбрендсвій голосдиктор | Записуємо вашого диктора в Києві або Варшаві — голос стає ексклюзивним. Або диктор записує речення в нашому застосунку й отримує оплату за кожне. |
наголоспомил | Клацніть на слово в тексті — покажу варіанти, а слово з двома значеннями (за́мок / замо́к) позначу окремо. Виправлення лишиться у словнику проєкту. |
englishангл | Перемикаю на англійську. |
polskiпольськ | Przełączam na polski. |
мов | Українська, англійська, польська — перемикач угорі. Голоси теж трьома мовами, тож один сценарій озвучується для трьох ринків. |
світлтемнтема | Перемикаю тему. |
акаунтреєстрпочатиспробзареєстр | Реєстрація безкоштовна і без картки — приватна бета, доступ протягом кількох днів. Кнопка угорі праворуч. |
правакомерцліценз | Усі голоси записані з дикторами за договором, права викуплені повністю — реклама, книги, відео й продукти без доплат. |
послухатипрограйвідтвори▶ | Вмикаю. |
API
Те, що вже підняв Nest.
Базова адреса http://localhost:4000/v1 у розробці. Каталог у базі — 12 голосів разом зі сторонніми провайдерами.
GET | /v1/health | процес і доступність бази |
GET | /v1/voices | каталог; ?model=neo|pro|live |
GET | /v1/voices/:slug | один голос |
GET | /v1/dictionary | пошук за словом |
GET | /v1/dictionary/stats | кількість статей за категоріями |
POST | /v1/stress/check | розставляє наголоси, омографи — варіантами |
GET | /v1/plans | тарифи |
GET | /v1/credit-packs | пакети кредитів |
GET | /v1/quote | розрахунок як у калькуляторі |
POST | /v1/audio/speech | ставить генерацію в чергу, списує кредити |
GET | /v1/generations | історія |
GET | /v1/usage | баланс і витрати |
Чекліст
Що перевіряємо перед злиттям.
Зелене — на кожній збірці
- типізація без помилок: tsc --noEmit у web і api
- лінт без помилок: правила Next 16 (React Compiler)
- збірка: 11 маршрутів пререндерені статично
- дві теми × три ширини (1440 / 900 / 390)
- жодного запиту до сторонніх хостів у рантаймі — шрифти self-hosted
- аудіо, портрети й відео — власна статика, без data-URI
Ще не зроблено: автентифікація й ключі, воркер синтезу, словники EN/PL, дані сторінок із API.