Журнал: International Journal of Scientific Research in Science, Engineering and Technology (IJSRSET)
Print ISSN: 2395-1990; Online ISSN: 2394-4099
Том: 12, № 3, May–June 2025, с. 717–727
DOI: https://doi.org/10.32628/IJSRSET251296
История статьи: принята 28 May 2025; опубликована 01 June 2025.
Лицензия оригинала: CC BY 4.0 (Creative Commons Attribution 4.0 International).
Данный HTML-файл представляет собой неофициальный перевод статьи на русский язык, выполненный для учебных целей.

РАЗРАБОТКА ГОЛОСОВОГО АССИСТЕНТА НА ОСНОВЕ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА: ПОВЫШЕНИЕ КАЧЕСТВА РАСПОЗНАВАНИЯ РЕЧИ И ВЗАИМОДЕЙСТВИЯ С ПОЛЬЗОВАТЕЛЕМ

Первоисточник: Gupta S., Haider M., Shabbir M. Development of an AI-Powered Voice Assistant: Enhancing Speech Recognition and User Interaction // International Journal of Scientific Research in Science, Engineering and Technology (IJSRSET). 2025. Vol. 12, no. 3. P. 717–727. DOI: https://doi.org/10.32628/IJSRSET251296 .

Shivani Gupta
Assistant Professor, Department of Computer Science, Lingaya’s Vidyapeeth, Фаридабад, Индия

Mohd Haider, Md Shabbir
Department of Computer Science, Lingaya’s Vidyapeeth, Фаридабад, Индия

Искусственный интеллект (Artificial Intelligence, AI) и обработка естественного языка (Natural Language Processing, NLP) существенно изменили взаимодействие человека и компьютера, позволив интеллектуальным системам эффективно обрабатывать голосовые команды. Голосовые ассистенты, такие как Google Assistant, Amazon Alexa и Apple Siri, стали отраслевыми стандартами, однако по-прежнему сталкиваются с рядом проблем: точность реакции в реальном времени, устойчивость к фоновому шуму и ограниченная работа в офлайн-режиме. В статье представлена разработка пользовательского голосового ассистента на основе ИИ с акцентом на улучшение качества «слушания», фильтрации шума и скорости выполнения команд.

Предлагаемая система интегрирует Google Speech Recognition API для преобразования речи в текст в реальном времени, библиотеку pyttsx3 для синтеза речи из текста, а также методы обработки естественного языка для интерпретации и исполнения команд. В отличие от ассистентов, полностью зависящих от облака, система предоставляет офлайн-возможности для базовых команд, обеспечивая гибкость и удобство использования даже в условиях ограниченного соединения с сетью.

Экспериментальные результаты демонстрируют, что разработанный ассистент достигает более 91 % точности распознавания речи в контролируемых условиях при среднем времени выполнения команды менее одной секунды. В качестве направлений развития рассматриваются использование глубоких моделей NLP, реализация детекции ключевого слова (wake-word) в реальном времени и создание графического интерфейса для более удобного взаимодействия. Предложенная система может служить основой для настраиваемых, интеллектуальных и эффективных голосовых ассистентов на базе ИИ.

Ключевые слова: искусственный интеллект, голосовой ассистент, распознавание речи, обработка естественного языка, синтез речи, человеко-компьютерное взаимодействие, офлайн-голосовой ассистент.

1. Введение

1.1. Общие сведения

За последнее десятилетие развитие искусственного интеллекта (AI) и обработки естественного языка (NLP) существенно повлияло на способы взаимодействия людей с компьютерами. Голосовые ассистенты стали ключевым новшеством, обеспечивающим бесконтактную работу и повышающим эффективность как в личном, так и в профессиональном контексте. Ассистенты Google Assistant, Siri и Amazon Alexa задали отраслевые стандарты, предоставляя функции преобразования речи в текст, понимания естественного языка и исполнения команд.

Несмотря на широкое распространение, большинство коммерческих голосовых ассистентов опираются на облачную обработку и требуют постоянного подключения к Интернету для эффективной работы. Такая зависимость влечёт ряд ограничений: задержки при обработке запросов, риски для конфиденциальности из-за передачи и хранения данных на удалённых серверах, а также слабые возможности работы офлайн. Кроме того, вариативность акцентов, наличие фонового шума и ограниченное понимание контекста остаются серьёзными препятствиями на пути к взаимодействию, близкому к человеческому.

В рамках данной работы разрабатывается пользовательский голосовой ассистент на основе ИИ, нацеленный на повышение точности распознавания речи, улучшение отзывчивости и обеспечение офлайн-функциональности для базовых команд. Ассистент спроектирован таким образом, чтобы эффективно работать в условиях нестабильного или отсутствующего интернет-соединения, обеспечивая быстрые и надёжные ответы при сохранении конфиденциальности пользователя.

1.2. Постановка проблемы

Несмотря на серьёзный прогресс в развитии коммерческих голосовых ассистентов, существуют ограничения, которые снижают удобство их практического использования:

Необходимость создания эффективного, настраиваемого и ориентированного на сохранность данных голосового ассистента и определяет мотивацию данного исследования. Предлагаемое решение направлено на устранение перечисленных проблем за счёт интеграции продвинутого распознавания речи, фильтрации шума и возможностей локального исполнения команд.

1.3. Цели исследования

Основная цель работы — разработать и оценить голосового ассистента на основе ИИ с повышенной точностью распознавания речи, устойчивостью к шуму и высокой эффективностью исполнения команд. Конкретные задачи включают:

  1. Разработать точную систему распознавания речи с использованием Google Speech API и методов фильтрации шума.
  2. Реализовать модуль синтеза речи (Text-to-Speech, TTS), способный работать офлайн без подключения к Интернету.
  3. Оптимизировать обработку команд для сокращения времени отклика.
  4. Обеспечить возможность удобного добавления пользовательских команд за счёт настраиваемого фреймворка.
  5. Выполнить сравнительный анализ разработанной системы и существующих голосовых ассистентов с точки зрения точности, скорости и офлайн-возможностей.

1.4. Структура статьи

В последующих разделах подробно рассматриваются компоненты исследования:

2. Обзор литературы

2.1. Эволюция голосовых ассистентов

Концепция голосового взаимодействия с компьютером начала активно развиваться ещё в 1960-е годы — с появления системы IBM Shoebox, способной распознавать ограниченный набор чисел. Дальнейший прогресс в областях искусственного интеллекта, машинного обучения и обработки естественного языка привёл к появлению современных виртуальных ассистентов. Siri (2011), Amazon Alexa (2014), Microsoft Cortana (2015) и Google Assistant (2016) демонстрируют широкую функциональность и отражают эволюцию технологий распознавания речи и ИИ.

Современные ассистенты объединяют распознавание речи, глубинные модели NLP и облачные вычисления для обработки пользовательских команд в реальном времени. Однако большинство решений опирается на онлайн-сервисы, что ограничивает их применимость в офлайн-сценариях. Исследования показывают, что фоновый шум может снижать точность распознавания на 20–30 %, что подчёркивает важность устойчивых методов подавления шума в системах голосовых ассистентов.

2.2. Существующие голосовые ассистенты и их ограничения

В таблице 1 приведены ключевые возможности популярных голосовых ассистентов и основные ограничения их использования.

Таблица 1 – Популярные голосовые ассистенты

Голосовой ассистент Ключевые возможности Ограничения
Google Assistant Облачное NLP, мультиязычная поддержка, обработка запросов в реальном времени Зависимость от Интернета, вопросы конфиденциальности
Amazon Alexa Интеграция с умным домом, облачный ИИ, голосовая коммерция Требуются устройства Echo, полная зависимость от Интернета
Apple Siri Глубокая интеграция в экосистему Apple, защищённая обработка Ограниченные офлайн-возможности, доступна только в iOS / macOS
Microsoft Cortana Ориентация на корпоративный сегмент, интеграция с Office 365 Прекращена как массовый потребительский продукт
Mycroft AI Открытый исходный код, поддержка работы офлайн Низкая точность NLP по сравнению с коммерческими решениями

Анализ показывает, что большинство современных ассистентов опираются на облачную обработку, что ограничивает их использование без подключения к сети и усиливает риски для конфиденциальности. Кроме того, возможности добавления пользовательских команд, как правило, сильно ограничены, что усложняет применение таких ассистентов в специфических областях — медицине, образовании, промышленной автоматизации и т. д.

2.3. Современные методы распознавания речи и NLP

