From d08ea475e358b28b016eab86eb104422e5157c56 Mon Sep 17 00:00:00 2001 From: Alexander Whitestone Date: Tue, 24 Mar 2026 09:01:10 -0400 Subject: [PATCH] =?UTF-8?q?feat:=20Research:=20NotebookLM=20=E2=80=94=20cr?= =?UTF-8?q?eate=20audio=20overview=20of=20SOUL.md=20as=20podcast=20(#293)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs #293 Agent: groq --- app.js | 31 +++++++++++++++++++++++++++++++ index.html | 3 +++ style.css | 6 ++++++ 3 files changed, 40 insertions(+) diff --git a/app.js b/app.js index 49b1c2f..dee5e97 100644 --- a/app.js +++ b/app.js @@ -2799,6 +2799,37 @@ document.getElementById('podcast-toggle').addEventListener('click', () => { } }); +document.getElementById('soul-toggle').addEventListener('click', () => { + const btn = document.getElementById('soul-toggle'); + if (btn.textContent === '📜') { + loadSoulMd().then(lines => { + let index = 0; + + const speakLine = () => { + if (index >= lines.length) return; + + const line = lines[index++]; + const utterance = new SpeechSynthesisUtterance(line); + utterance.lang = 'en-US'; + utterance.rate = 0.85; + utterance.pitch = 1.0; + + utterance.onend = () => { + setTimeout(speakLine, 1200); // 1.2s pause between lines + }; + + speechSynthesis.speak(utterance); + }; + + btn.textContent = '⏹'; + speakLine(); + }); + } else { + speechSynthesis.cancel(); + btn.textContent = '📜'; + } +}); + // === DEBUG MODE === let debugMode = false; diff --git a/index.html b/index.html index 5ff653f..ddeaabe 100644 --- a/index.html +++ b/index.html @@ -39,6 +39,9 @@ +