Multilingual Text-to-Speech (TTS) app for Twitch on macOS

software developer && gamer passionate about software development && games ... catch my twitch streams on twitch where I stream: https://twitch.tv/techygrrrl
Search for a command to run...

software developer && gamer passionate about software development && games ... catch my twitch streams on twitch where I stream: https://twitch.tv/techygrrrl
No comments yet. Be the first to comment.
About 2 days ago, I learned that you can use web APIs to edit video. In the past, I've used ffmpeg, which is an amazing open-source cross-platform command line tool that pretty much every company uses

If youโve been reading my blog or watching my Twitch streams you may have already seen me talk about text-to-speech apps. If not, a quick overview: I built a text-to-speech app for Windows using C# and Windows Presentation Framework. You can read ab...

sf6vid is a command line tool that allows you to censor player data in a Street Fighter 6 game play video. How it works sf6vid is a command line tool. In order to use it you need to install it and execute the file from your terminal. In the future th...

I made a user script as a gist for making the Twitch Dev site use dark mode. It should work on all dev.twitch.tv and dev.twitch.com pages at the /docs path. If you find a bug, let me know in the blog or gist comments. https://gist.github.com/techygrr...

Problem Currently, Twitch has both dark and light modes for the UI, but when you go into Theatre Mode, your preference for light mode is ignored and you're forced to use dark mode. Many users find it easier to read in light mode, but the option to vi...

techygrrrl's blog
9 posts
Twitch streamer from Canada. If I'm not playing video games ๐น I'm probably coding and developing websites or apps ๐ฉ๐ปโ๐ป
Previously, I had built a text-to-speech app on Windows to help me listen to my Twitch chat while streaming. You can read about the project, why I built it, and download it here. This post is about the macOS version which I built on stream. If you're curious about my streams, follow me on Twitch @techygrrrl.

This text-to-speech app supports all languages that Apple supports by default.
Here's a snippet of code that shows which languages are supported:
.init(name: "Arabic", languageKey: "ar"),
.init(name: "Chinese", languageKey: "zh"),
.init(name: "Czech", languageKey: "cs"),
.init(name: "Danish", languageKey: "da"),
.init(name: "Dutch", languageKey: "nl"),
.init(name: "English", languageKey: "en"),
.init(name: "Finnish", languageKey: "fi"),
.init(name: "French", languageKey: "fr"),
.init(name: "German", languageKey: "de"),
.init(name: "Greek", languageKey: "el"),
.init(name: "Hebrew", languageKey: "he"),
.init(name: "Hindi", languageKey: "hi"),
.init(name: "Hungarian", languageKey: "hu"),
.init(name: "Indonesian", languageKey: "id"),
.init(name: "Italian", languageKey: "it"),
.init(name: "Japanese", languageKey: "ja"),
.init(name: "Korean", languageKey: "ko"),
.init(name: "Norwegian", languageKey: "nb"),
.init(name: "Polish", languageKey: "pl"),
.init(name: "Portuguese", languageKey: "pt"),
.init(name: "Romanian", languageKey: "ro"),
.init(name: "Russian", languageKey: "ru"),
.init(name: "Slovak", languageKey: "sk"),
.init(name: "Spanish", languageKey: "es"),
.init(name: "Swedish", languageKey: "sv"),
.init(name: "Thai", languageKey: "th"),
.init(name: "Turkish", languageKey: "tr")
Support depends on the macOS version and installed voices. At time of development, on macOS 11, the above languages are supported. Please note that not all of them have been tested.

You are able to configure the speed and volume controls on the Listen screen. The recommended speed is 0.5.
You can also stop the app from speaking if it's in the middle of speaking. Note that any already-queued up messages will not be spoken. Once another person sends a message after it's been stopped, they will continue to be read aloud. To stop it entirely, quit the app or lower the volume to 0%.

The app includes features to reduce noise from official Twitch emotes. BTTV emotes and unicode emojis not currently supported so they will be read aloud.
This app has the ability to replace words in text, just like the Windows version I built. It runs on the message text and the username.
This can be useful for the following reasons:
expand internet slang / short forms
override username pronunciation

This app adds the ability to ignore usernames. This is useful if you do not want to hear your bots' messages being read aloud.

Once I pay for an Apple developer account ($100/yr) to sign and distribute the app, it will become available. Unfortunately, Apple does not allow developers to distribute an app without paying the annual fee. If you need access to a text-to-speech app and have a Windows computer, you can download and install the Windows version. It's available now and is free.

I built this in 7 streams. Streams ranged from 5 to 9 hours long. It was an epic journey learning SwiftUI and the text-to-speech API's on macOS.
You can watch my journey learning SwiftUI and macOS development on Twitch in the following video collection: https://www.twitch.tv/collections/-9v-a8uO8RbfCA
You can also see individual videos:
This is what it looked like on day 1 before the stream started:
