Что за программа помощник

[СПРАШИВАЙТЕ ВСЕ ЧТО УГОДНО]
Вот несколько идей, которые вы можете попросить AI Chat написать за вас, используя ChatGPT и GPT-4:
Решить проблему разбив ее на простые и понятные задачи
Перефразировать текст
Шутки, поздравления, идеи для подарков, сочинить куплет, составить плейлист
Улучшить мотивацию, составить план по развитию
Сгенерировать план по питанию, рецепты
Помощь бизнесу: составить продающее письмо, имя бренда, описание продукта, бизнес идеи
Советы в отношениях, еде, путешествиях и многое другое!

AIChat — это инновационный чат-бот и личный помощник, работающий на основе передовой технологии ChatGPT. Мы использовали обученную модель ChatGPT 4, которая представляет собой самую современную и мощную версию системы генерации текста. Однако, наше приложение не ограничивается только ChatGPT — она включает и другие алгоритмы и модели, которые обогащают и улучшают общий опыт пользователя.

Помощники

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

Программа «Бизнес-помощник» №1

Всего программ в категории: 67

Beeline Uzbekistan версия 6.12

от 16 мая 2023 Beeline Uzbekistan (Билайн Узбекистан) – это официальное приложение, которое вы можете легко установить на свое устройство и управлять всеми услугами самостоятельно. Теперь вам не нужно постоянно искать коды и короткие номера оператора. Вместе с данной программой у вас есть полноценный инструмент управления собственным номером.

Brainly версия 5.142.0

от 26 мая 2023 Brainly (Брайнли) – это мобильное приложение, предназначенное для школьников и их родителей, которое помогает быстрее выполнять домашние задания, получая ответы на все основные вопросы. Онлайн-сообщество регулярно развивается, поэтому можно быть уверенным в актуальности указанных вопросов и описанных знаний.

Шедеврум версия 2.1.1

от 24 мая 2023 Шедеврум (Нейросеть для генерации изображений) – это приложение, разработанное Яндексом. Оно позволяет генерировать картинки на основании текстового описания. Запросы можно формировать как на русском, так и на английском языке. Разработчик проводит активное тестирование программного обеспечения для того, чтобы выявить возможные неисправности и неточности в обработки данных.

Автотека версия 4.13.1

от 21 апреля 2023 Автотека (Проверка авто по VIN) – это мобильное приложение, которое позволит проверить транспортное средство перед совершением покупки. Теперь вам больше не придется заниматься поиском информации по различным ресурсам и базам. Теперь все данные об авто собраны в едином месте.

DPD версия 1.29.0

от 25 мая 2023 DPD (ДПД) – это удобное мобильное приложение, которое позволяет отслеживать посылки из интернет-магазинов и управлять их доставкой со своего смартфона. Отправляйте свои посылки и грузы в различные страны, контролируйте все передвижения и поставленные задачи в соответствии с вашими предпочтениями без затрат и рисков.

Помощник руководителя обязанности | Работа помощник руководителя | Бизнес ассистент функции

YoWindow версия 2.38.9

от 4 мая 2023 YoWindow (Погода на экране) – это отличное приложение для вашего устройства, которое позволит всегда получать только актуальный прогноз погоды. Оставайтесь всегда в курсе всей информации. Простой интерфейс, минималистичное оформление, высокие функциональные возможности – все это доступно для вас сразу после загрузки и установки.

Худеем за 30 дней версия 1.1.48

от 28 апреля 2023 Худеем за 30 дней (Похудение за месяц) – это лучшее приложение для тех, кто хочет быстро похудеть без негативных последствий для организма. Здесь предложены систематичные упражнения, повседневный рацион и другие виды активности для снижения веса. Составляйте индивидуальный план похудения на месяц в зависимости от того, каких целей планируете достичь.

Источник: softdaily.ru

Собственный голосовой помощник off-line

Задумки

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

  1. Простота установки и настройки — это либо инсталлятор и GUI для настройки, либо портативное приложение с настройками в простых текстовых или json/xml файлах (простите, но yaml я считаю крайне неудобным и опасным форматом для ручного редактирования, а старый добрый .ini не очень технологичен).
  2. Работа с явно указанными аудио устройствами — я, например, по работе использую гарнитуру, но музыку вывожу на колонки. И вовсе не очевидно, какое устройство я хочу отдать голосовому помощнику, а какое у меня задействовано для других целей. И постоянно переключаться я совершенно не хочу. А для голосового помощника вполне разумным было бы использовать отдельный внешний выносной микрофон, в идеале, с кнопкой выключения микрофона. Например, мне понравилось качество работы и исполнения здесь.
  3. Расширение функционала плагинами — тут всё очевидно — я лично не смогу (даже если захочу) обеспечить все хотелки пользователей. Например, такая система должна легко встраиваться в «Умный дом» и кому-то придется это писать, а системы разные.
  4. Возможность гибкой настройки не только приложения, но и плагинов — в частности, смена команд и ключевой фразы, а так же настройки безопасности — что могут получать плагины из ядра (звуковой поток, поток распознанных слов, и т.п.).
  5. Максимальная автономность приложения — никаких распознаваний или генерации речи в облаке — в облаках уже есть готовые прекрасные решения, с которыми невозможно конкурировать.
  6. Невысокие требования к ресурсам — в силу ограниченности бюджета простого пользователя хотелось бы уместить все в общепринятые объемы памяти, дискового пространства и физические габариты, пригодные для установки в бытовых помещениях. Т.е. более-менее любая машина, которая тянет Windows10 (к сожалению, стандарт де-факто) уровня Celeron/Atom с 4 Gb и 64 Gb диска должна подходить. Приятно, что такие машины бывают довольно компактными (Intel NUC, Gigabyte BRIX, множество китайских машин на базе Intel BayTrail Atom Z35xx/83xx/85xx) — их можно подключить к телевизору в качестве медиаплеера и, заодно, использовать в качестве голосового помощника.
  7. Возможность несложной смены языка общения — русский язык, конечно, мне близок, но хотелось бы принести пользу максимально широкому кругу лиц. И тут надо понимать, что это 3 направления работы — язык распознавания, язык генерации речи и язык команд /плагинов.
  8. Кросс-платформенность — хорошо бы иметь возможность запускать помощника на разных системах, хотя, конечно, Windows более распространен в широких кругах.
Читайте также:
Программа scan to что это

Конечно же, все эти благие намерения необязательно получится реализовать все и сразу.

Реализация

Для реализации я выбрал язык C#, как наиболее подходящий из знакомых мне. Фреймворк — устоявшийся .NET Core 3.1 LTS.

Основные модули, на которых основывается проект:

  • Модуль распознавания — VOSK
  • Генерация речи — Windows SAPI5 с голосами
  • Захват и вывод аудио — NAudio
  • Мягкое сравнение строк — FuzzySharp

Проект выложен на GitHub и понемногу развивается моими силами.

Идея была такова — основной модуль занимается захватом аудио и распознаванием речи, а так же поиском команд, которые определены плагинами. Плагины, в свою очередь, максимально автономны и от ядра получают только пинок «на старт», аудиопоток, а так же поток распознанных слов (если пользователь в настройках разрешил).

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

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

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

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

Итак, сложность работы с командами заключается в том, что команд много, они набираются из разных плагинов, могут пересекаться, а еще они могут содержать параметры — это неизвестные мне слова или сочетания слов (что важно!). Так же, распознанные слова поступают потоком, без явно выраженных границ фраз. Тут, конечно, очень помогает то, что ориентиром начала команды является кодовое слово (имя помощника). Похожие проблемы я уже решал при написании парсеров протоколов ESC/POS, ССTalk и протокола фискального регистратора, поэтому подход применил знакомый — при получении кодового слова я формирую массив, в котором есть все возможные команды, объявленные в плагинах, и далее выкидываю из массива те команды, которые не содержат очередного пришедшего из потока слова.

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

С учетом описанной выше особенности потока распознанных слов, я не могу использовать группировку слов в приходящих пакетах — не могу считать окончание пакета окончанием фразы, так же как слова в одном пакете относящимися к одной фразе — настройка длительности паузы, после которой формируется пакет мне недоступна. В связи с этим я ввел 2 таймера:

  • первый таймер устанавливает задержку по времени, в течение которой после прихода ключевого слова должны подойти слова команды. Это длительная задержка, во время которой пользователь обдумывает (возможно, вспоминает формат) команду, которую он хочет произнести. Я же в это время приглушаю звук на текущем основном устройстве, чтобы играющая музыка или воспроизводящийся фильм не вносил шумы в аудиоканал. После завершения ввода команды громкость звука восстанавливается. Собственно, это подсмотрено у Алисы. 🙂 Пауза помогает мне не зависнуть, если команды так и не будет произнесено.
  • второй таймер определяет длительность паузы между словами. Просто чтобы не застрять на ожидании команды похожей на найденную, но более длинной. Ну и не зависнуть на неоконченной команде, конечно.
Читайте также:
Акселератор программа что это

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

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

Плагины

На текущий момент я сделал несколько тестовых несложных плагинов. Все они используют модель конфигурирования в том виде, в каком я его задумал — доступное пользователю описание команд и параметров в JSON-файле. Разработчик не обязательно должен придерживаться такого формата. Ядро от плагина хочет получить лишь список команд, которые плагин умеет выполнять.

Но даже тут разработчик может отдать пустой список, а потом подключиться к потоку распознанных слов (в-то и вообще к аудио потоку) и искать свои команды сам. Но это если пользователь в настройках плагинам подслушивать. Но, например, так можно реализовать срабатывание на громкий звук. 🙂

  • AppControlPlugin — позволяет по команде имитировать нажатие кнопки в заданной программе. Например, так можно управлять видеоплеером — по команде «Останови фильм» в процесс «mpc-H64» будет передаваться нажатие пробела и плеер будет вставать на паузу.
  • BrowserPlugin — позволяет открывать заранее заданные ссылки в браузере (в стандартном или в новом окне). Например, по команде «Открой пробки» будет открывать в браузере ссылку «https://yandex.ru/maps». Если в настройках указан запуск в отдельном окне, то плагин запоминает ссылку на процесс и позже может закрыть окно по команде «Закрой пробки».
  • CurrencyRatePlugin — может озвучивать текущий курс валюты (берет с сайта ЦБ).
  • HelloPlugin — просто отвечает на приветствие — варианты команд-приветствий и ответов можно задать самому. Делался, скорее, для тестов. 🙂
  • RunProgramPlugin — по команде запускает заданную в настройках программу. Например, по «Запусти блокнот» запустит «notepad.exe». Тоже умеет запоминать процессы и закрывать по отдельной просьбе.
  • TimerPlugin — запускает таймер на то кол-во минут/секунд, которое вы назовете. Удобно для кухни. 🙂 Опять-таки, умеет запущенные таймеры останавливать.

Установка

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

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

Модели распознавания берутся с сайта VOSK и кладутся в папку, указанную в настройках.

Модели для синтеза речи используются из реестра Windows — можно установить штатные от Microsoft, а можно добавить варианты от RHVoice Lab.

Настройка

К сожалению, пока у меня не было времени на написание отдельной GUI утилиты настройки, но при желании, это можно будет сделать. Пока что все настройки делаются в JSON-файлах — отдельных для ядра и каждого плагина.

Опишу самые важные настройки ядра:

  • «ModelFolder»: «model» — папка для модели распознавания речи.
  • «SelectedAudioInDevice»: «» — устройство захвата звука. Если пусто или не найдено, то используется устройство по-умолчанию Windows. Название сравнивается как .StartsWith(), поэтому полная строка не обязательно — лишь бы не совпала с чем-то еще. Список доступных выводится в консоль при старте программы.
  • «SelectedAudioOutDevice»: «» — устройство вывода звука. Если пусто или не найдено, то используется устройство по-умолчанию Windows. Название сравнивается как .StartsWith(), поэтому полная строка не обязательно — лишь бы не совпала с чем-то другим из списка. Список доступных выводится в консоль при старте программы.
  • «CallSign»: [ «Вася» ] — набор ключевых слов или имен помощника. Ищется любое из них. Можно перечислить несколько вариантов произношения для повышения вероятности распознавания. На коротких словах, к сожалению, мягкое распознавание малоэффективно — слишком велик вес каждого отклонения.
  • «DefaultSuccessRate»: 90 — коэффициент совпадения сстроки. Используется пока только для поиска ключевого слова.
  • «VoiceName»: «Aleksandr» — название модуля генерации речи. Если пусто или не найдено, то используется первый в списке с подходящей культурой. Список доступных выводится в консоль при старте программы.
  • «SpeakerCulture»: «ru-RU» — указание на язык пользователя. Используется при выборе генератора речи и передается в плагины, чтобы они знали язык пользователя. Например, таймер использует этот параметр для выбора конвертора из слов в цифры и обратно.
  • «PluginsFolder»: «plugins» — имя папки для плагинов
  • «PluginFileMask»: «*Plugin.dll» — маска файлов плагинов.
  • «StartSound»: «AssistantStart.wav» — звуковой файл, который проигрывается при старте помощника.
  • «MisrecognitionSound»: «Misrecognition.wav» — звуковой файл, который проигрывается при ошибке распознания команды.
  • «CommandAwaitTime»: 10 — время ожидания команды после получения ключевого слова.
  • «NextWordAwaitTime»: 3 — время ожидания следующего слова, если ввод команды уже начат.
  • «CommandNotRecognizedMessage»: «Команда не распознана» — фраза, которую ядро произносит в случае ненайденной команды. Тут можно вставить фразу на более понятном пользователю языке.
  • «CommandNotFoundMessage»: «Команда не найдена» — фраза, которую ядро произносит в случае ненайденной команды. Тут можно вставить фразу на более понятном пользователю языке.
  • «AllowPluginsToListenToSound»: false — разрешить передавать плагинам звуковой поток с микрофона.
  • «AllowPluginsToListenToWords»: false — разрешить передавать плагинам поток распознанных слов.
