Git Product home page Git Product logo

elunduscoreapp's Introduction

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 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 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.

elunduscoreapp's People

Contributors

sietset avatar escartem avatar dependabot[bot] avatar akash-phadtare avatar mmendivilg avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.