Eva the AI Assistant

Teodor Moldoveanu

Eva

MAJOR PATCH

Eva can now excute custom commands made by the user. Visit this link for detailed instructions
Eva can now become invisible. Say 'Listen', then say either 'visible' or 'invisible' to make the window invisible or visible accordingly.

DOWNLOAD

DEVELOPER SUPPORT

For instructions about how to set up the environment for developent, how to add the resources needed by the application, and how to add the necessary libraries and SDK's : https://github.com/CSharpTeoMan911/Eva/wiki/Visual-Studio-configuration-and-operational-prerequisites

About

Eva is an A.I. assistant that has the purpose of helping users multi-task. It also has the use of helping people with mental and phisical disabilities. All the commands to be executed are given to Eva through voice commmands.

Technologies

The Eva's core technologies are the Vosk In-proc speech recognition engine, the Microsoft online speech recognition engine, the .NET framework, Windows Presentation Foundation ( WPF ), and the Universal Windows Platforms ( UWP ).

Speech recognition infrastructure

The Vosk speech recogniser is listening permanently, if the listening function is activated. Once it recognises the word "Listen" or "Hey listen", the online speech recognition engine is activated. The online speech recognition engine has the role of extracting commands and their content.

Natural Language Understanding

Eva uses natural language processing in two ways, and these are speech recognition and contextual command and content extraction. Both, Vosk and Windows Online Speech Recognition engines use natural language processing in order to extract the words from any audio medium, and these features are built into both of the engines.
The contextual command and content extraction natural language understanding engine is built into the application in order for Eva to understand the commands given by the user and their content, and this command and content extraction natural language understanding engine is built by me. The application's natural language understanding engine is doing this by following a set of procedures. Firstly, it is doing some tokenization in order to understand what process it has to execute and what extra parameters must be extracted from the input, in order to execute the command. This is done by analysing the input and by searching for some keywords that have to be at a certain index within the sentence. For example, if the command given is "open chrome", because the word open is the first word, the natural language understanding engine categorised the command as a process in which a certain application is opened. If the command given is "search leopard 1 tank blueprint on google", because the first word is search, the tokenisation is pointing to the parameter related to web search command. If the tokenization did not match the sentence with any parameter, then no process will be executed.
A second tokenisation is performed, after the process type had been identified. When the process type had been identified, accordingly with the process type patern, if any secondary parameters are required by the process type, these will be extracted accordingly. For example, if the command "search black shoes of amazon" had been entered, the patern of this command is "search [ CONTENT ] on [ WEB APPLICATION ]". This means that the natural language understanding engine has to search for a web application and for the content to be searched on that web application. Then accordingly to the process patern, the natural language understanding engine knows that the content to be searched on the web application is between the words "search" and "on", and it knows that the web application keyword is every word after the word "on". If the second tokenization did not detect the correct variables format, then no process will be executed.
A third tokenisation is performed in order to extract the variables content. This tokenisation is using the indexes of the variables detected in the second tokenisation, extracts the variables, and verifies the extracted variables against a list of valid variables. Once the variables are validated, the processes associated with the variables are extracted and set to be executed accordingly. If the third tokenization did not detect any valid values for the detected variables, then no process will be executed.

Natural Language Understanding Engine Time Complexities

The time complexity of the natural language understanding engine is in O(n) in the worst case and average case scenarios, and the time complexity O(n - ( n - (ci + 1) )) is in the best case scenario, where "ci" stands for current index where the engine could not match the input with any patern related to any process. Because the natural language understanding engine has 3 stages of tokenisation that are verifying if certain criterias are met within the given sentence, the natural language understanding engine will stop processing the information at the index where the sentence did not fulfil the specified criterias, depending at which tokenisation stage the natural language understanding engine the criterias are not satisfied, and thus the RAM memory resources and the CPU processing power are not wasted unnecessary.

Gradient fluctuation formula

Eva uses an algorithm developed by me in order for the application to have those beautiful graphical user interface effects. This algorithm functions by increasing the offset of the gradient by using a sumation that is incrementing the value of the gradient until it reaches a threshold value. When the threshold value is reached, a sumation is used to decrement the value of the gradient until it reaches its original value. This gradient fluctuation formula can also be interpreted as two linear functions that are instantiated when each function's threshold value has to be reached. The aforementioned functions are y = x + v and y = x - v respectively, where y is the resulting gradient value, x is the current gradient value, and v is the value to be added or substracted from the current gradient value, and where x, y, and v are greater than zero.

Installation

Go to the DOWNLOAD section within the Eva's README.md page and click on the link.

Usage

In order to give commands to Eva say the word "Listen" or "Hey listen" followed by the desired command. For example, say "Hey listen", then after Eva is activated, say "search robots are cool on Google". You can find detailed instructions about commands and the command paterns and troubleshooting within the instruction manual of Eva.

Command customisation

Add, remove, and modify commands as you desire. For detailed instruction regarding command customisation, go to the Wiki page https://github.com/CSharpTeoMan911/Eva/wiki/Commands-customisation

What Eva can do?

It can give commands to ChatGPT

It can set a timer

It can take screenshots

It can search on Google

It can search on Google News

It can search on Google Images

It can search on eBay

It can search on Amazon

It can search on Wikipedia

It can search on Netflix

It can search on Reddit

It can search on Facebook

It can search on Instagram

It can search on Gmail

It can search on Twitter

It can search on Pinterest

It can search on LinkedIn

It can search on Github

It can search on Unsplash

It can search on Stackoverflow

It can open and close the operating system's settings

It can open and close multiple applications, such as chrome, firefox, notepad, chrome, visual studio code . . .

Extra information

Eva is open source and free to use. You can find extra informations on the Wiki section of the repository.
Like this project
0

Posted Dec 11, 2024

Contribute to CSharpTeoMan911/Eva development by creating an account on GitHub.

CSharpTeoMan911/2_Large_Networks_With___DHCP___VOIP___TELNET___…
CSharpTeoMan911/2_Large_Networks_With___DHCP___VOIP___TELNET___…
CSharpTeoMan911/Proximity_Alert
CSharpTeoMan911/Proximity_Alert
GitHub - CSharpTeoMan911/ThetaFTP
GitHub - CSharpTeoMan911/ThetaFTP
CSharpTeoMan911/WeatherPrediction
CSharpTeoMan911/WeatherPrediction