Tag: macos

  • Reading Selected Text out Loud: How to Create a Custom Text-to-Speech Service on macOS

    Reading Selected Text out Loud: How to Create a Custom Text-to-Speech Service on macOS

    On September 15, 2025, Apple released macOS Tahoe. This shiny new OS packs some pretty cool features that most folks probably haven’t spotted yet. One of them is Apple Intelligence—Apple’s AI sidekick, which, ironically, depends on ChatGPT. It provides you with “Writing Tools” to rephrase, summarize, translate, and all that jazz.

    Now, sometimes I want to share a news article with my partner while we’re in the same room. Instead of reading it out loud, I use the built-in text-to-speech feature called “Speak.” Just highlight the text, right-click, and pick “Speak” → “Start Speaking.” macOS 11 Big Sur included it, and after a few tweaks on Apple’s side, it works pretty well.

    However, it has one gigantic flaw: it only works in some apps. Even apps explicitly for writing, like my favorite Typora, don’t have the “Speak” option.

    That’s why I created a custom text-to-speech tool myself. Turns out, it’s surprisingly easy; you might be done and ready in less than 20 minutes. The big advantage: no ChatGPT needed. It uses macOS’ native voice models, so it’s faster and works even when you’re offline.

    Note

    My macOS interface is in German, and so are all apps and their descriptions, buttons, and so on. I tried my best to translate the labels into English, but some translations might not be accurate.

    tl;dr

    1. Click on this link to view the final shortcut
    2. Click “Receive Shortcut” and let it import itself into the Shortcuts app
    3. Right-click on any text and choose “Services” → “Vorlesen”

    Abstract

    So, we’re creating a way to have macOS’ native voices speak any text we highlight. You might think this is a perfect case for the Automator app, but it’s not. The magic app that is more powerful as you might think is called Shortcuts.

    We’re going to create a custom shortcut. It’ll take in the selected text, determine its language, and then read it out aloud in your native language (or any other language you choose). Sounds easy? It’s because it is.

    1. Create a Custom Shortcut

    Use Spotlight (⌘ + space) to open it and enter shortcuts. Once it’s open, it’s important that you switch to the “Quick Actions” library on the left. After that, click on the + icon to create a new shortcut:

    Reading Selected Text out Loud: How to Create a Custom Text-to-Speech Service on macOS — 1
    Add the shortcut to the correct library

    Since we created our shortcut in the “Quick Actions” library, our new shortcut starts with a module that receives whatever we select when we click it. I’d recommend changing the name since this is the one that will be displayed in the “Services” context menu

    Reading Selected Text out Loud: How to Create a Custom Text-to-Speech Service on macOS — 2
    Add a name and change the field types to “text” variants

    As you can see in the “2” marker, it points to the field type(s) from which the shortcut is supposed to receive the content. Click on it, unselect all items, and only keep “Text”, “Formatted Text”, and “Article” selected:

    Reading Selected Text out Loud: How to Create a Custom Text-to-Speech Service on macOS — 3
    Image #1 for “reading selected text out loud: how to create a custom text-to-speech service on macos”

    2. Prepare the Text-to-Speech Logic

    This is the main part. We’re adding the logic—named “Actions” in the Shortcuts app—from the predefined Actions library.

    The exact workflow needs the following Actions in the right order:

    1. “Add to variable”
    2. “Recognize language”
    3. An “If” condition, which creates two more modules:
      • “If”: What happens when the condition we’re going to set in a minute is true.
      • “Else”: What happens when the condition is not true.
      • “End of If”: This will close the conditional logic. No changes needed.

    3. Identify the Language

    Now, we only have to add some “Actions” and change some values. To store the text we highlighted and want to read out, we’ll need to pass it to a variable via “Add to Variable”. Leave the first selection as “Quick Action content” and give the variable the name “Text”.

    Now it’s time to identify the language of the text so our text-to-speech can work. Add the Action called “Recognize language” from the library and put it below the variable. Right-click into the placeholder and select our variable, Text:

    Reading Selected Text out Loud: How to Create a Custom Text-to-Speech Service on macOS — 4
    Image #2 for “reading selected text out loud: how to create a custom text-to-speech service on macos”

    4. Conditions

    Since we want English to be read in English and, in my case, German to be spoken in German, we have to set this as the condition. The order of the input fields is a bit off, but it still makes sense: If Text, which is the identified language, is Englisch1, then is:

    Reading Selected Text out Loud: How to Create a Custom Text-to-Speech Service on macOS — 5
    Image #3 for “reading selected text out loud: how to create a custom text-to-speech service on macos”

    Now we have to define what actually happens if the text is in English. Move the Action “Read variable” inside the “If” condition and let it receive the value in our Text variable. If it doesn’t add this automatically, right-click the field and select it manually.

    The next part is the actual text-to-speech part. Add the action “Speak Text”. Via the dropdown icon, you can select which language should be spoken, the voice, the tempo, and so on. Since this condition is set to Englisch, we select a German voice with the input of our Text variable:

    If English, then get the selected text and read it out loud
    Image #4 for “reading selected text out loud: how to create a custom text-to-speech service on macos”

    The “Else” condition works the same way. If it’s not Englisch, it’ll read it in German. Makes sense, right? Use the variable again so you can add Text into the “Speak text” action, and that’s it.

    5. Save as Service

    Aaaaaand we’re done. No, seriously, it’s that simple. Save your shortcut and make sure it’s in the “Quick Actions” library as shown before. After that, test it.

    Select any text, for example, in your browser or in a writing app, and choose your new shortcut name under “Services”. The text will now be read in the right language and with a great voice model.

    Here’s the entire workflow in one image, although in German:

    Full text-to-speech shortcut workflow
    Image #5 for “reading selected text out loud: how to create a custom text-to-speech service on macos”

    If you want to add more languages, you can, of course, add more conditions, but I personally only need English and German. No API is used, so it runs solely on your macOS, and you’re not limited by OpenAI’s LLM rate limits.

    Footnotes

    1. Since my macOS is set to German, the languages are also Germanized. Instead of English, I need to add Englisch. Keep this in mind. ↩︎
  • What’s in my /Applications Folder: 10 macOS Apps I can’t (or don’t want to) live without

    What’s in my /Applications Folder: 10 macOS Apps I can’t (or don’t want to) live without

    I have a weird habit. Every few years, I feel the urge to wipe my iMac, MacBook Pro, or whatever device I’m actively working on completely clean. I do have backups, but I don’t use them. Instead, I choose to format the entire hard disk and start setting up everything from scratch. That also applies to all my apps.

    And when it comes to apps, I’m as picky as my cat deciding which cardboard to sit in. Here are 10 apps – some of them paid, some of them open-source – that I don’t want to miss when working on macOS.

    (more…)
  • Fixing “Apple could not verify [some app] is free of malware that may harm your Mac or compromise your privacy.” Move to trash? I don’t think so

    Fixing “Apple could not verify [some app] is free of malware that may harm your Mac or compromise your privacy.” Move to trash? I don’t think so

    Apple doesn’t like software that doesn’t come from the App Store. In fact, Apple doesn’t want any software that has not been vetted by Apple itself. This applies to cracked apps (shame on you 🤐) and open-source apps from, let’s say, GitHub.

    The error message for this is always the same: “Apple could not verify [some app] is free of malware that may harm your Mac or compromise your privacy. ” It actually recommends moving the app to Trash. God, thanks. macOS has a decent command line, which allows us to fix this issue with just one line of code.

    (more…)
  • Using BoltAI’s Shell Plugin to Automate Tedious and Boring Tasks with Groq

    Using BoltAI’s Shell Plugin to Automate Tedious and Boring Tasks with Groq

    I know, I know, the AI hype train has long left the station, and it’d be rather embarrassing to explain for the millionth time what AI (or, to be precise, generative AI), how they work, and what prompts yield the best results for whatever you’re using it for.

    But there’s one feature that, at least according to my observations, is rarely touched: plugins. Let me give you just one example of how it can automate a whole chain of commands with just one prompt.

    (more…)