Современные голосовые ассистенты используют системы автоматического распознавания речи (ASR) для преобразования звукового сигнала в текст. Наиболее распространённые решения:

Для интерпретации текста используются методы NLP: определение интента, анализ тональности, извлечение сущностей и понимание контекста. Традиционные подходы на базе Bag-of-Words и TF-IDF постепенно вытесняются трансформерными архитектурами (BERT, GPT, T5), обеспечивающими более глубокое контекстное понимание. Однако такие модели ресурсоёмки, что делает их применение затруднительным в «лёгких» голосовых ассистентах, рассчитанных на локальное выполнение.

2.4. Анализ существующих решений и вклад работы

На основе проведённого анализа можно выделить основные проблемы существующих систем:

  1. Зависимость от Интернета. Получение и обработка команд чаще всего происходит в облаке, что делает ассистенты малоэффективными в условиях слабой или отсутствующей связи.
  2. Слабая поддержка офлайн-функций. Немногие ассистенты предоставляют полноценное локальное исполнение команд, при этом точность NLP в таких режимах обычно ниже.
  3. Высокая задержка. Облачная обработка добавляет сетевые задержки, что негативно сказывается на пользовательском опыте.
  4. Риски утечки данных. Передача голосовых данных на удалённые сервера порождает серьёзные вопросы информационной безопасности и приватности.
  5. Ограниченная возможность кастомизации. В большинстве коммерческих решений пользователь не может свободно добавлять собственные команды и сценарии.

Для устранения указанных недостатков в работе предлагается архитектура голосового ассистента с расширенными возможностями работы офлайн, распознаванием речи в реальном времени и настраиваемым исполнением команд. В отличие от большинства существующих решений, акцент делается на локальной обработке, более эффективной фильтрации шума и «лёгких» NLP-моделях, обеспечивающих быстрый отклик.

3. Методология

3.1. Архитектура системы

Разрабатываемый голосовой ассистент на основе ИИ обладает модульной архитектурой, что обеспечивает гибкость, эффективность и масштабируемость. Система включает пять основных модулей:

  1. Модуль распознавания речи (Speech Recognition Module, SRM). Преобразует голосовой ввод в текст с использованием Google Speech Recognition API и офлайн-моделей ASR.
  2. Модуль обработки естественного языка (Natural Language Processing Module, NLPM). Анализирует текстовые запросы пользователя, используя правила и методы машинного обучения, для определения интента.
  3. Модуль выполнения команд (Command Execution Module, CEM). Сопоставляет распознанный текст с предопределёнными командами и выполняет соответствующие действия.
  4. Модуль синтеза речи (Text-to-Speech, TTS). Преобразует текст ответов ассистента в аудио с помощью pyttsx3, обеспечивая офлайн-озвучивание.
  5. Модуль пользовательского интерфейса (UI Module). Предоставляет графический интерфейс пользователя (GUI) и/или интерфейс командной строки (CLI).

3.2. Технологический стек

В качестве языка реализации используется Python благодаря богатой экосистеме библиотек для ИИ и обработки естественного языка. Основные компоненты технологического стека:

3.3. Рабочий процесс системы

Работа ассистента реализуется в виде пяти последовательно выполняемых шагов:

  1. Обработка голосового ввода. Пользователь произносит команду, которая захватывается микрофоном и передаётся в модуль SRM.
  2. Преобразование речи в текст. Полученный аудиосигнал транскрибируется в текст с использованием Google Speech API или офлайн-движка ASR.
  3. Понимание команды и её исполнение. Модуль NLPM определяет намерение пользователя и передаёт его в CEM для запуска соответствующего действия.
  4. Синтез текстового ответа в речь. Сформированный текстовый ответ озвучивается модулем TTS (pyttsx3).
  5. Обратная связь пользователю. Результат команды отображается в GUI/CLI и одновременно произносится вслух.

3.4. Исполнение команд и кастомизация

Ассистент поддерживает набор предопределённых команд, разделённых на несколько категорий:

{
  "open_calculator": {
    "keywords": ["open calculator", "start calculator"],
    "action": "calc.exe"
  },
  "search_google": {
    "keywords": ["search", "google search"],
    "action": "https://www.google.com/search?q={query}"
  }
}

