AI-система голосового управління інтерфейсами для людей з ОВЗ

Проектуємо та впроваджуємо системи штучного інтелекту: від прототипу до production-ready рішення. Наша команда поєднує експертизу в машинному навчанні, дата-інжинірингу та MLOps, щоб AI працював не в лабораторії, а в реальному бізнесі.
Показано 1 з 1Усі 1566 послуг
AI-система голосового управління інтерфейсами для людей з ОВЗ
Середній
~2-4 тижні
Часті запитання

Напрямки AI-розробки

Етапи розробки AI-рішення

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1285
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1122
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    859

Розробка AI-голосового управління інтерфейсами для людей з обмеженими можливостями Голосове управління — основний засіб введення для людей з порушеннями опорно-рухового апарату, людей з вадами зору, літніх користувачів з когнітивними особливостями. Стандарти: WCAG 2.1 критерій 3.3.7, EN 301549, ГОСТ Р 52872-2019. ### Архітектура голосового управління```python

from faster_whisper import WhisperModel from openai import AsyncOpenAI import asyncio import pyaudio import numpy as np

class AccessibilityVoiceController: def init(self, app_commands: dict): self.stt = WhisperModel("base", device="cuda", compute_type="int8") self.llm = AsyncOpenAI() self.commands = app_commands # {"открыть профиль": handler_fn, ...} self.wake_word = "помощник"

async def listen_and_execute(self):
    audio_stream = self._open_mic_stream()

    while True:
        audio_chunk = audio_stream.read(frames=16000 * 3)  # 3 секунды
        audio_np = np.frombuffer(audio_chunk, dtype=np.int16).astype(np.float32) / 32768.0

        segments, _ = self.stt.transcribe(audio_np, language="ru", vad_filter=True)
        text = " ".join(s.text for s in segments).strip().lower()

        if not text or self.wake_word not in text:
            continue

        command_text = text.split(self.wake_word, 1)[-1].strip()
        await self.process_command(command_text)

async def process_command(self, text: str):
    # Точное совпадение
    for cmd, handler in self.commands.items():
        if cmd in text:
            await handler()
            await self.speak_feedback(f"Выполняю: {cmd}")
            return

    # Нечёткое распознавание через LLM
    intent = await self.classify_intent_with_llm(text)
    if intent and intent in self.commands:
        await self.commands[intent]()
        await self.speak_feedback(f"Понял, выполняю")
    else:
        await self.speak_feedback("Не понял команду. Повторите, пожалуйста.")

async def classify_intent_with_llm(self, text: str) -> str | None:
    available = list(self.commands.keys())
    response = await self.llm.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{
            "role": "system",
            "content": f"Определи, какой команде соответствует фраза пользователя. Доступные команды: {available}. Верни только название команды или 'null'."
        }, {
            "role": "user",
            "content": text
        }]
    )
    result = response.choices[0].message.content.strip()
    return result if result != "null" else None

### TTS зворотний зв'язокpython import edge_tts import tempfile import pygame

async def speak_feedback(text: str, voice: str = "ru-RU-DmitryNeural"): """Озвучиваем системный ответ через Edge TTS (бесплатно)""" tts = edge_tts.Communicate(text=text, voice=voice, rate="+10%")

with tempfile.NamedTemporaryFile(suffix=".mp3", delete=False) as f:
    await tts.save(f.name)
    pygame.mixer.music.load(f.name)
    pygame.mixer.music.play()
    while pygame.mixer.music.get_busy():
        await asyncio.sleep(0.1)

### Навігація по веб-інтерфейсуpython

Команды для веб-навигации через Playwright/Selenium

class WebAccessibilityCommands: COMMAND_MAP = { "перейти в профиль": lambda p: p.goto("/profile"), "открыть настройки": lambda p: p.goto("/settings"), "увеличить шрифт": lambda p: p.evaluate("document.documentElement.style.fontSize = '120%'"), "уменьшить шрифт": lambda p: p.evaluate("document.documentElement.style.fontSize = '90%'"), "нажать кнопку сохранить": lambda p: p.click("button:has-text('Сохранить')"), "прокрутить вниз": lambda p: p.keyboard.press("End"), "прочитать страницу": lambda p: read_page_content(p), "заполнить поле имени": fill_name_field, } ### Сумісність зі скріндрідерами Голосове керування доповнює (не замінює) скринрідери. Інтеграція через ARIA live regions:html

<button id="voice-toggle" aria-label="Голосовое управление" aria-pressed="false"

<span class="mic-icon" aria-hidden="true"></span>
<span class="sr-only">Активировать голосовое управление</span>
```### Доступність та персоналізація | Потреба Рішення | |------------|---------| | Порушення мови / заїкуватість | Збільшений час очікування (10 сек), повторення | | Акцент/діалект | Fine-tuned Whisper чи Яндекс SpeechKit | | Повільне мовлення | Зменшена швидкість VAD threshold | | Когнітивні особливості | Прості однослівні команди, підказки | Робота у шумі | DeepFilterNet перед STT Терміни: голосове керування для одного веб-програми — 2–3 тижні. Система, що кастомізується з профілями користувачів і навчанням під акцент — 6–8 тижнів.