That's impressive. It also must be a nightmare to maintain.
I would like to know if it runs on low-end computers with ease. If not, then maybe separate it across multiple specialized frontends and backends. See if you have repeating data models, those should be normalized. If you have many forms that look the same and the only thing that changes is the graphic, then make your graphics (is it charts?) dynamically appear according to the form's purpose. I can't imagine creating 4600 different forms.
BTW, what do you mean they have text-to-speech? your users need to listen to the app?
Yes, Edgar, the application reads information aloud.
You have to understand that this database has an information focus rather than a data focus. It has lots of information about each entity (e.g., staff member, customer, project, etc.) Each staff member for example has a name(s), multiple titles, security clearances, professional certifications, telephone numbers, grade point averages, and so on. For one personnel statement, the application may only read aloud a person's name, security clearance, and most recently obtained professional certification. This could be information used to qualify a person for a job.
Some of the forms have several command buttons that read information aloud. Each button reads a few sentences, that's all. The next button reads different information depending on where it is located on a form.
Speech in a report introduces the user to that record. For example, "This is Edgar's profile. Edgar is a database guru in the corporate offices." The person's name, title, and location is read from the underlying table. The rest of the sentence is built into the database. After this statement is read, the full report is displayed.
The only nightmare now is separating the domains. I developed the application in such a way, that normal maintenance isn't necessary. I achieve that by using as little code as possible. So usually there is no need for error handling. If a capability isn't absolutely needed, it doesn't get added to the application.
Years ago I ran the database on a low-powered laptop with a Celeron processor. I run it now on a Core i7 8th Gen with 16Gb of RAM. It is designed so a user gets only the domains he needs to do his job. There are about 25 domains.
I can't imagine doing the job with less than a few thousand forms and thousands of reports. There are just too many tasks that are needed at different times and they need to be used in different ways and in different orders depending on the situation. To track tasks, the database has about 20 Kanban boards and a few Scrum boards. When a task is is not done, millions of dollars could be lost. And someone can also go to jail if a mistake is made. This is not the case in every industry but it is in the industries that I target.
Here's a screenshot of a form I created a couple of weeks ago. The idea is to help users see the progress they have made with pricing their contracts. The background graphic was created in PowerPoint and pasted into Access. Colored circles were positioned on the image using a scoring built into the database. The form automatically calculates the total score. The maximum score is 40 points.