π Latest Version: v7.0.5
- π Added option to select the online speech recognition mode (e.g. Web search, Form filling, Dictation)
- π Fixed bugs regarding the command customisation function
- β‘οΈ Download Eva from SourceForge: https://sourceforge.net/projects/eva-ai/
- β‘οΈ Download Eva from Github: https://github.com/CSharpTeoMan911/Eva/releases/tag/Release
- 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
- 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.
-
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 Speech Recognition Engine
-
π€π§ Speech recognition model
-
π₯οΈποΈ UWP Speech Recognition Engine
- 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.
Eva utilizes Natural Language Understanding (NLU) in two key ways: speech recognition and contextual command/content extraction. These two components are powered by Vosk and Windows Online Speech Recognition engines for speech recognition, and a custom-built command and content extraction engine that I developed.
- Speech Recognition with NLU:
- Both Vosk and Windows Online Speech Recognition use NLU to convert spoken words from any audio medium into text. These engines are responsible for interpreting and transcribing the user's voice.
- Contextual Command & Content Extraction:
- Eva understands commands and extracts relevant content based on user input. This is done by processing commands through the following steps:
- Tokenization: Understanding the Command Type:
- The first step in processing a user command is tokenization. This process breaks down the sentence into individual components to identify the command's action and any additional parameters that need to be extracted.
- Example: "open chrome" β The first word ("open") signals that the command is to open an application (in this case, "chrome"). "search leopard 1 tank blueprint on google" β The first word ("search") indicates that the action is a web search.
- If the command doesnβt match any known patterns, no action is taken.
- Secondary Tokenization: Extracting Parameters:
- Once the command type (action) is identified, a secondary tokenization occurs to extract any secondary parameters.
- Example: "search black shoes on amazon" β The system identifies that the content to search for is "black shoes" and the web application is "amazon".
- If the second tokenization fails to identify valid parameters, no action is taken.
- Third Tokenization: Variable Extraction and Validation:
- A third round of tokenization is used to extract variables (like search content or website names) based on the previous steps.
- These variables are then validated against a predefined list of valid values (e.g., valid websites or search keywords).
- Once validated, the relevant processes are executed based on the user's command. If no valid variables are found, no process is triggered.
- Tokenization helps Eva break down the input into smaller parts, identifying the core action (open, search, etc.) and the necessary details (content, application, etc.).
- If each step of the tokenization process identifies and validates the necessary components, Eva proceeds to execute the desired action (e.g., opening an app or performing a web search).
- If any tokenization step fails (e.g., if the required content or application is missing), no action is taken.
- Precision and Accuracy: By using multiple tokenization steps, Eva ensures that the correct processes are executed based on the user's exact intent.
- Flexibility: Eva can handle various types of commands (e.g., opening apps, searching the web) by adjusting to different formats of user input.
- User Experience: This process ensures that even with a wide variety of potential commands, Eva can respond accurately and intuitively.
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.
Eva uses a unique algorithm developed by me to create stunning graphical user interface effects. This algorithm controls the gradient fluctuation used to produce smooth, dynamic animations. The effect is achieved by manipulating the gradient value incrementally, creating fluid transitions between different states of the GUI.
The gradient fluctuation formula functions by increasing the offset of the gradient via an incremental sum. This incrementally increases the gradient value until a certain threshold is reached, at which point it decreases the gradient back to its original value, creating a smooth oscillation.
This fluctuation can be represented as two linear functions:
-
Increasing the Gradient (Smooth Animation Start): When the animation begins, the formula y = x + v is used, where x is the current gradient value, y is the resulting gradient value, and v is the value added to the gradient to increment it. This continues until the threshold for the desired animation effect is reached.
-
Decreasing the Gradient (Smooth Animation End): After reaching the threshold, the formula y = x - v is applied. The gradient value is decremented by v back to its original value, creating a smooth, flowing animation effect. This ensures that the animation ends as smoothly as it started.
- y = x + v (Increasing the gradient value for a smooth animation start)
- y = x - v (Decreasing the gradient value for a smooth animation finish)
- Where:
- x = Current gradient value
- y = Resulting gradient value
- v = Increment/Decrement value
- All values x, y, and v are greater than zero.
This algorithm allows Eva to create smooth, beautiful animations with fluid transitions, adding a polished feel to the applicationβs graphical interface.
To give commands to Eva, simply say the word "Listen" or "Hey listen" followed by your desired command. For example:
- Say "Hey listen" or "Listen" to activate Eva.
- Then say "Search robots are cool on Google" to initiate a web search.
You can find detailed instructions on command patterns and troubleshooting in the Eva instruction manual.
- 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
- Eva can communicate with ChatGPT and process your requests for intelligent, conversational replies.
- Eva can set timers for you, whether itβs for cooking, work breaks, or other tasks!
- Need to capture your screen? Eva can take screenshots on demand.
- Eva can search Google for anything!
- Stay up to date with the latest news using Google News search.
- Eva can search for images across the web on Google Images.
- Want to find something on eBay? Eva has you covered.
- Shop for anything on Amazon with Eva.
- Need information? Eva can search Wikipedia for you.
- Eva can also search Netflix for shows or movies.
- Eva can find discussions, threads, and more on Reddit.
- Find posts and content on Facebook through Eva.
- Search Instagram for images, posts, and more.
- Need to check your Gmail? Eva can search through it for you.
- Eva can search through Twitter for tweets and hashtags.
- Find pins and boards on Pinterest with Eva.
- Eva can search for professional content on LinkedIn.
- Developers rejoice! Eva can search GitHub repositories and issues.
- Looking for high-quality images? Eva can find them on Unsplash.
- Get answers to coding questions from Stack Overflow.
- Eva can manage your system settings for you.
- Eva can open and close multiple applications, such as Chrome, Firefox, Notepad, Visual Studio Code, and more.
Eva is open source and free to use. You can find extra informations on the Wiki section of the repository.