What primarily led me to create this application was to resolve a real bottleneck in my workflow. In my own experience, I work by reading large amounts of text and interacting with different artificial intelligence models. This leads to having to switch between windows without finding the right one to locate the text I want to read. Having to manually search for the selection within the platform or system I am working on to find the option to play the text takes time when done manually. And if I want to repeat something, in most cases, I have to start playing the audio from the beginning all over again.
Therefore, I had to find something that adapted to my workflow, wouldn't make me waste time, and could maintain the speed I was looking for—or adjusted to my work pace, as what I sought was speed. I wanted something that, instead of having to stop to read and exhaust cognitive energy and my vision by reading for long periods, would allow me to instantly select what I want to read and have the audio returned immediately. While listening, I can finish another task without having to search for windows to copy and then paste the text, find the window to paste it in, and then manually select the option to play the audio.
The truth is, I needed something fast; I couldn't find it. I also work with code, so I needed something that, instead of reading every line of code, allowed me to select the code and have all the symbols read in the most formal and understandable way possible. That is why I added the code symbol reading function and the other function for normal, fluid text reading. Honestly, with this application, I save more than 40-50% of my time. It increases my workflow speed by that same percentage.
Since if you are a multitasker, this tool is perfect: you don't have to be reading and stop doing something else to read; you can simply select it and it automatically plays in less than 1 second, no matter how long the text is in English or Spanish. Or if it is code, you activate the code and symbol reading mode so it reads the symbols. But if you are multitasking, you can simply play the audio. Or, if you simply don't want it to play automatically upon selection, you can select it, copy it, and then paste it manually into the application interface, and it will play automatically. There is no character or word limit within the interface of the full version. It can handle extensive texts, and while the audio plays and you are listening, you can keep working in another window or on another task.
If you need it to play again, the text remains saved within the interface where it was copied and pasted. It has buttons to either pause or stop it completely. And if, for example, you need to replay a part you need to hear again in the middle of the text, you no longer have to start the audio from the beginning: you can simply go back to the text you were automatically playing, go to the part you wanted to hear again, and just select the text from that point, and it will start reading from there again.
Omen was born from a real and concrete need in a daily technical workflow. The problem is that processing large volumes of text visually has a biological limit. Reading is slow. Audio does not have that limit.
Existing tools that solve this problem come with an unacceptable cost for a serious workflow. They require an internet connection, send data to external servers, generate temporary files, depend on subscriptions, or simply do not respect the user's information sovereignty.
No available tool treated user data as exclusively belonging to the user. That was the breaking point that originated this project.
The workflow requires a tool that takes any text from any source and converts it to audio instantly, without friction, without storing anything, without asking permission from any external server, and without the user having to wonder if their information is being sent anywhere.
Omen is built on the principle of Digital Sovereignty. This principle has a precise technical definition in this project.
The performance objectives established for Omen are not theoretical benchmarks derived from ideal conditions. They are practical foundations derived from the actual hardware environment in which the application will operate and the real demands of the workflow it must fulfill. Each specification listed here represents a threshold that the application must reach or exceed to be considered functional for its intended purpose.
The application is designed to launch in less than one second from execution to a ready state. This is possible because the application has no network connections to establish, no remote configurations to fetch, no server to authenticate against, and no heavy components.
The function is that any text selected while holding down the left mouse click is captured; when released, it is transferred to the Omen text box, the clipboard is cleared and then filled with the new selected text, and if auto-play is enabled, playback begins immediately.
The addition in Omen that allows for selecting text and reading the resulting selection upon releasing the mouse is an additive behavior that does not interfere with any existing shortcuts because no application assigns an action to the "mouse release" event.
All other controls in Omen are operated through the graphical interface: Play, Pause, Stop, speed adjustment, voice selection, toggle Auto-Play... all accessible through the interface without requiring additional keyboard shortcuts. This decision was made deliberately to minimize the number of global keyboard hooks the application registers and to eliminate any possibility of future shortcut conflicts.
This module preprocesses the text before passing it to the TTS engine to ensure the audio output is coherent and useful for technical workflows.
Code Symbols: The module uses a dictionary that maps each symbol to its spoken equivalent. An opening brace is pronounced as "open brace." A closing brace is pronounced as "close brace." An opening parenthesis is pronounced as "open parenthesis." A closing parenthesis is pronounced as "close parenthesis." An arrow operator is pronounced as "arrow." This dictionary covers the full set of symbols commonly found in Python and general programming contexts.
Numbers: The module applies a digit threshold rule. Numbers from one to four digits are read naturally, meaning 53 is pronounced as "fifty-three" and 1024 is pronounced as "one thousand twenty-four." Numbers of five digits or more are read digit by digit, meaning 635788 is pronounced as "six three five seven eight eight." This rule was established to eliminate ambiguities when processing technical data, financial figures, and code values where precise digit identification matters more than natural language flow.
This module provides a graphical interface for the manual control of every automatic function in the application. Every shortcut and automatic behavior can be enabled or disabled from this panel without touching the keyboard. The panel includes automatic capture selection, rules capture mode, auto-play behavior, and voice capture for code reading. This ensures the user has absolute manual control of every automated function at all times.