Такая JSON-структура позволяет легко расширять функциональность ассистента без изменения исходного кода.

3.5. Повышение точности распознавания речи

Для улучшения качества распознавания речи в системе используются следующие техники:

4. Реализация

4.1. Среда разработки

Разработка и тестирование ассистента проводились при следующих требованиях к оборудованию:

Программная конфигурация:

4.2. Модуль распознавания речи (SRM)

Модуль SRM отвечает за захват голосового сигнала и преобразование его в текст. Поддерживаются как облачный Google Speech API, так и офлайн-движок CMU Sphinx.

Алгоритм 1. Реализация распознавания речи

  1. Инициализировать подсистему аудио-распознавания.
  2. Выбрать микрофон в качестве источника звука.
  3. Сообщить пользователю о готовности к приёму голосового ввода.
  4. Выполнить калибровку по уровню фонового шума.
  5. Записать фрагмент аудио с микрофона.
  6. Попробовать выполнить распознавание с помощью онлайн-движка (Google Speech API):
    • если транскрипция успешна — вернуть полученный текст;
    • в противном случае перейти к шагу 7.
  7. Попробовать выполнить распознавание с помощью офлайн-движка (CMU Sphinx):
    • если транскрипция успешна — вернуть текст;
    • если снова возникает ошибка — вернуть ответ об ошибке распознавания.

Важные особенности: использование функции adjust_for_ambient_noise() для подавления шума и обработка исключений при неразборчивой или отсутствующей речи.

4.3. Модуль обработки естественного языка (NLPM)

Модуль NLPM интерпретирует текстовую команду и определяет соответствующий интент. В базовой реализации используется правиловый подход на основе регулярных выражений.

Алгоритм 2. Правиловое определение интента

  1. Получить строку команды и перевести её к нижнему регистру.
  2. Если команда соответствует шаблону «open notepad» / «start notepad», присвоить intent значение open_notepad.
  3. Иначе, если команда содержит маркеры поиска («search», «google search»), присвоить intent значение search_google.
  4. Во всех остальных случаях установить intent в unknown_command.
  5. Вернуть значение интента.

Такой подход позволяет обрабатывать несколько формулировок одной команды, однако в дальнейшем его можно заменить на машинно-обучаемую модель.

4.4. Модуль выполнения команд (CEM)

Модуль CEM сопоставляет вычисленный интент с конкретным системным действием.

Алгоритм 3. Исполнение команды

  1. В зависимости от значения intent выполнить:
    • Случай open_notepad. Запустить штатный текстовый редактор (например, notepad.exe).
    • Случай search_google. Если строка query не пуста, сформировать URL вида https://www.google.com/search?q={query} и открыть его в браузере. Если запрос отсутствует — вывести сообщение об ошибке.
    • Случай по умолчанию. Сообщить пользователю, что команда не распознана.

Для взаимодействия с операционной системой используется, в частности, функция os.system(), а также средства открытия URL по умолчанию.

4.5. Модуль синтеза речи (TTS)

TTS-модуль генерирует голосовой отклик на основе текстового ответа ассистента с использованием pyttsx3, что обеспечивает работу без подключения к Интернету.

Алгоритм 4. Генерация синтезированной речи

  1. Инициализировать офлайн-движок синтеза речи.
  2. Передать текст ответа в буфер TTS-системы.
  3. Запустить преобразование текста в аудио и вывод звука через динамики.

4.6. Модуль графического интерфейса (GUI)

GUI-модуль реализован на базе Tkinter и предоставляет простое окно для ввода текстовых команд и отображения ответов ассистента.

Алгоритм 5. Работа графического интерфейса

  1. Создать главное окно приложения и задать его заголовок.
  2. Разместить поле ввода текстовой команды.
  3. Добавить кнопку «Выполнить», привязанную к обработчику on_submit().
  4. В функции on_submit():
    • считать текст из поля ввода;
    • передать его в модуль NLPM для определения интента;
    • передать интент и исходную команду в модуль CEM;
    • показать диалог c информацией о распознанном интенте.
  5. Запустить основной цикл обработки событий GUI.

4.7. Интеграция системы и многопоточность

Для одновременной работы голосового ввода и графического интерфейса используется многопоточность.

