/ElundusCoreApp

Desktop application to convert text-to-speech to preview Twitch donations.

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

Elundus Core (desktop)

GitHub build GitHub version GitHub downloads GitHub issues

Elundus Core is a desktop application you can use to simulate/preview text-to-speech (TTS) voice messages for Twitch. It's a port of the website https://www.elunduscore.com that I've initially created for the same purpose.

Screenshot

Wondering why I've made the step to change it to a desktop application? Check out the FAQ.



Features

  • Text-to-speech conversion for Amazon Polly voices (same voices are used by StreamElements and StreamLabs)
  • Download converted TTS sound (see FAQ)
  • No more Recaptcha! 🎉
  • Windows and MacOS support
  • Auto-updater, so you'll receive the latest features and fixes automatically

Installation

  • Go to releases and download the setup from the latest release.
    • On Windows, download the .exe file.
    • On MacOS, download either the .zip or .dmg file.
  • Run the setup.
    • Windows: if you get a SmartScreen warning, select More info and click Run anyway.
    • MacOS: Open the .dmg by right-clicking on it and selecting open, or try any of the installation methods in this link.
  • Start Elundus Core using the shortcut created on your desktop or from the start menu.

How it works

The frontend, apart from a few minor tweaks, is exactly the same as the https://www.elunduscore.com website that I've made. But instead of calling an external API, the application comes bundled with it's own API which in turn calls the Streamlabs API to convert the text-to-speech.


FAQ

Why did you make an application instead continuing to develop the website?

Elundus Core started out as a project for me to test out some donation messages for xQc, using the StreamElements API. Keep this in mind, this is important for later.

I decided make it public and host it as a website, mainly because of the low costs. Back then it was just a static website built with GatsbyJS, so it didn't cost much for me to host it and it was worth it. I wanted to perfect the website, so I've strived to get a high as possible score in Google Lighthouse and made sure to get SEO right, so the website would show up in Google.

After few months of having around 10-15 users a day, the website was featured in a Reddit post. I think it was on r/LiveStreamFails or r/xqcow, but I'm not sure. After that I saw that the amount of visitors was climbing rapidly and with that, the site ranked higher and higher in Google.

Fast-forward to July 17th, 2021. Apparently the website caused so much traffic for StreamElements that they decided to implement security measures. They added a captcha to their API, so it was impossible for the website to convert the TTS messages. I've thought of using a service that solves captchas (paid), but decided it was too expensive.

I've tinkered around with this for a few days until I stumbled upon the Streamlabs API. It does basically the same, but it couldn't be called directly from a website, there had to be a server inbetween. For the developers around: they protected the API with CORS. So I had to host a simple webserver/API that the website could call and everything was fine. Atleast I thought it was.

Apparently the Streamlabs API had a rate limit. Meaning you could only do 20 calls before you'd have to wait to do more calls. That wouldn't work since the website on it's peak had 35-40 TTS submits a minute and would cause an inconsistent user experience.

I've then decided this had to be fixed and created a proxy server system in order to prevent rate-limiting to occur. The website still calls 1 API, but the API then calls one of the proxy servers (and kept track of which one was rate-limited and which wasn't), and the proxy server in turn calls the Streamlabs API to convert the message.

This setup still works to this day, but having to host more and more proxies as the popularity increases is not a working solution for me. I've had the idea for a few months now, but finally made a desktop application for Elundus Core which comes with it's own bundled API which calls Streamlabs, which means I don't have to host an API or proxyservers anymore.

Why is there no phone support?

There are many phones around with operating systems and different browsers. It's hard to make a working website and continue developing features tested for all devices, that's why I converted the website to a desktop only app.


Contributing

Cloning and installing dependencies

Windows
  1. You can use Git as the CLI but it is not required

  2. Install NodeJS

  3. Install electron globally npm i -g electron

  4. Clone the project git clone https://github.com/SietseT/ElundusCoreApp.git

  5. Go in the project folder cd ElundusCoreApp

  6. And finally, install the project dependencies npm install

Mac
  1. Use Homebrew to install Git brew install git

  2. Use Homebrew to install Node brew install node

  3. Use npm to globally install Electron npm i -g electron and Concurrently npm i -g concurrently; If necessary, use the --forced or --legacy-peer-deps flags.

  4. Clone the project git clone https://github.com/SietseT/ElundusCoreApp.git

  5. Go in the project folder cd ElundusCoreApp

  6. Install the project dependencies npm i

Running and packaging

To run the application with hot-reloading (apart from the NodeJS server), run npm run dev in the root of the repository.

To compile the app and make an installer run npm run electron-pack -- -mw. Use flag -m to only package mac or -w to only package windows. Using the flag -mw will package for both the platforms.

Check the Electron CLI documentation for information on building for other platforms.

If you made somes changes and want them added in the main project, submit a pull-request and I'll look at it and decide if it will be added.