Blogg

  • Alma, Spiel och Orca — svensk tillgänglighet på Linux

    Alma, Spiel och Orca — svensk tillgänglighet på Linux

    Orca skärmläsare har länge varit det självklara valet för synnedsatta Linux-användare, men stödet för svenska röster har historiskt varit bristfälligt. Med Spiel — GNOME:s nya talramverk — och den svenska Piper-rösten Alma ändras det nu.

    Vad är Orca, Spiel och Piper?

    Orca är GNOME:s inbyggda skärmläsare. Den läser upp vad som händer på skärmen — menyer, knappar, text — för användare som inte kan se. Orca stöder punktskrift (braille), tangentbordsnavigering och anpassningsbara röstprofiler.

    Spiel är ett nytt talramverk för Linux som ersätter det åldrade speech-dispatcher. Det använder D-Bus och GStreamer för att koppla ihop skärmläsare med talsyntes-leverantörer (”speech providers”). Fördelen med Spiel är att rösterna kan installeras oberoende — varje röst är en egen D-Bus-tjänst som startar automatiskt.

    Piper är en neuralt baserad text-till-tal-motor (ONNX) som ger naturligt klingande tal. Den körs helt lokalt — ingen molntjänst behövs.

    Alma är en svensk Piper-röst (sv_SE) som vi använder med speech-provider-piper — en Rust-binär som serverar Piper-modeller via D-Bus till Spiel.

    Arkitektur

    Orca (skärmläsare)
      └─ libspiel (klientbibliotek, GObject Introspection)
           └─ D-Bus → ai.piper.Speech.Provider (speech-provider-piper)
                └─ Piper/sonata engine + ONNX-modell
                     └─ Röstfiler i /usr/share/piper/voices/

    Fördelar

    • Helt lokalt — ingen molntjänst, ingen internetanslutning krävs
    • Naturligt tal — neurala modeller ger mycket bättre kvalitet än äldre regelbaserade synteser (eSpeak, Festival)
    • Automatisk start — speech-provider-piper aktiveras via D-Bus när Orca eller Spiel begär tal
    • Lätthanterligt — nya röster installeras genom att lägga ONNX-filer i /usr/share/piper/voices/
    • Snabbt — Rust-binären speech-provider-piper är resurssnål och startar direkt

    Demo

    Här är en inspelad skärmsession som visar Alma-rösten via Spiel. Terminalen kör spiel-kommandot som syntetiserar svensk text i realtid:


    Alma Voice Demo i terminal

    Orca-inställningar med Spiel

    Orca 50 har inbyggt stöd för Spiel som talsystem. Här syns inställningarna på svenska:

    Orca - Läs upp allt
    Orca - Eko
    Orca - Markörnavigering
    Orca - Systeminformation

    Installation via pakethanterare

    Vi har byggt färdiga paket för både Debian/Ubuntu (.deb) och Fedora (.rpm). Det enda du behöver göra är att lägga till repot och installera:

    Ubuntu / Debian

    # Lägg till repot
    echo "deb [trusted=yes] https://yeager.github.io/debian-repo/ stable main" | \
      sudo tee /etc/apt/sources.list.d/yeager-l10n.list
    sudo apt update
    
    # Installera speech-provider-piper + Alma-rösten
    sudo apt install speech-provider-piper piper-voice-sv-alma

    Fedora

    # Lägg till repot
    sudo dnf config-manager addrepo --from-repofile=https://yeager.github.io/rpm-repo/yeager.repo
    
    # Installera speech-provider-piper + Alma-rösten
    sudo dnf install speech-provider-piper piper-voice-sv-alma

    Paketen installerar:

    • speech-provider-piper — Rust-binären + D-Bus-service för Spiel (GitHub release)
    • piper-voice-sv-alma — Alma ONNX-modell + konfiguration i /usr/share/piper/voices/sv_SE-alma-medium/

    Libspiel (om det inte redan finns)

    Spiel-biblioteket behövs också, men det finns ännu inte i distrorepona. Bygg från källkod:

    # Förutsättningar (Ubuntu)
    sudo apt install meson gcc libglib2.0-dev libgirepository1.0-dev \
      libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
    
    # Bygg libspiel
    cd /tmp
    git clone https://github.com/project-spiel/libspiel.git
    cd libspiel
    meson setup build --prefix=/usr -Dtests=false -Ddocs=false
    meson compile -C build
    sudo meson install -C build
    sudo ldconfig

    Verifiera

    # Lista röster
    spiel -V
    # Förväntat: Alma  sv-SE  sv_SE-alma-medium  ai.piper.Speech.Provider
    
    # Testa tal
    spiel -v sv_SE-alma-medium -p ai.piper.Speech.Provider "Hej, jag heter Alma."
    
    # Starta Orca med Spiel
    orca --replace --speech-system=spiel

    Röstkvalitet: brusparametrar

    Pipers standardparametrar kan ge hörbart brus. Redigera röstens JSON-config (/usr/share/piper/voices/sv_SE-alma-medium/alma-voice.onnx.json) och sätt:

    "inference": {
      "noise_scale": 0.3,    // standard 0.667 — för brusigt
      "length_scale": 1,
      "noise_w": 0.5         // standard 0.8 — för mycket variation
    }

    Testat på

    • Ubuntu 26.04 (Orca 50 beta) ✅
    • Fedora 43 (GNOME 49.4, Orca 49.5) ✅

    Status och framtid

    Libspiel kräver fortfarande manuell kompilering, men speech-provider-piper och Alma-rösten finns som färdiga paket i vårt repo. Förhoppningen är att libspiel snart paketeras av distributionerna. Det finns också planer på att:

    • Publicera Alma-rösten i Pipers röstkataloger på HuggingFace
    • Bidra med buggfixar upstream (linker-buggen, nightly Rust-kravet)

    Tillgänglighet på svenska har aldrig varit bättre — och det blir bara bättre härifrån.

    Länkar

  • Spiel, Keycloak, EmuDeck och 976 piktogram

    Senaste veckan har det hänt en del på översättnings- och tillgänglighetsfronten. Här är en sammanfattning.

    speech-provider-piper — Piper TTS för GNOME Orca

    Jag har paketerat speech-provider-piper som .deb, .rpm och AUR-paket. Det är en D-Bus speech provider som kopplar ihop Piper neural TTS med GNOME:s Spiel-ramverk.

    I praktiken: installera paketet, kör orca --replace --speech-system=spiel, klart. D-Bus auto-activation sköter resten. Testat på Ubuntu 26.04 och Fedora 43 med den svenska rösten sv_SE-alma-medium.

    Paket finns i mitt apt-repo, rpm-repo och på AUR.

    Keycloak — svensk översättning komplett

    PR #47005 skickad till Keycloak med komplett svensk översättning:

    • Account: 37% → 100% (+222 strängar)
    • Email: 37% → 100% (+41 strängar)
    • Login: 99% → 100% (+7 strängar)

    Keycloak används som identitetsleverantör av bland annat Fedora, KDE och många företag. Att ha fullständig svensk översättning av inloggnings- och kontohanteringssidorna är viktigt för tillgängligheten.

    EmuDeck — svensk översättning

    Skickade PR #33 med komplett svensk översättning (294 strängar, 100%) av EmuDeck, det populära verktyget för att konfigurera emulatorer på Steam Deck.

    Canonical authd — i18n-förfrågan

    Ubuntu 26.04 har stöd för authd, Canonicals nya autentiseringstjänst för externa identitetsleverantörer (bl.a. Microsoft Entra ID). Jag har skapat issue #1308 med förfrågan om internationalisering och erbjudit svensk översättning.

    Bildstöd — 976 piktogram med Stockholm-tema

    Bildstödsbiblioteket på autismappar.se har nu 976 piktogram. Senaste tillskottet är 40 Stockholm-specifika bilder som barn kan relatera till: SL-buss, tunnelbana, pendeltåg, Skansen, Gröna Lund, förskola, skolgård, fritids, fika, kebab och mycket mer.

    tp-sv-lint — automatisk uppdatering

    Skapade ett fristående skript som automatiskt uppdaterar tp-sv-lint-sidan varannan natt kl 04:00 via launchd. Helt utan manuell körning — laddar ner PO-filer, kör lint, genererar HTML och laddar upp till servern.

  • Två dagars översättningsmaraton med AI

    De senaste två dagarna har jag och min AI-assistent genomfört ett massivt översättningsprojekt. Här är en sammanfattning.

    GNU Translation Project — 143 svenska PO-filer

    Vi har granskat samtliga 143 svenska PO-filer i GNU Translation Project med tre verktyg:

    • l10n-lint — 6 729 issues hittade (format, interpolation, terminologi)
    • svlang — 3 737 anglicismer + 21 skrivregelfel
    • AI-granskning — 22 filer med konkreta förbättringsförslag

    Resultatet finns publikt: danielnylander.se/tp-sv-lint/ — en interaktiv webbsida med filtrering, diff-nedladdning och kvalitetsindikatorer per paket.

    Tre paket (mailfromd, savane, denemo) skickades in till TP med 10/10 kvalitet.

    Verktygsreleaser

    Under arbetet utvecklades verktygen avsevärt:

    • l10n-lint 1.18.0 — ny decimalkomma-check, pluralformkontroll (7 regler), typo-detektion, terminologi, false friends, y/n→j/n, anglicism-check
    • svlang 0.2.0 — nytt skrivregler-kommando (särskrivning, de/dem, stavfel), 83% färre false positives på svengelska-checken
    • po-translate 1.6.0 — fixade bugg som förstörde pluralformer, ny --fuzzy-flagga

    Alla tre finns som .deb och .rpm i mina paketrepon.

    Ardour — svensk översättning +620 strängar

    Ardours svenska översättning gick från 92,5% till 99,8% täckning. 620 nya strängar översattes via DeepL Pro API och sedan hårdgranskades med korrekt DAW-terminologi (insticksmodul, fader, spår, sampel). PR #1070 ligger uppe.

    GIMP — 70 nordiska snabbkommandon fixade

    Alla 6 svenska PO-filer (10 981 strängar) granskades. Huvudfyndet: 70 snabbkommandon (accelerators) som låg på åäö — flyttade till närmaste ASCII-bokstav med ett specialskrivet Python-skript som bevarar alla svenska tecken.

    NetworkManager — stenhård granskning

    2 523 strängar granskade. Filen var redan i utmärkt skick — bara en anglicism hittad (”default”→”standard” i löptext).

    Blender — 38 000 strängar uppladdade

    En komplett svensk översättning (38 016 strängar) laddades upp till Blenders Weblate-instans. Cloudflare-skydd krävde en kreativ CDP-approach (Chrome DevTools Protocol) för att komma förbi JS-utmaningen.

    FreeCAD — Crowdin

    27 .ts-filer (kärnan) och 25 addon-filer granskades med korrekt CAD-terminologi (villkor, kropp, utfyllnad, montering). Allt laddat upp till Crowdin.

    Qt 6.11

    Patchset 3 för svenska Qt-översättningen ligger på Gerrit #714640. Alla 5 review-kommentarer från Mats Honkamaa har åtgärdats.

    Godot Engine + OBS Studio

    Just påbörjat: Godot (6 183 strängar, kvalitetsgranskning) och OBS Studio (107 saknade strängar översatta, full review av 1 408 strängar).

    Alma — svensk TTS-röst

    Vi jämförde 5 olika TTS-parametervarianter och valde den renaste (noise_scale 0.3, noise_w 0.5). Publicerad på HuggingFace. Axels röst tränas fortfarande (epoch 799/3000).

    Övrigt

    • RHVoice — svenskt språkmodul byggt och publicerat (GitHub)
    • Etcher — v2.1.4-l10n med 5 översättningar integrerade
    • autismappar.se — nu 72 appar, 3 nya för verbal dyspraxi/CAS

    Två intensiva dagar. Open source-översättning lever. 🇸🇪

  • ClipKeeper — A GTK4 Clipboard Manager for Linux

    ClipKeeper — A GTK4 Clipboard Manager for Linux

    ClipKeeper screenshot
    ClipKeeper — a modern clipboard manager for Linux

    English

    ClipKeeper is a new clipboard manager for Linux, built with GTK4 and libadwaita. It monitors your clipboard and keeps a searchable history of everything you copy — text, URLs, code snippets, and more.

    Key features:

    • Clipboard history with up to 500 entries
    • Instant search and filtering (Ctrl+F)
    • Pin important clips so they never expire
    • Auto-detect content types (URLs, code, colors)
    • System tray indicator
    • Follows system dark/light theme
    • CLI: clipkeeper --list, --clear, --version

    Available as .deb and .rpm packages from our Debian and RPM repositories. Translations are managed on Transifex — currently available in 11 languages.

    🔗 Links: GitHub · Download v0.1.0 · Translate

    🔐 Secure Storage (v0.2.0)

    Your clipboard history may contain passwords and sensitive data. ClipKeeper encrypts all history at rest using Fernet (AES-128-CBC + HMAC) with a machine-derived key via PBKDF2 (100,000 iterations). History files are restricted to owner-only permissions (0600).


    Svenska

    ClipKeeper är en ny urklippshanterare för Linux, byggd med GTK4 och libadwaita. Den övervakar urklipp och sparar en sökbar historik av allt du kopierar — text, URL:er, kodavsnitt och mer.

    Funktioner:

    • Urklippshistorik med upp till 500 poster
    • Snabbsökning och filtrering (Ctrl+F)
    • Fäst viktiga klipp så de aldrig försvinner
    • Automatisk identifiering av innehållstyp (URL, kod, färger)
    • Systemfältsindikator
    • Följer systemets mörka/ljusa tema
    • Kommandorad: clipkeeper --list, --clear, --version

    Tillgänglig som .deb- och .rpm-paket från våra Debian– och RPM-förråd. Översättningar hanteras på Transifex — för närvarande tillgänglig på 11 språk.

    🔗 Länkar: GitHub · Ladda ner v0.1.0 · Översätt

  • Autismappar.se — 56 appar, native-byggen och individuella app-sidor

    Mycket har hänt med autismappar.se de senaste dagarna. Här är en sammanfattning av det viktigaste.

    56 appar

    Tre nya appar har tillkommit sedan förra uppdateringen, vilket ger totalt 56 appar i 7 kategorier: kommunikation, vardagsrutiner, tid & planering, känslor & lugn, lärande, minne & lek, samt tal & dyspraxi.

    Individuella app-sidor

    Varje app har nu en egen sida på autismappar.se/appar/ med:

    • Beskrivning av vad appen gör och dess syfte
    • Vilka barn den är tänkt att hjälpa
    • Skärmbilder (35 nya svenska skärmbilder)
    • Direktlänk till appen i launchern

    Exempel: Bokstavsresan, Ljudlotteriet, Brädbyggaren

    Native-byggen

    Autismappar finns nu som native-applikationer för alla plattformar:

    • macOS — Tauri v2 (DMG, aarch64 + x64)
    • Windows — EXE och MSI-installerare
    • Linux — .deb (Debian/Ubuntu) och .rpm (Fedora) via egna paketförråd
    • Android — APK (TWA, Trusted Web Activity)

    Alla finns på nedladdningssidan och på GitHub release v0.2.0.

    Utskriftsmaterial med skärmbilder

    Nya handout-PDF:er (A4) i svenska och engelska med skärmbilder, kategoribeskrivningar och nedladdningslänkar. Perfekta att dela med skola, habilitering eller logoped. Finns på materialsidan.

    Internationalisering (i18n)

    Stor insats för att eliminera all hårdkodad engelska. Över 470 nya i18n-nycklar har lagts till, och 16+ app-filer har uppdaterats. Alla synliga texter — inklusive placeholders, aria-labels och knapptexter — använder nu $t() för att stödja svenska och engelska.

    Teckenordbok

    Teckenordboken har fått korrigerade video-ID:n och ny URL-logik. Tio felaktiga videolänkar till Stockholms universitets teckenspråkslexikon har åtgärdats.

    Chrome-tillägget (Visio Viewer)

    Version 1.2.2 av Chrome-tillägget för Visio-filer har skickats in till Chrome Web Store. Den oanvända scripting-behörigheten som orsakade avslag har tagits bort.

    Pågående: Axels röst

    Träning av en manlig svensk TTS-röst (”Axel”) pågår på en RTX 4080 med 18 000+ träningssegment från riksdagstal. Version 7 rullar med batch-size 32 och 3000 epoker.

    Teknisk stack

    • SvelteKit + adapter-static (PWA)
    • Tauri v2 (native desktop)
    • Piper WASM (TTS i webbläsaren)
    • ARASAAC (piktogram)
    • Web Speech API (fallback på iOS/Android)
    • Transifex (översättningshantering)

    Allt är öppen källkod: github.com/yeager/autismapps

  • Visio Viewer: A Chrome Extension That Opens .vsdx Files — No Visio Required

    Visio Viewer: A Chrome Extension That Opens .vsdx Files — No Visio Required

    Ever received a .vsdx file and had no way to open it? Microsoft Visio is expensive, Windows-only, and most online converters want you to upload your diagrams to some random server. There had to be a better way.

    So I built one: Visio Viewer, a Chrome extension that renders Visio files directly in your browser. No cloud. No uploads. No Visio license. Everything runs locally.

    What It Does

    Drop a .vsdx file onto Chrome (or use the file picker), and you get a clean SVG rendering of your diagram. The viewer supports:

    • Multi-page navigation — browse all pages in a Visio document
    • Zoom & pan — scroll to zoom, drag to pan, fit-to-page button
    • Dark mode — because of course
    • URL interception — click a link to a .vsdx file and it opens in the viewer automatically
    • Open from URL — paste a URL to a remote .vsdx file
    Network diagram with hundreds of nodes rendered in Visio Viewer
    A large network overview diagram — zoomed out to 23%, all rendered client-side
    BPMN diagram rendered in Visio Viewer
    A BPMN sample diagram with colored shapes and connectors
    MikroTik switch diagram rendered in Visio Viewer
    A detailed MikroTik CRS312 switch stencil — rendered as crisp SVG

    How It Works

    Under the hood, the extension uses libvisio-ng — a pure Python Visio parser I built — running inside Pyodide (a full CPython compiled to WebAssembly). The entire pipeline runs in a sandboxed iframe:

    1. The extension intercepts .vsdx files (via drag & drop, file picker, or URL)
    2. The file is passed to libvisio-ng running in Pyodide (Python in WASM)
    3. libvisio-ng parses the OPC/XML structure and produces SVG output
    4. The SVG is rendered in the viewer with zoom/pan controls

    All processing happens locally in your browser. No data leaves your machine. It works completely offline once installed.

    Simple Visio diagram showing Hello World
    Even simple diagrams render cleanly

    Installation

    Version 1.2.0 is available now:

    To install from GitHub: download the release, unzip, go to chrome://extensions, enable Developer mode, and click ”Load unpacked”.

    Open Source

    The extension is open source under MIT/GPL. Contributions welcome.

  • Från 42 till 53 appar på autismappar.se

    Från 42 till 53 appar på autismappar.se

    I februari hade autismappar.se 42 appar. Nu, en månad senare, är vi uppe i 53. Det är elva nya appar på en månad — och det känns rätt bra.

    Vad har hänt?

    Störst tillskott är sex helt nya appar för verbal dyspraxi — MunMotor, Stavelsestuds, LjudLänk, Pratpuzzle, RytmRöst och OrdOrdning. De bygger på etablerade logopedmetoder och är tänkta som komplement till professionell träning.

    Utöver det har Sagostunden, BildStöd och flera andra tillkommit. Alla med samma princip: fria, offline, utan spårning, utan konton.

    Rösten

    En stor milstolpe är Alma — en svensk TTS-röst byggd med Piper, tränad på svenska barnböcker. En lugn, tydlig röst som fungerar helt offline. Den är integrerad i flera av apparna nu.

    Vi har också förbättrat svenska i espeak-ng med bättre prosodi och uttalsregler, vilket ger ett fallback-alternativ som också fungerar offline.

    ARASAAC-piktogram

    Flera appar använder nu piktogram från ARASAAC med svenska nyckelord. Bildstöd är centralt för många barn med autism och språkstörning, och att ha det på svenska gör skillnad.

    Siffror

    • 53 appar på autismappar.se
    • 1 105+ i18n-nycklar
    • 100% svenska på Transifex
    • 15+ språk via community-översättare
    • Alla appar: GTK4/Adwaita, fria, offline

    Varför

    Jag bygger de här apparna för mina egna barn. Axel, Alma och Alice — alla med olika behov, alla förtjänar verktyg som funkar utan att man behöver betala, skapa konto eller bli spårad.

    Det finns ingen startup bakom det här, ingen monetarisering. Bara en pappa som kodar på kvällarna.

    Källkoden finns på GitHub.

  • Bättre svenska i espeak-ng

    Bättre svenska i espeak-ng

    Jag har skickat en pull request till espeak-ng med stora förbättringar av det svenska uttalet. espeak-ng är den talsyntes som används av bland annat Orca (skärmläsaren i GNOME/Linux) och ligger till grund för i princip all TTS på Linux.

    Vad var fel?

    Svenska i espeak-ng har länge haft problem. Det mest uppenbara var att sje-ljudet (ɧ) — det karakteristiska svenska ljudet i ord som "sjö", "skjorta" och "stjärna" — var felmappat till tj-ljud (ɕ). Det innebar att "sju" lät som "tju" och "sjuk" som "tjuk". Inte direkt begripligt.

    Dessutom saknades regler för vanliga svenska ljudkombinationer: dj (djur, djup), hj (hjärta, hjälm) och lj (ljus, ljud) uttalades bokstavligt istället för som /j/. Och suffixet -tion (station, funktion) fick helt fel uttal.

    Fas 1 — Grundläggande uttalsregler

    • sje-ljud: skj → /ɧ/ (var felaktigt /ɕ/)
    • -tion/-tions: korrekta regler för detta vanliga suffix
    • dj/hj/lj: nya regler för → /j/
    • 230+ nya ord i ordlistan (nu totalt 899): veckodagar, månader, siffror, vanliga ord, förkortningar, ortnamn, tekniktermer
    • 16 nya symboler: £, §, °, bråk, pilar, euro med mera

    Fas 2 — Retroflexer ✅

    Retroflexerna är nu implementerade och mergade. Svenska retroflexer (rt → ʈ, rd → ɖ, rn → ɳ, rl → ɭ) fungerar korrekt — det som gör att "barn" uttalas med ɳ och "gården" med ɖ, precis som i naturligt tal.

    Fas 3–10 — Massiv expansion ✅

    Efter retroflexerna fortsatte arbetet i åtta ytterligare faser:

    • Fas 3–4: Vokalkorrigeringar — lång u (ʉː), bättre vokallängder, sje-ljud (ɧ) fixat genomgående
    • Fas 5–6: Grammatik och prosodi — ”de/dem” → /dɔm/, ”det” → /deː/, fyra svenska intonationsmönster
    • Fas 7–8: Egennamn och ortnamn — Göteborg, Trollhättan, Malmö, Karin, Andersson m.fl.
    • Fas 9–10: IT-termer och lånord — browser, screenshot, wifi, offline, IT-säkerhet
    • 1 197 ord i sv_list (från ~170 i originalet)
    • ~50 nya uttalsregler i sv_rules
    • Prosodijustering — bredare tonhöjdsvariation, naturligare vokallängder och förbättrad frågeintonation

    🔊 Lyssna — före och efter (fas 3–10)

    Dessa meningar visar förbättringarna från de senare faserna. Jämför systemets espeak-ng med vår förbättrade version:

    Mening Före Efter
    ”De gick till Göteborg på onsdag för att handla köttbullar.”
    de→/dɔm/, Göteborg, köttbullar
    ”Det är riktigt viktigt att barnen äter frukost varje dag.”
    det→/deː/, riktigt, viktigt
    ”Karin Andersson bor i Trollhättan och jobbar med IT-säkerhet.”
    Egennamn, ortnamn, IT-termer
    ”Vill du starta din browser och ladda ner appen?”
    Frågeintonation, lånord

    Fas 11–13 — Sammansatta ord, lånord och prosodi ✅

    • Fas 11: Sammansatta ord — 37 vanliga sammansättningar: köttbullar, busshållplats, parkeringsplats, vardagsrum, mataffär m.fl.
    • Fas 12: Lånord — 11 vanliga lånord: restaurang, garage, parfym, journalist m.fl.
    • Fas 13: Prosodiregler och suffix — 18 suffix-uttal och ordinaltal (13:e–31:a), vokalpar (glas/glass, ful/full)

    🔊 Nya ljudexempel (fas 13)

    Lyssna på den förbättrade svenska rösten med espeak-ng:

    Text espeak-ng (vår)
    ”Hej, jag heter Alma och jag pratar svenska.”
    ”Sjuksköterskan skötte sjuttiosju sjösjuka sjömän.”
    sje-ljud (ɧ)
    ”Kött och potatis med lingonsylt är en klassisk svensk rätt.”
    sammansatta ord
    ”Stockholm är Sveriges huvudstad med över en miljon invånare.”
    ”Flygande bäckasiner söka hwila på mjuka tuvor.”
    pangram
    ”Trettiotre trista tråkiga trollungar trampade trettiofyra trappsteg.”
    tungvrickare
    ”God morgon! Hur mår du idag?”
    frågeintonation
    ”Barnen leker i parken medan solen skiner.”

    Statistik

    • 1 197 ord i sv_list (från ~170 i originalet)
    • Retroflexer: ɖ, ɳ, ɭ, ʈ — alla implementerade
    • 4 svenska intonationsmönster (deklarativ, fråga, uppräkning, emfas)
    • Fonemfixar: sje-ljud ɧ korrigerat, lång u (ʉː) fixat
    • ”de/dem” → /dɔm/, ”det” → /deː/
    • ~50 nya uttalsregler i sv_rules
    • 42 vokalpar med korrekt kvantitetsdistinktion (glas/glass, ful/full)
    • Ordinaltal 13:e–31:a med korrekt uttal
    • 13 faser av förbättringar

    Status

    Alla CI-tester gröna. Pull requesten väntar nu på review från espeak-ng-teamet. Detta är den största förbättringen av det svenska uttalet i espeak-ng:s historia — ordlistan har gått från ~170 till 1 197 ord i 13 faser, med helt nya uttalsregler, retroflexer, prosodijusteringar, sammansatta ord, lånord och korrekt sje-ljud.

    Varför det spelar roll

    espeak-ng är inte den snyggaste talsyntesen, men den är den viktigaste. Den är fri, öppen källkod, och den enda TTS som alla Linux-användare har tillgång till utan extra kostnad eller molntjänster. För synskadade användare som förlitar sig på Orca är detta deras röst. Att den rösten ska uttala svenska korrekt borde vara en självklarhet.

    👉 Pull request #2364 på GitHub

  • Sex nya appar för verbal dyspraxi

    Sex nya appar för verbal dyspraxi

    Jag har byggt sex nya appar för barn med verbal dyspraxi (taldispraxis / childhood apraxia of speech, CAS). Alla appar finns nu på autismappar.se och är som alltid helt gratis.

    Vad är verbal dyspraxi?

    Verbal dyspraxi innebär att hjärnan har svårt att planera och koordinera de munrörelser som behövs för att tala. Barnet vet vad det vill säga, men kroppen samarbetar inte. Det handlar inte om muskelsvaghet — det handlar om motorisk planering.

    Evidensbaserade metoder som DTTC (Dynamic Temporal and Tactile Cueing), NDP-3 och ReST har visat sig vara effektiva. De bygger på intensiv repetition med simultana ledtrådar: barnet ser, hör och känner hur ljuden formas.

    De sex nya apparna

    🎵 Talrytmen

    Tränar talets rytm och prosodi. Barnet övar betoningar och stavelser genom att följa rytmmönster — viktigt för barn som talar monotont eller har svårt med betoningar.

    🎰 Ljudlotteriet

    Slumpmässig ljudträning med visuellt stöd. Varje ”drag” ger ett nytt ljud eller en ny ljudkombination att öva på, med piktogram och talsyntes som hjälp.

    👄 Mungymnastiken

    Munmotoriska övningar med visuella instruktioner. Tränar läpp-, tung- och käkrörelser som är grundläggande för tydligt tal.

    🎪 Ordparaden

    Ordträning i stigande svårighetsgrad. Börjar med enkla CV-stavelser och bygger upp till flerstaviga ord — helt i linje med DTTC-progressionen.

    📖 Berättarverkstan

    Strukturerad berättarträning med bildstöd. Barnet bygger enkla berättelser steg för steg, vilket tränar både meningsbyggnad och talplanering.

    🎭 Efterhärmaren

    Imitationsbaserad talträning. Barnet lyssnar och härmar — grundprincipen i DTTC. Appen ger visuell och auditiv feedback.

    53 appar totalt

    Med dessa sex nya appar har vi nu 53 appar i samlingen. Alla är PWA:er som fungerar offline, utan konton, utan spårning och utan kostnad. Skapade av en pappa som vet hur vardagen ser ut.

    👉 Alla appar för verbal dyspraxi
    👉 autismappar.se

  • libvisio-ng 0.6.0 och VSDView 0.5.0 — nu ännu längre före C++-versionen

    libvisio-ng 0.6.0 och VSDView 0.5.0 — nu ännu längre före C++-versionen

    Det har hänt en hel del sedan förra releasen. Både libvisio-ng och VSDView har fått rejäla uppgraderingar, och gapet till det gamla C++-baserade libvisio har bara ökat.

    libvisio-ng 0.6.0

    Den här releasen handlar mycket om att hantera fler av Visios visuella funktioner korrekt — saker som det gamla C++-biblioteket aldrig implementerade.

    Nya funktioner:

    • Rich text — formaterad text i shapes renderas nu korrekt med fetstil, kursiv, teckenstorlek och färg
    • Radiella gradienter — inte bara linjära längre, utan även radiella gradienter stöds nu fullt ut
    • Bildinbäddning — inbäddade bilder (EMF, PNG, JPEG) i .vsdx-filer extraheras och renderas i SVG-output
    • Type hints — hela kodbasen har fått type annotations, vilket gör det enklare att bidra och integrera
    • Sphinx-dokumentation — ordentlig API-dokumentation genererad med Sphinx
    • CI-pipeline — automatiserade tester och kvalitetskontroll vid varje commit

    Testsviten har vuxit från 96 till 102 tester. Varje test validerar att en specifik Visio-fil konverteras korrekt — det är ingen leksak.

    libvisio-ng finns nu på PyPI:

    pip install libvisio-ng

    Ren Python. Inga C++-beroenden. Inga systembibliotek att krångla med. Det bara funkar.

    libvisio-rs — Rust-porten

    Det som tidigare var ”nästa steg” är nu verklighet. libvisio-rs v0.1.1 är en fullständig Rust-port av libvisio-ng med C ABI via cbindgen-genererade headers — redo att droppa in som ersättare för C++ libvisio i LibreOffice och Inkscape.

    • C ABI — cbindgen-genererade headers gör det möjligt att länka direkt från C/C++-projekt
    • PyO3 Python-bindings — samma API som libvisio-ng, men med Rust-prestanda
    • Inkscape-extension — inskickat som MR #718
    • LibreOffice — enhancement proposal inskickat

    Installera via crates.io:

    cargo add libvisio-rs

    Koden finns på github.com/yeager/libvisio-rs och crates.io/crates/libvisio-rs.

    Jämförelse: libvisio-ng/rs vs C++ libvisio

    Det här projektet startade för att C++-versionen av libvisio (som LibreOffice använder) hade stagnerat. Ingen aktiv utveckling sedan ~2018, bristfälligt stöd för teman, gradienter, skuggor och textformatering. Här är den fullständiga jämförelsen:

    Funktion C++ libvisio libvisio-ng/rs
    .vsdx-stöd Grundläggande ✅ Fullt (teman, gradienter, skuggor)
    .vsd-stöd (binärt) Bra ✅ Fullt (NURBS, splines, bilder, lager)
    Temafärger
    Linjära gradienter Delvis
    Radiella gradienter
    Skuggor
    Skraffering/mönsterfyllning
    Rich text (blandade stilar) Delvis
    Bildinbäddning Delvis
    Konnektorer Grundläggande ✅ Full med routing
    Master shape-arv Delvis ✅ Fullt
    Hyperlänkar
    Rundade rektanglar
    Linjemönster (streckade m.m.) Grundläggande ✅ Fullt
    Fyllnadsmönster
    Pilmarkörer Delvis
    Tester Begränsat 102
    Språk C++ Python + Rust + C ABI
    Aktiv utveckling ❌ (senast ~2018)
    PyPI ✅ libvisio-ng
    crates.io ✅ libvisio-rs
    Homebrew ✅ (via VSDView)

    VSDView 0.5.0

    VSDView är den grafiska Visio-läsaren som bygger på libvisio-ng. Version 0.5.0 är en massiv uppgradering med 15 nya funktioner:

    • Zoom och panorering — scrolla och zooma fritt i diagrammet
    • Sökfunktion — hitta shapes och text i dokumentet
    • Shape-information — klicka på en shape för att se dess egenskaper
    • Mätverktyg — mät avstånd direkt i diagrammet
    • Export — spara som SVG, PNG eller PDF
    • Lagerhantering — visa/dölj lager
    • Minimap — överblick över hela dokumentet
    • …och mer

    Den stora förändringen under huven är att VSDView nu helt har ersatt C++ libvisio med libvisio-ng. Tidigare krävdes libvisio-tools som systempaket — nu är allt inbyggt. 4000 rader gammal parser-kod ersattes med en 30-raders wrapper mot libvisio-ng. Resultatet: bättre rendering, enklare installation, och stöd för allt som libvisio-ng klarar.

    Det finns också en Tauri-baserad nativapp (v0.2.0) med Alma TTS-integration.

    📦 Installation

    • macOS: brew install yeager/tap/vsdview
    • Windows: Ladda ner från GitHub Releases
    • Linux: .deb och .rpm i våra repos, eller pip install vsdview
    • PyPI: pip install vsdview

    Integration i ekosystemet

    Målet är att ersätta det ounderhållna C++ libvisio över hela open source-ekosystemet:

    • Inkscape: Extension inskickat som MR #718 — öppnar .vsd/.vsdx direkt i Inkscape via libvisio-ng
    • LibreOffice: Enhancement proposal inskickat för att ersätta C++ libvisio med libvisio-rs

    Med libvisio-rs C ABI och cbindgen-headers kan projektet fungera som drop-in-ersättare för det gamla biblioteket. Python-versionen (libvisio-ng) driver redan VSDView och Inkscape-extensionen, medan Rust-versionen (libvisio-rs) riktar sig mot LibreOffice och andra C/C++-projekt.

    Länkar

    libvisio-ng, libvisio-rs och VSDView är öppen källkod under GPL-3.0.