Алгоритм 6. Интегрированный рабочий процесс ассистента

  1. Запустить GUI в основном потоке приложения.
  2. Создать отдельный поток для обработки голосовых команд.
  3. В голосовом потоке в цикле:
    • получать аудио через SRM и преобразовывать его в текст;
    • определять интент в NLPM;
    • исполнять соответствующую команду в CEM;
    • озвучивать результат с помощью TTS.
  4. Обеспечить параллельную работу обоих потоков для сохранения отзывчивости интерфейса.

Такой подход позволяет непрерывно отслеживать голосовые команды, не блокируя графический интерфейс.

5. Результаты и обсуждение

5.1. Оценка производительности

5.1.1. Точность распознавания речи

Система тестировалась при различных условиях: разные акценты, уровни фонового шума и скорость речи. Результаты представлены в таблице 2.

Таблица 2 – Точность распознавания речи

Сценарий тестирования Google Speech API (онлайн) CMU Sphinx (офлайн)
Чистая речь (без шума) 98,5 % 85,2 %
Умеренный шум (работающий телевизор) 92,3 % 74,1 %
Сильный фоновый шум 78,9 % 60,7 %
Быстрая речь 88,4 % 70,5 %
Носитель с иностранным акцентом 85,6 % 67,2 %

Как видно, Google Speech API демонстрирует лучшую точность во всех сценариях, но требует подключения к Интернету. CMU Sphinx позволяет работать офлайн, однако чувствителен к шуму и акцентам. В дальнейшем авторы планируют улучшить офлайн-распознавание за счёт обучения собственных акустических моделей.

5.1.2. Эффективность выполнения команд

Время отклика и точность для различных классов команд приведены в таблице 3.

Таблица 3 – Эффективность выполнения команд

Тип команд Среднее время ответа, с Точность, %
Системные команды 0,8 99,2
Интернет-поиск 1,2 97,5
Пользовательские команды 1,0 96,3

Системные команды выполняются быстрее всего, поскольку не требуют сетевого взаимодействия. Интернет-запросы имеют слегка увеличенное время отклика из-за сетевых задержек. Пользовательские команды демонстрируют высокую точность, однако авторы отмечают, что дальнейшее развитие NLP-компонента может ещё уменьшить число неверных интерпретаций.

5.2. Сравнение с существующими ассистентами

Выполнено сравнение разработанного ассистента с Google Assistant, Siri и Alexa по параметрам стоимости, работы офлайн, приватности и гибкости. Результаты сведены в таблицу 4.

Таблица 4 – Сравнение с существующими голосовыми ассистентами

Характеристика Разрабатываемый ассистент Google Assistant Siri Alexa
Поддержка офлайн-режима Да Нет Нет Нет
Пользовательские команды Да Ограниченно Нет Нет
Контроль приватности Высокий Низкий Низкий Низкий
Стоимость Бесплатно (open-source) Подписка / потребление облачных ресурсов Стоимость устройств Стоимость устройств

Разрабатываемый ассистент выигрывает у коммерческих решений по параметрам конфиденциальности и возможности работы офлайн. При этом его NLP-компонент пока менее развит, чем у Google Assistant и Siri, но поддержка настраиваемых команд делает систему более гибкой для персонального использования.

5.3. Оценка пользовательского опыта

Для оценки удобства использования была проведена пользовательская сессия: 20 участников протестировали ассистента и заполнили анкету. Усреднённые оценки представлены в таблице 5.

Таблица 5 – Обратная связь пользователей

Параметр Оценка (по 10-балльной шкале)
Простота использования 8,5
Скорость распознавания 7,8
Точность выполнения команд 8,2
Качество озвучивания ответов 7,9
Возможности кастомизации 9,3

Пользователи положительно оценили наличие офлайн-режима и гибкие возможности настройки. Среди направлений улучшения были отмечены распознавание речи у носителей с иностранным акцентом и доработка графического интерфейса.

6. Заключение и перспективы развития

6.1. Заключение

В работе представлен голосовой ассистент на основе ИИ, объединяющий распознавание речи, обработку естественного языка, выполнение команд, синтез речи и графический интерфейс. Система спроектирована таким образом, чтобы функционировать как в онлайн-, так и в офлайн-режиме, обеспечивая высокий уровень конфиденциальности и доступности.

Основные результаты:

