Eva the AI Assistant

Teodor Moldoveanu

Eva

πŸ”„ Changelog

πŸ“Œ Latest Version: v7.0.8
🐞 Fixed bug that created multiple wake word engine instances

πŸ“₯ 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 Speech Recognition Engine
πŸ€–πŸ§  Speech recognition model
πŸ–₯οΈπŸŽ™οΈ UWP Speech Recognition Engine

πŸ—£οΈπŸ’»βš™οΈπŸŒπŸ“‘ 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 (NLU) in Eva

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:
The NLU Process in Eva:
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.
How This Works:
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.
Why This is Important:
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.
β±οΈπŸ“Š 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 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.

How the Algorithm Works:

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.

Formula Breakdown:

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.

πŸ“‹ Usage

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.
βš™οΈ Command Customization
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?

πŸ—£οΈ Give Commands to ChatGPT

Eva can communicate with ChatGPT and process your requests for intelligent, conversational replies.

⏲️ Set a Timer

Eva can set timers for you, whether it’s for cooking, work breaks, or other tasks!

πŸ“Έ Take Screenshots

Need to capture your screen? Eva can take screenshots on demand.

🌐 Search on Google

Eva can search Google for anything!

πŸ“° Search on Google News

Stay up to date with the latest news using Google News search.

πŸ–ΌοΈ Search on Google Images

Eva can search for images across the web on Google Images.

πŸ›’ Search on eBay

Want to find something on eBay? Eva has you covered.

πŸ›οΈ Search on Amazon

Shop for anything on Amazon with Eva.

πŸ“š Search on Wikipedia

Need information? Eva can search Wikipedia for you.

πŸ“Ί Search on Netflix

Eva can also search Netflix for shows or movies.

πŸ”΄ Search on Reddit

Eva can find discussions, threads, and more on Reddit.

πŸ“˜ Search on Facebook

Find posts and content on Facebook through Eva.

πŸ“Έ Search on Instagram

Search Instagram for images, posts, and more.

πŸ“§ Search on Gmail

Need to check your Gmail? Eva can search through it for you.

🐦 Search on Twitter

Eva can search through Twitter for tweets and hashtags.

πŸ“Œ Search on Pinterest

Find pins and boards on Pinterest with Eva.

πŸ’Ό Search on LinkedIn

Eva can search for professional content on LinkedIn.

πŸ§‘β€πŸ’» Search on Github

Developers rejoice! Eva can search GitHub repositories and issues.

πŸ“Έ Search on Unsplash

Looking for high-quality images? Eva can find them on Unsplash.

πŸ’» Search on Stack Overflow

Get answers to coding questions from Stack Overflow.

βš™οΈ Open and Close System Settings

Eva can manage your system settings for you.

πŸ’» Open and Close Applications

Eva can open and close multiple applications, such as Chrome, Firefox, Notepad, Visual Studio Code, and more.

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

Posted Dec 11, 2024

Eva is a C# AI voice assistant that uses speech recognition and NLP to control apps, manage OS tasks, take screenshots, and interact with ChatGPT in real time.

Likes

0

Views

3

Timeline

Jun 21, 2021 - Nov 13, 2024

CSharpTeoMan911/WeatherPrediction
CSharpTeoMan911/WeatherPrediction
CSharpTeoMan911/2_Large_Networks_With___DHCP___VOIP___TELNET___…
CSharpTeoMan911/2_Large_Networks_With___DHCP___VOIP___TELNET___…
BerrySonar: DIY LIDAR System Development
BerrySonar: DIY LIDAR System Development
GitHub - CSharpTeoMan911/ThetaFTP
GitHub - CSharpTeoMan911/ThetaFTP

Join 50k+ companies and 1M+ independents

Contra Logo

Β© 2025 Contra.Work Inc