Skip to content

akluth/quackiquacki

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QuackiQuacki

Voice-first web navigation for accessible browsing.

Sprachgesteuerte Webnavigation für barrierearmes Surfen.

QuackiQuacki lädt Webseiten, extrahiert ihre relevante Struktur und macht Titel, Überschriften, Textabsätze und Links über Sprache, Tastatur und eine zugängliche GUI navigierbar.

QuackiQuacki loads websites, extracts their useful structure, and makes titles, headings, paragraphs, and links navigable through speech, keyboard controls, and an accessible GUI.


Deutsch

Über das Projekt

QuackiQuacki begann 2013 als Clojure-Proof-of-Concept für sprachgesteuerte Webnavigation. Version 2 ist eine vollständige Modernisierung mit TypeScript, barrierearmer Browseroberfläche, sicherer serverseitiger Webseitenanalyse und lokaler neuronaler Sprachausgabe.

Die Anwendung bettet fremde Webseiten bewusst nicht direkt ein. Stattdessen lädt der lokale Server eine Seite, reduziert sie auf eine vorhersehbare Struktur und zeigt diese als navigierbaren Seitenbaum an. Dadurch werden störende Layouts, Iframe-Beschränkungen und unnötige Inhalte vermieden.

Funktionen

  • Sprachbefehle auf Deutsch und Englisch
  • Lokale neuronale Sprachausgabe mit Piper und Thorsten High
  • Automatischer Windows-Sprachausgabe-Fallback
  • Browser-Spracherkennung über die Web Speech API
  • Extraktion von Titel, Beschreibung, Überschriften, Textabsätzen und Links
  • Nummerierte Links für Sprachbefehle wie Öffne Link drei
  • Navigation per Sprache, Maus, Tastatur oder Texteingabe
  • Vor- und Zurücknavigation
  • Moderner CLI-Modus mit denselben Navigationsbefehlen
  • Schutz vor Zugriffen auf lokale oder private Netzwerkadressen
  • Prüfung von Weiterleitungen und Begrenzung geladener HTML-Daten
  • Responsive und kontrastreiche Benutzeroberfläche

Voraussetzungen

  • Windows 10 oder Windows 11
  • Node.js 24 oder neuer
  • Python 3.14 oder kompatibel
  • Brave, Chrome oder ein anderer Chromium-basierter Browser für Spracherkennung

Die GUI und Sprachausgabe funktionieren auch ohne Browser-Spracherkennung. Befehle können jederzeit über das Textfeld eingegeben werden.

Installation

git clone https://github.com/akluth/quackiquacki.git
cd quackiquacki
git switch codex/modern-voice-gui
npm install
npm run install:piper

npm run install:piper installiert lokal:

  • Piper TTS 1.4.2
  • die deutsche neuronale Stimme de_DE-thorsten-high

Die Laufzeit und das ungefähr 114 MB große Stimmenmodell werden unter .local/ abgelegt und nicht in Git eingecheckt.

Anwendung starten

Entwicklungsmodus:

npm run dev

Anschließend http://localhost:4173 öffnen.

Produktions-Build:

npm run build
npm start

Terminalmodus:

npm run cli

Sprachbefehle

Befehl Wirkung
Öffne example.com Öffnet und analysiert eine Webseite
Titel vorlesen Liest Titel und Beschreibung vor
Links vorlesen Liest die nummerierten Links vor
Öffne Link drei Öffnet den dritten Link
Seite vorlesen Liest die wichtigsten Seiteninhalte vor
Zurück Öffnet die vorherige Seite
Vor oder Weiter Öffnet die nächste Seite
Wiederholen Wiederholt die letzte Sprachausgabe
Stopp Stoppt Zuhören und Sprachausgabe
Hilfe Zeigt die verfügbaren Befehle

Zusätzliche Tastatursteuerung:

  • Leertaste: Spracherkennung starten oder stoppen, solange kein Bedienelement fokussiert ist
  • Escape: Sprachausgabe stoppen

Piper-Sprachausgabe

Piper läuft als persistenter Hintergrundprozess. Das Stimmenmodell wird beim Serverstart einmal geladen und bleibt anschließend im Speicher. Folgesätze werden während der aktuellen Wiedergabe vorausberechnet, damit die Ausgabe schnell beginnt und möglichst flüssig bleibt.

Falls Piper nicht installiert ist oder nicht gestartet werden kann, verwendet QuackiQuacki unter Windows automatisch die installierte deutsche Systemstimme.

Sicherheit

Der Seitenabruf blockiert:

  • localhost und Loopback-Adressen
  • private IPv4- und IPv6-Netze
  • Link-Local-Adressen
  • URLs mit eingebetteten Zugangsdaten
  • Protokolle außerhalb von HTTP und HTTPS
  • Weiterleitungen auf blockierte Ziele
  • Nicht-HTML-Inhalte und übermäßig große Antworten

QuackiQuacki ist trotzdem kein vollständiger Webbrowser oder Sicherheits-Sandbox. Öffne nur Webseiten, denen du vertraust.

Projektstruktur

Pfad Inhalt
client/ GUI, Sprachsteuerung und Audio-Wiedergabe
server/ HTTP-Server, sicherer Seitenabruf, Extraktion und TTS-Endpunkt
shared/ Gemeinsame Typen und Befehlsparser
cli/ Terminaloberfläche
scripts/ Piper-Installation und persistenter Piper-Worker

Entwicklung und Qualitätsprüfungen

npm test
npm run build
npm audit --audit-level=low

Fehlerbehebung

Es ist keine Stimme zu hören

  1. Rechtsklick auf den Brave-Tab und prüfen, ob die Website stummgeschaltet ist.
  2. In der Kommandobrücke auf Stimme testen klicken.
  3. Prüfen, ob npm run install:piper erfolgreich ausgeführt wurde.
  4. Den Entwicklungsserver neu starten.

Piper startet nicht

npm run install:piper

Danach kontrollieren, ob .local/piper-runtime und .local/piper-voices/de_DE-thorsten-high existieren.

Eine Webseite kann nicht geladen werden

Einige Webseiten blockieren automatisierte Abrufe. Lokale und private Netzwerkziele werden aus Sicherheitsgründen immer abgelehnt.


English

About the project

QuackiQuacki started in 2013 as a Clojure proof of concept for voice-controlled web navigation. Version 2 is a complete modernization using TypeScript, an accessible browser interface, secure server-side page analysis, and local neural speech synthesis.

The application intentionally does not embed third-party websites. Its local server loads a page, reduces it to a predictable structure, and presents it as a navigable page tree. This avoids noisy layouts, iframe restrictions, and irrelevant content.

Features

  • German and English voice commands
  • Local neural speech synthesis using Piper and Thorsten High
  • Automatic Windows speech fallback
  • Browser speech recognition through the Web Speech API
  • Extraction of titles, descriptions, headings, paragraphs, and links
  • Numbered links for commands such as Open link three
  • Navigation by voice, mouse, keyboard, or text input
  • Back and forward history
  • Modern CLI mode using the same navigation commands
  • Protection against local and private network requests
  • Redirect validation and HTML response size limits
  • Responsive, high-contrast user interface

Requirements

  • Windows 10 or Windows 11
  • Node.js 24 or newer
  • Python 3.14 or compatible
  • Brave, Chrome, or another Chromium-based browser for speech recognition

The GUI and speech output still work without browser speech recognition. Commands can always be entered through the text input.

Installation

git clone https://github.com/akluth/quackiquacki.git
cd quackiquacki
git switch codex/modern-voice-gui
npm install
npm run install:piper

npm run install:piper installs locally:

  • Piper TTS 1.4.2
  • the German neural voice de_DE-thorsten-high

The runtime and approximately 114 MB voice model are stored under .local/ and are not committed to Git.

Running the application

Development mode:

npm run dev

Then open http://localhost:4173.

Production build:

npm run build
npm start

Terminal mode:

npm run cli

Voice commands

Command Action
Open example.com Opens and analyzes a website
Read title Reads the title and description
Read links Reads the numbered links
Open link three Opens the third link
Read page Reads the most relevant page content
Back Opens the previous page
Forward Opens the next page
Repeat Repeats the previous speech output
Stop Stops listening and speech output
Help Shows the available commands

Additional keyboard controls:

  • Space: start or stop speech recognition while no control is focused
  • Escape: stop speech output

Piper speech synthesis

Piper runs as a persistent background process. The voice model is loaded once when the server starts and remains in memory. Following sentences are prepared while the current audio is playing, allowing speech to begin quickly and continue smoothly.

If Piper is not installed or cannot be started, QuackiQuacki automatically uses the installed German Windows system voice.

Security

The page fetcher blocks:

  • localhost and loopback addresses
  • private IPv4 and IPv6 networks
  • link-local addresses
  • URLs containing credentials
  • protocols other than HTTP and HTTPS
  • redirects to blocked targets
  • non-HTML content and excessively large responses

QuackiQuacki is still not a complete web browser or security sandbox. Only open websites you trust.

Project structure

Path Purpose
client/ GUI, speech controls, and audio playback
server/ HTTP server, secure page fetching, extraction, and TTS endpoint
shared/ Shared types and command parser
cli/ Terminal interface
scripts/ Piper installation and persistent Piper worker

Development and quality checks

npm test
npm run build
npm audit --audit-level=low

Troubleshooting

No speech can be heard

  1. Right-click the Brave tab and verify that the website is not muted.
  2. Click Stimme testen in the command panel.
  3. Verify that npm run install:piper completed successfully.
  4. Restart the development server.

Piper does not start

npm run install:piper

Then verify that .local/piper-runtime and .local/piper-voices/de_DE-thorsten-high exist.

A website cannot be loaded

Some websites block automated requests. Local and private network targets are always rejected for security reasons.


License

Copyright (C) 2013-2026 Alexander Kluth

QuackiQuacki is free software licensed under the GNU General Public License, version 3 or later.

About

Speech recognition for doing several easy tasks, PoC, heavily inspired by Saria

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors