Skip to content

CSharpTeoMan911/Eva

Repository files navigation

Eva



MAJOR PATCH


  • Eva can now speak using Speech Synthesis.


DOWNLOAD


Download Eva from SourceForge: https://sourceforge.net/projects/eva-ai/
Download Eva from Github: https://github.com/CSharpTeoMan911/Eva/releases/tag/Release



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 ).


Vosk: https://github.com/alphacep/vosk-api

UWP Speech Recognition: https://learn.microsoft.com/en-us/uwp/api/windows.media.speechrecognition.speechrecognizer?view=winrt-22621



Speech recognition infrastructure



Speech system flowchart


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.


302436808-cbed89ab-0788-4fcf-976d-bb694cdb888f


Natural Language Understanding Engine Time Complexities



TIME COMPLEXITY


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


Gradient fluctuation



Linear representation of the gradient fluctuation


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.


Eva_Capture733714694



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.


Eva_Capture2121712780

Eva_Capture829367817

Eva_Capture1195645157

Eva_Capture1277613527

Eva_Capture34673362


What Eva can do?


It can give commands to ChatGPT


Eva_Capture859377083

Eva_Capture1166755094

Eva_Capture443117994


It can set a timer


Eva_Capture503136236

Eva_Capture885556763


It can take screenshots


Eva_Capture2037081470


It can search on Google


Eva_Capture2116847400


It can search on Google News


Eva_Capture1332318160


It can search on Google Images


Eva_Capture1895286925


It can search on eBay


Eva_Capture1343975081


It can search on Amazon


Eva_Capture759505394


It can search on Wikipedia


Eva_Capture903369397


It can search on Netflix


Eva_Capture2144580495


It can search on Reddit


Eva_Capture1857061334


It can search on Facebook


Eva_Capture719492630


It can search on Instagram


Eva_Capture934103573


It can search on Gmail


Eva_Capture2104650543


It can search on Twitter


Eva_Capture144044807


It can search on Pinterest


Eva_Capture571896073


It can search on LinkedIn


Eva_Capture1342419452


It can search on Github


Eva_Capture1030181943


It can search on Unsplash


Eva_Capture1898758186


It can search on Stackoverflow


Eva_Capture1340621546


It can open and close the operating system's settings


Eva_Capture1994252519


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


Eva_Capture204556584

Eva_Capture24348866




Extra information


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


Eva_Capture2116139740

Eva_Capture1481952206




Donations

Please donate any sum of money in order to
buy resources and certifications, in order to
maintain current projects like Eva or create
new projects. Any amount is welcomed,
thank you.


 

homeless-man-eats-soup-from-plate-near-ruins-helping-poor-hungry-people-during-epidemic_89718-689




                           paypal