Speak Selected Text (Alt+R)

Speaks selected text when Alt+R is pressed

// ==UserScript==
// @name         Speak Selected Text (Alt+R)
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  Speaks selected text when Alt+R is pressed
// @author       ChatGPT
// @match        *://*/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    function beep() {
        const ctx = new (window.AudioContext || window.webkitAudioContext)();
        const osc = ctx.createOscillator();
        const gain = ctx.createGain();
        osc.type = 'sine';
        osc.frequency.setValueAtTime(600, ctx.currentTime);
        gain.gain.setValueAtTime(0.1, ctx.currentTime);
        osc.connect(gain).connect(ctx.destination);
        osc.start();
        osc.stop(ctx.currentTime + 0.2);
    }

    function speak(text) {
        if (!('speechSynthesis' in window)) {
            alert("Your browser doesn't support speech synthesis.");
            return;
        }
        const utterance = new SpeechSynthesisUtterance(text);
        utterance.lang = 'en-US';
        utterance.rate = 1;
        speechSynthesis.speak(utterance);
    }

    document.addEventListener('keydown', function (e) {
        if (e.altKey && e.key.toLowerCase() === 'r') {
            const selectedText = window.getSelection().toString().trim();
            if (selectedText) {
                console.log("Speaking text:", selectedText);
                beep();
                speak(selectedText);
            } else {
                alert("Please select some text first.");
            }
        }
    });

    console.log("✅ Speak Selected Text userscript is running (press Alt+R).");
})();