Читайте также:
Avg антивирус что это за программа

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

Вот фрагмент настройки плагина тамера, как наиболее показательный:

< «AlarmSound»: «timer.wav», — файл, который роигрывается при срабатывании таймера «IncorrectTime»: «Некорректное время», — фраза, которая произносится при нераспознанном времени «TimerNotFound»: «Таймер не найден», — фраза, котрая произносится при попутке удаления несуществующего таймера, ко «Commands»: [ — тут начинается список команд Первая команда — очень простая < «Response»: «Таймер заведен на минут», — это фраза, которую плагин произносит в результате успешного выполнения команды. «» тут означает место, в которое будет вставлено значение параметра. К сожалению, пока я не успел реализовать свой алгормтм форматирования, чтобы тут можно было использовать более понятные метки.

Например было бы удобнее и гибче. «isStopCommand»: false, — мне удобно было сделать отдельный флаг, разделяющий команды на установку и удаление таймеров «Name»: «Run timer minutes», — это просто имя или описание команды. При разборе ни на что не влияет «Tokens»: [ — это список слов,из которых состоит команда Первое слово < «Value»: [ — список значений слова команды.

Ищется любое из указанных «Поставь», «Заведи», «Запусти» ], «Type»: «Command», — тип слова — команда или параметр «SuccessRate»: 90 — коэффициент совпадения >, Второе слово < «Value»: [ «таймер» ], «Type»: «Command», «SuccessRate»: 90 >, Третье слово < «Value»: [ «на» ], «Type»: «Command», «SuccessRate»: 90 >, Четвертое слово — наконец то дошли до параметра < «Value»: [ «%minutes%» — в моем плагине по этому значению ищутся места в произнесенной фразе, где содержится параметр. Можно было жестко апописать номера позиций, но так появляется возможность перестраивать фразу. ], «Type»: «Parameter», «SuccessRate»: 90 >, Пятое слово < «Value»: [ «минут», «минуты», «минуту» ], «Type»: «Command», «SuccessRate»: 90 >] >, Вторая команда команда — почти копия первой, но останавливает, а не запускает таймер < «Response»: «Таймер на минут остановлен», «isStopCommand»: true, «Name»: «Stop timer minutes», «Tokens»: [ < «Value»: [ «Останови», «Удали» ], «Type»: «Command», «SuccessRate»: 90 >, < «Value»: [ «таймер» ], «Type»: «Command», «SuccessRate»: 90 >, < «Value»: [ «на» ], «Type»: «Command», «SuccessRate»: 90 >, < «Value»: [ «%minutes%» ], «Type»: «Parameter», «SuccessRate»: 90 >, < «Value»: [ «минут», «минуты», «минуту» ], «Type»: «Command», «SuccessRate»: 90 >] >, ] >

Если следовать моему шаблону проектрования плагинов, то они получаются довольно гибкими — пользователь сам может в JSON добавить неограниченное количество своих команд, базируясь на правилах, определенных автором плагина. Например, комбинировать часы и минуты по-разному, переписать команды на другом языке. Особенно это актуально для плагинов широкого применения — например, для запуска программ или сайтов по команде или для управления запущенными программами путем имитации нажатия клавиш.

Дальнейшие планы

Далее я планирую развивать плагины — написать взаимодействие с календарем, погодой, расписаниями электричек и звуковые оповещения, а так же звуковую связь. Это должно быть интересно. 🙂

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

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

Источник: habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru