Tag: интеграция ai

  • AI-аватар: як додати обличчя голосовому помічнику та уникнути підводних каменів

    AI-аватар: як додати обличчя голосовому помічнику та уникнути підводних каменів

    Інтеграція AI-аватара в існуючий голосовий ІІ-адміністратор Айка — це не просто додавання обличчя, а цілий ланцюжок технічних викликів. Ми прагнули зберегти поточну архітектуру на Yandex Realtime, щоб новий сервіс лише анімував губи під вже згенерований звук. У процесі тестування Simli та Anam виявилися нюанси з паузами перед відповіддю, запуском відео на iPhone та стабільністю мобільного інтернету. А при створенні другого персонажа, Єви, стало очевидно, що переконливість нейронки залежить не тільки від самого обличчя, а й від контексту.

    Наш голосовий рушій вже функціонував, тому завдання полягало виключно в анімації обличчя. Айка спілкується з відвідувачами сайту безпосередньо в браузері через WebSocket, який підключений до нашого сервера на FastAPI, а той, у свою чергу, тримає сесію з Yandex Realtime. Це забезпечує режим «мова в мову», виключаючи необхідність в окремих ланцюжках розпізнавання, текстової моделі та синтезу.

    Сервер передає браузеру нестиснений звук у форматі PCM16 на 24 кГц частинами (pcm_chunk), і саме під цей потік потрібно було синхронізувати міміку аватара.

    Вибір платформи для AI-аватара: Simli vs Anam

    Обидва протестовані сервіси — Simli та Anam — пропонують режим, де користувач надає свій аудіопотік, а сервіс генерує відео з анімованим обличчям, синхронізованим зі звуком, повертаючи медіа по WebRTC. Таким чином, Яндекс продовжує генерувати мову, а сервіс аватара відповідає за візуальну складову.

    Технічні аспекти інтеграції звуку

    • Частота дискретизації: Яндекс видає звук на 24 кГц. Simli вимагає 16 кГц, Anam також був налаштований на 16 кГц, хоча підтримує й інші формати.
    • Обробка аудіо-чанків: Звук надходить шматками. Щоб уникнути артефактів на стиках, дробова позиція та останній семпл переносяться в наступний чанк. Це забезпечує плавність анімації, хоча якість перерахунку частоти без повноцінного фільтра ще потребує покращення.

    Безпека та керування сесіями

    Ключ сервісу не потрапляє в браузер. Сторінка запитує у нашого сервера короткочасний токен сесії через POST /voice/avatar-session. Сервер перевіряє origin та обмежує видачу токенів: 6 на годину на IP та 30 на годину всього.

    Якщо токен не отримано або відео не запускається, сторінка перемикається в звичайний голосовий режим. На запит токена відводиться 8 секунд, на запуск SDK — 15. Важливо, що успішний запуск SDK не гарантує негайної появи першого кадру; обличчя тут — доповнення, а не критична функція.

    Управління станом аватара в Anam

    Anam надає дві ключові команди:

    • endSequence(): викликається після надсилання останнього аудіофрагмента репліки.
    • interruptPersona(): зупиняє поточну мову аватара при перебиванні, після чого також викликається endSequence().

    Порівняння Simli (старе покоління) та Anam Cara-4

    Ми порівнювали доступні нам версії: Simli минулого покоління та Anam Cara-4. Це не вичерпне порівняння всіх можливостей, а вибір під конкретну задачу.

    Параметр Simli (минуле покоління) Anam Cara-4
    Міміка Губи рухаються, решта міміки обмежена Моргає, посміхається, видно зуби, нахиляє голову
    Створення обличчя З фото через API минулого покоління З одного фото, доступне пробне відео

    Суб’єктивно, Anam показав більш живу та природну міміку. Для нас це стало вирішальним фактором. Далі ми зіткнулися з низкою специфічних проблем.

    Особливості відтворення медіа

    • Звук: У Simli звук відтворювався через окремий аудіоелемент, в Anam — через той самий відеоелемент. Це означає, що відеоелемент Anam не можна залишати muted, інакше аватар буде «говорити» беззвучно.
    • Роздільна здатність: Відео часто починалося з низької роздільної здатності (384×576) і лише через кілька секунд перемикалося на високу (768×1152). Опція sessionOptions.videoQuality: "high" допомагала, але не гарантувала старт з високої якості.
    • Затримка генерації кадрів: Anam потрібно отримати 0.8 секунди аудіо, перш ніж почати генерацію кадрів. Це не завжди дорівнює 0.8 секунди очікування в реальному часі, оскільки звук може надходити швидше, ніж відтворюється.

    Управління мікрофоном та сесіями

    • Придушення відлуння: На телефоні, поки Айка говорить, мікрофон вимикається, щоб уникнути захоплення її голосу з динаміка. На ПК мікрофон активний, і при початку мови користувача (подія barge_in від Yandex Realtime) аватар зупиняє поточну мову.
    • Зайнятий слот сесії: На безкоштовному тарифі доступна одна одночасна сесія. При падінні браузера слот міг залишатися зайнятим. Запит GET /v1/sessions/concurrency допомагає діагностувати зайнятість слотів.
    • Скасування підключення: Якщо користувач натискає «стоп» під час підключення відео, необхідно коректно завершити асинхронні операції, щоб не залишити непотрібну сесію. Для цього введено лічильник поколінь videoGen.

    Проблеми з Safari на iPhone

    На iPhone в Safari відео не запускалося. Гіпотеза пов’язана з правилами автозапуску. Попередній виклик play() на відеоелементі з тимчасовою подачею потоку з canvas та зняттям muted допоміг у тестовому прогоні, але не є універсальним рішенням.

    Довга пауза перед відповіддю аватара, який мовчки дивиться на користувача, відчувається набагато важче, ніж без неї. Спочатку поріг тиші (VAD) був встановлений на 2.2 секунди, щоб Айка не перебивала користувачів, які диктують інформацію з паузами.

    Ми перенесли логіку телефонного мосту на сайт: у звичайній розмові поріг 1500 мс, при диктуванні — 2200 мс. Це дозволяє динамічно регулювати чутливість VAD. Налаштування застосовуються через session.update без перепідключення.

    AI-аватар: як додати обличчя голосовому помічнику та уникнути підводних каменів — illustration 2

    Створення другого персонажа: Єва

    Для адміністратора студії Єви ми зіткнулися з проблемою «стокової блондинки» на порожньому тлі. Переломний момент настав, коли за спиною з’явився інтер’єр: теплі лампи, полиці, рослини, розмитий дальній план. Це зробило образ набагато переконливішим, перетворивши «каталог» на «людину на робочому місці».

    Деталі створення фону та портрета

    • Фон: Використали готовий інтер’єр у нашій стилістиці, прибравши людей генератором.
    • Вирізання персонажа: Єву вирізали засобами macOS Vision (VNGeneratePersonSegmentationRequest з рівнем .accurate). Край маски звужували та пом’якшували для усунення ореолу.
    • Масштаб: Важливо дотримуватися масштабу предметів на тлі, щоб уникнути комічних ситуацій (наприклад, гігантська кружка за спиною). Фон брали тільки вище стільниці та розмивали під портретний об’єктив.
    • Роздільна здатність: Для Cara-4 рекомендований квадратний вихідний файл від 1152×1152. Чисте збільшення Real-ESRGAN ×4 робило шкіру занадто гладкою. Краще виглядала комбінація нейромережевого збільшення зі звичайним масштабуванням, підвищенням різкості та додаванням зерна.

    Озвучення Єви

    Для Єви обирали голос із сімейства LiveTTS Яндекса. У SpeechKit API v3 модель вибирається через "model": "livetts", а голос та амплуа передаються через hints. Для довгих текстів текст розбивався на речення та синтезувався окремо.

    З семи варіантів озвучення однієї фрази вибрали голос vera в амплуа casual. Довелося переписати фразу, оскільки синтез стабільно помилявся з наголосом.

    Запис відеороликів з аватаром

    Ролик Єви записували через той самий рушій анімації, що й живий дзвінок, використовуючи MediaRecorder прямо з video.srcObject (відео та звук разом, WebM з VP9 та Opus). Для коректного старту запису потік попередньо «будили» секундою тиші, щоб ролик не починався з чорного екрана.

    Часто задавані питання

    Що таке AI-аватар і як він працює?

    AI-аватар — це цифровий персонаж, здатний анімувати міміку та рухи губ відповідно до наданого аудіо. Він використовує нейромережі для створення реалістичного візуального образу, який синхронізується з мовленням, роблячи взаємодію більш природною та привабливою.

    Чи можна використовувати свій голос для AI-аватара?

    Так, більшість платформ, таких як Anam і Simli, дозволяють використовувати власний голосовий рушій або попередньо записаний звук. Аватар анімуватиме обличчя під цей аудіопотік, зберігаючи впізнаваність вашого бренду або персони.

    Які основні складнощі при інтеграції AI-аватара?

    Серед основних складнощів — синхронізація аудіо та відео, обробка аудіо-чанків, оптимізація затримок, забезпечення стабільної роботи на різних пристроях (особливо мобільних), а також створення переконливого візуального образу, який відповідає контексту та бренду.

    Як фон впливає на сприйняття AI-аватара?

    Фон відіграє критичну роль у створенні переконливого образу. Порожній або невідповідний фон може зробити аватар неприродним. Інтер’єр, що відповідає стилістиці персонажа або бренду, значно підвищує реалістичність та довіру до аватара, створюючи відчуття присутності «людини на робочому місці».

    Скільки коштує створення AI-аватара?

    Вартість створення AI-аватара може сильно варіюватися залежно від обраної платформи, рівня кастомізації, деталізації міміки та необхідності в унікальних функціях. Деякі сервіси пропонують моделі підписки, тоді як інші можуть стягувати плату за кожну хвилину згенерованого відео або за розробку унікального персонажа.

    Висновок

    Інтеграція AI-аватара — це потужний інструмент для підвищення залученості користувачів, але вимагає глибокого технічного опрацювання. Від вибору платформи до тонкого налаштування фонів і пауз — кожен крок впливає на кінцевий результат. Ми побачили, що нейронки здатні вдихнути нове життя в голосові інтерфейси, але тільки при уважному ставленні до деталей.

    Якщо ви хочете масштабувати ваш контент і створити AI відео для реклами, розгляньте можливості нейро-продакшену за підпискою. Це дозволяє генерувати сотні роликів, будь то AI UGC для криптопроекту або фабрика ІІ роликів для e-commerce. Ми готові допомогти вам у цьому! Зв’яжіться з нами, щоб дізнатися, як AI контент продакшен може трансформувати ваш бізнес.