В целом система представляет собой практичную и малозатратную альтернативу коммерческим голосовым ассистентам при сохранении хорошей производительности для основных задач.

6.2. Направления дальнейших исследований

Несмотря на достигнутые результаты, авторы выделяют несколько направлений развития системы:

  1. Улучшение распознавания речи. Обучение собственной модели ASR для повышения точности офлайн-распознавания; интеграция систем Whisper AI или DeepSpeech для более устойчивой работы с акцентами и в шумной среде.
  2. Усиление NLP-компонента. Использование трансформерных моделей (BERT, GPT-3.5 и др.) для контекстно-зависимого определения интентов и реализация самообучающегося механизма, адаптирующегося к привычкам пользователя.
  3. Улучшение интерфейса. Разработка полнофункционального графического интерфейса на основе Flask или React.js, внедрение голосового управления настройками и персонализацией.
  4. Расширение функциональности. Поддержка нескольких языков, интеграция с IoT-устройствами «умного дома», а также разработка мобильных приложений (Android/iOS).

Реализация этих улучшений позволит превратить разработанный ассистент в более интеллектуальную, адаптивную и широкодоступную систему, представляющую собой полноценную open-source-альтернативу коммерческим голосовым помощникам.

Приведённые источники обеспечили как теоретические предпосылки, так и технические основы, которые поддержали успешную реализацию системы голосового ассистента на основе ИИ.

7. Список литературы

  1. Vaswani A., Shazeer N., Parmar N., Uszkoreit J., Jones L., Gomez A. N., Polosukhin I. Attention Is All You Need // Advances in Neural Information Processing Systems. 2017. Vol. 30.
  2. Hinton G., Deng L., Yu D., Dahl G. E., Mohamed A., Jaitly N., Kingsbury B. Deep Neural Networks for Acoustic Modeling in Speech Recognition // IEEE Signal Processing Magazine. 2012. Vol. 29, no. 6. P. 82–97.
  3. Radford A., Narasimhan K., Salimans T., Sutskever I. Improving Language Understanding with Unsupervised Learning. OpenAI, 2018.
  4. Chen J., Parikh D., Gupta A. Learning from Language Explanations for Visual Reasoning // Proc. European Conference on Computer Vision (ECCV). 2018. P. 103–120.
  5. Baevski A., Zhou H., Mohamed A., Auli M. wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations // Advances in Neural Information Processing Systems (NeurIPS). 2020.
  6. Google Developers. Google Speech-to-Text API Documentation, 2023. Available at: https://cloud.google.com/speech-to-text
  7. Mozilla DeepSpeech. DeepSpeech Documentation, 2023. Available at: https://deepspeech.readthedocs.io
  8. IBM Watson. IBM Watson Speech Services Overview, 2023. Available at: https://www.ibm.com/cloud/watson-speech-to-text

8. Приложения

Приложение А. Диаграмма архитектуры системы

В приложении оригинальной статьи приведена блочная схема, иллюстрирующая взаимодействие модулей SRM, NLPM, CEM, TTS и GUI в составе голосового ассистента. На её основе в разделе 3.1 описана архитектура системы.

Приложение B. Требования к аппаратному и программному обеспечению

Аппаратные требования: процессор уровня Intel Core i5 или аналогичный и выше, не менее 8 ГБ ОЗУ (16 ГБ рекомендуется), свободное дисковое пространство не менее 10 ГБ, качественный микрофон с шумоподавлением и акустическая система для вывода звука.

Программные требования: Windows 10/11, macOS или Linux (рекомендуется Ubuntu), Python 3.9+, библиотеки SpeechRecognition, pyaudio, pyttsx3, nltk, OpenAI GPT API (опционально), а также Flask и TensorFlow/PyTorch для расширенных функций.

Приложение C. Примеры команд и ответов

Примеры взаимодействия ассистента с пользователем:

Приложение D. Экспериментальные условия

Эксперименты по оценке системы проводились в трёх типах окружения: (1) тихое помещение, (2) умеренный фоновый шум (работающий телевизор), (3) высокий уровень шума (моделирование шумного кафе). Дополнительно тестировалась устойчивость к различным акцентам и скоростям речи.

Приложение E. Репозиторий исходного кода

Полный исходный код голосового ассистента доступен в открытом репозитории GitHub: https://github.com/mahider78672/Jarvis .