Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 10 additions & 2 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,16 @@
version: 2
updates:
# Maintain dependencies for GitHub Actions
- package-ecosystem: "uv"
directory: "/"
schedule:
interval: "weekly"
groups:
python-build:
update-types:
- minor
- patch

- package-ecosystem: "github-actions"
# Workflow files stored in the default location of `.github/workflows`. (You don't need to specify `/.github/workflows` for `directory`. You can use `directory: "/"`.)
directory: "/"
schedule:
interval: "weekly"
Expand Down
61 changes: 38 additions & 23 deletions .github/workflows/build_addon.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ name: build addon
on:
push:
tags: ["*"]
# To build on main/master branch, uncomment the following line:
# branches: [ main , master ]

pull_request:
branches: [main, master]
Expand All @@ -18,37 +16,48 @@ jobs:
steps:
- uses: actions/checkout@v6

- run: echo -e "pre-commit\nscons\nmarkdown">requirements.txt

- name: Set up Python
uses: actions/setup-python@v6
- name: Install uv
uses: astral-sh/setup-uv@v7
with:
python-version: 3.11
cache: "pip"
enable-cache: true

- name: Install dependencies
run: |
python -m pip install --upgrade pip wheel
pip install -r requirements.txt
pip install uv
sudo apt-get update -y
sudo apt-get update -y
sudo apt-get install -y gettext

- name: Install pyright
run: pip install pyright
uv sync

- name: Code checks
run: export SKIP=no-commit-to-branch; pre-commit run --all
run: export SKIP=no-commit-to-branch; uv run pre-commit run --all-files

- name: building addon
run: scons && scons pot
- name: Build add-on
run: uv run scons && uv run scons pot

- uses: actions/upload-artifact@v7
with:
name: packaged_addon
path: |
./*.nvda-addon
./*.pot
path: ./*.nvda-addon
if-no-files-found: error

- uses: actions/upload-artifact@v7
with:
name: pot
path: ./*.pot
if-no-files-found: error

python311_compatibility:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v6

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: "3.11"

- name: Check Python 3.11 syntax compatibility
run: python -m compileall addon buildVars.py sconstruct site_scons tests

upload_release:
runs-on: ubuntu-latest
Expand All @@ -58,10 +67,16 @@ jobs:
contents: write
steps:
- uses: actions/checkout@v6
- name: download releases files

- name: Download release files
uses: actions/download-artifact@v8
- name: Display structure of downloaded files
with:
path: .
merge-multiple: true

- name: Display release files
run: ls -R

- name: Calculate sha256
run: |
echo -e "\nSHA256: " >> changelog.md
Expand Down
6 changes: 3 additions & 3 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ ci:
submodules: true

default_language_version:
python: python3.11
python: python3.13

repos:
- repo: https://github.com/pre-commit-ci/pre-commit-ci-config
Expand Down Expand Up @@ -69,7 +69,7 @@ repos:

- repo: https://github.com/astral-sh/ruff-pre-commit
# Matches Ruff version in pyproject.
rev: v0.12.7
rev: v0.14.10
hooks:
- id: ruff
name: lint with ruff
Expand All @@ -81,6 +81,6 @@ repos:
hooks:
- id: pyright
name: type check with pyright
entry: pyright
entry: uv run pyright
language: system
types: [python]
59 changes: 33 additions & 26 deletions addon/doc/de/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

**Autor:** Muhammad Gagah muha.aku@gmail.com **

Natürliche Spracherzeugung ist ein NVDA‑Add-on, das **Google Gemini AI** integriert, um hochwertige, natürlich klingende Sprache direkt in NVDA zu erzeugen.
Natürliche Spracherzeugung ist ein NVDA‑Add-on, das **Google Gemini AI** integriert, um hochwertige, natürlich klingende Sprache direkt in NVDA zu erzeugen.

Es bietet eine klare, vollständig zugängliche Oberfläche zur Umwandlung von Text in Audio und unterstützt sowohl **Einzelsprecher‑Vorlesemodi** als auch **dynamische Dialoge mit zwei Sprechern**.

Expand All @@ -25,7 +25,7 @@ Dieses Addon ist für reibungslose Arbeitsabläufe, barrierefreie Bedienung und
### Erweiterte Stimmkontrolle

* **Sprechernamen**
Weise im Mehrsprecher‑Modus individuelle Namen zu (z. B. *John*, *Mary*).
Weise im Mehrsprecher‑Modus individuelle Namen zu (z. B. *John*, *Mary*).
Die KI ordnet Stimmen automatisch anhand der Namen im Skript zu.
* **Stil‑Anweisungen**
Gib Hinweise wie *„Sprich in fröhlichem Ton“* oder *„Ruhig erzählen“*, um die Sprechweise zu steuern.
Expand Down Expand Up @@ -69,17 +69,17 @@ Dieses Addon ist für reibungslose Arbeitsabläufe, barrierefreie Bedienung und

-## Installation

1. Lade das neueste Add-on von der
**Veröffentlichungsseite:**
`https://github.com/MuhammadGagah/native-speech-generation/releases`
1. Lade das neueste Add-on von der
**Veröffentlichungsseite:**
`https://github.com/MuhammadGagah/native-speech-generation/releases`
2. Installiere es wie jedes NVDA‑Add-on.
3. Starte NVDA neu, wenn du dazu aufgefordert wirst.

-## API‑Schlüssel einrichten (erforderlich)

1. Erstelle einen API‑Schlüssel in **Google AI Studio**:
1. Erstelle einen API‑Schlüssel in **Google AI Studio**:
<https://aistudio.google.com/apikey>
2. Öffne NVDA und gehe zu:
2. Öffne NVDA und gehe zu:
**NVDA-Menü → Werkzeuge → Natürliche Spracherzeugung**
3. Klicke auf **„API Key Einstellungen“**.
4. Dadurch öffnet sich der NVDA‑Einstellungsdialog direkt im Bereich *Natürliche Spracherzeugung*.
Expand All @@ -88,7 +88,7 @@ Dieses Addon ist für reibungslose Arbeitsabläufe, barrierefreie Bedienung und

Gespeicherte Schlüssel werden sicher über **Windows DPAPI** verschlüsselt – sie können auf anderen Windows‑Systemen oder Benutzerkonten nicht entschlüsselt werden.

Für fortgeschrittene Bereitstellungen kannst du den Schlüssel auch über die Umgebungsvariable
Für fortgeschrittene Bereitstellungen kannst du den Schlüssel auch über die Umgebungsvariable
**`GEMINI_API_KEY`** bereitstellen. Das Add-on nutzt ihn automatisch, wenn kein gespeicherter Schlüssel vorhanden ist.

## Verwendung
Expand All @@ -100,9 +100,9 @@ Für fortgeschrittene Bereitstellungen kannst du den Schlüssel auch über die U

### Hauptelemente der Oberfläche

* **Text zum Konvertieren**
* **Text zum Konvertieren**
Gib den Text ein oder füge ihn ein.
* **Stil‑Anweisungen (optional)**
* **Stil‑Anweisungen (optional)**
Hinweise zu Ton, Emotion oder Sprechweise.
* **Modell auswählen**

Expand Down Expand Up @@ -141,21 +141,21 @@ Alice: Hallo Bob, wie geht es dir heute?
Bob: Mir geht’s super, Alice! Das Wetter ist fantastisch.
```

4. Klicke **Sprache erzeugen*.
4. Klicke **Sprache erzeugen*.
Stimmen werden automatisch anhand der Namen zugeordnet.

## Sprechen mit der KI (Live‑Modus)

Erlebe ein natürliches Sprachgespräch mit Gemini.

1. Stimme und Stil‑Anweisungen im Hauptdialog konfigurieren.
1. Stimme und Stil‑Anweisungen im Hauptdialog konfigurieren.
*(Hinweis: Sprechen mit der KI unterstützt derzeit nur Einzelsprecher‑Modus.)*
2. Klicke **Sprechen mit der KI**.
3. Im neuen Fenster:

* **Gespräch beginnen** – beginnt die Sitzung, Mikrofon aktiv.
* **Gespräch stoppen** – beendet die Sitzung.
* **Verbindung mit Google-Suche** – erlaubt Web‑Recherche.
* **Verbindung mit Google-Suche** – erlaubt Web‑Recherche.
*(Während einer aktiven Sitzung ausgeblendet.)*
* **Verarbeitungstiefe: ** – `Nein`, `Niedrig`, `Medium`, `Hoch`.
* **Mikrofon‑Schalter** – Stummschalten/aktivieren.
Expand All @@ -182,7 +182,7 @@ Erlebe ein natürliches Sprachgespräch mit Gemini.

## Tastenkombinationen

Anpassbar unter:
Anpassbar unter:
**NVDA-Menü → Optionen → Tastenbefehle → Natürliche Spracherzeugung**

Standard:
Expand All @@ -195,28 +195,28 @@ Wenn du das Add-on Weiterentwickeln oder anpassen möchtest:

### Entwicklungsumgebung

* **Python 32‑bit (3.11.9 empfohlen)**
`https://www.python.org/downloads/release/python-3119/` [(python.org in Bing)](https://www.bing.com/search?q="https%3A%2F%2Fwww.python.org%2Fdownloads%2Frelease%2Fpython-3119%2F")
* **SCons 4.9.1 oder neuer**
* **Python passend zur Ziel-NVDA-Laufzeit**
* Verwende **Python 3.13 64-bit** für NVDA 2026.1 und neuer.
* Verwende **Python 3.11 32-bit** nur zum Paketieren von Abhängigkeiten für ältere unterstützte NVDA-Versionen.
* **uv** für die festgelegte Build- und Lint-Toolchain.

```
pip install scons
uv sync
uv run pre-commit run --all-files
uv run scons
uv run scons pot
```

SCons 4.10.1, Markdown 3.10, Ruff 0.14.10, Pyright 1.1.407 und die weiteren Build-Tools werden aus `uv.lock` installiert.

* **GNU Gettext Tools** (optional, empfohlen)

* Unter Linux/Cygwin meist vorinstalliert.
* Windows: `https://gnuwin32.sourceforge.net/downlinks/gettext.php` [(gnuwin32.sourceforge.net in Bing)](https://www.bing.com/search?q="https%3A%2F%2Fgnuwin32.sourceforge.net%2Fdownlinks%2Fgettext.php")

* **Markdown 3.8+** (für Dokumentationskonvertierung)

```
pip install markdown
```

### Zusätzliche Abhängigkeiten

Installiere die Audio‑Abhängigkeiten für Sprechen mit der KI direkt in den Add-on‑Lib‑Ordner:
Installiere die Audio‑Abhängigkeiten für Sprechen mit der KI nur für lokale Entwicklung direkt in den Add-on‑Lib‑Ordner. Verwende dabei die Python-Version und Architektur, die zur getesteten NVDA-Laufzeit passen:

```
python.exe -m pip install google-genai pyaudio --target "D:/myAdd-on/Native-Speech-Generation/addon/globalPlugins/NativeSpeechGeneration/lib"
Expand All @@ -226,6 +226,13 @@ Pfad entsprechend anpassen.

Für die aktuelle Audio‑only‑Implementierung werden **opencv-python**, **pillow** und **mss** nicht benötigt.

Für Release-Pakete lädt das Add-on das neueste verifizierte Abhängigkeitsarchiv passend zur laufenden NVDA-Version herunter:

* `lib.zip` für NVDA 2025.3.3 und ältere unterstützte Builds.
* `lib64.zip` für NVDA 2026.1 und neuer.

Das Add-on liest die SHA-256-Daten aus dem neuesten GitHub-Abhängigkeitsrelease, entweder aus dem Release-Asset-Digest oder aus Checksum-Dateien. Mitgelieferte genehmigte Checksums bleiben nur als Fallback für Erstinstallationen erhalten, wenn die Abfrage des neuesten Releases fehlschlägt. Manuelle Bibliotheks-Neuinstallationen verlangen das neueste verifizierte Release. Der extrahierte Ordner wird immer als `addon/globalPlugins/NativeSpeechGeneration/lib` installiert.

Kopiere anschließend aus deiner Python‑Installation in:

```
Expand All @@ -249,4 +256,4 @@ Beiträge, Vorschläge und Fehlerberichte sind willkommen.

## Übersetzung

Diese Erweiterung wurde von BFW Würzburg im Rahmen des Projektes "NVDA Nachhaltig" ins Deutsche übersetzt.
Diese Erweiterung wurde von BFW Würzburg im Rahmen des Projektes "NVDA Nachhaltig" ins Deutsche übersetzt.
29 changes: 18 additions & 11 deletions addon/doc/es/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,25 +209,25 @@ Si quieres desarrollar o modificar este complemento, sigue los pasos siguientes.

### Configuración del entorno

* **Python de 32 bits (se recomienda 3.11.9)**
[https://www.python.org/downloads/release/python-3119/](https://www.python.org/downloads/release/python-3119/)
* **SCons 4.9.1 o superior**
* **Python correspondiente al runtime de NVDA objetivo**
* Usa **Python 3.13 de 64 bits** para NVDA 2026.1 y versiones posteriores.
* Usa **Python 3.11 de 32 bits** solo para empaquetar dependencias de versiones anteriores de NVDA compatibles.
* **uv** para la cadena de herramientas de compilación y lint fijada.

```
pip install scons
uv sync
uv run pre-commit run --all-files
uv run scons
uv run scons pot
```

SCons 4.10.1, Markdown 3.10, Ruff 0.14.10, Pyright 1.1.407 y las demás herramientas de compilación se instalan desde `uv.lock`.
* **Herramientas GNU Gettext** (opcional, recomendado para localización)
* Normalmente vienen preinstaladas en Linux/Cygwin.
* Windows: [https://gnuwin32.sourceforge.net/downlinks/gettext.php](https://gnuwin32.sourceforge.net/downlinks/gettext.php)
* **Markdown 3.8+** (para conversión de documentación)

```
pip install markdown
```

### Dependencias adicionales

Instala las dependencias de audio de Talk With AI directamente en la ruta de bibliotecas del complemento:
Solo para desarrollo local, instala las dependencias de audio de Talk With AI directamente en la ruta de bibliotecas del complemento usando la versión y arquitectura de Python que coincidan con el runtime de NVDA que estás probando:

```
python.exe -m pip install google-genai pyaudio --target "D:/myAdd-on/Native-Speech-Generation/addon/globalPlugins/NativeSpeechGeneration/lib"
Expand All @@ -237,6 +237,13 @@ Ajusta la ruta según tu directorio local del código fuente del complemento.

Para la implementación actual de Talk With AI basada solo en audio, no necesitas `opencv-python`, `pillow` ni `mss`.

Para paquetes de lanzamiento, el complemento descarga el archivo de dependencias verificado más reciente según la versión de NVDA en ejecución:

* `lib.zip` para NVDA 2025.3.3 y compilaciones anteriores compatibles.
* `lib64.zip` para NVDA 2026.1 y versiones posteriores.

El complemento lee los datos SHA-256 desde la versión de dependencias más reciente en GitHub, usando el digest del asset de la versión o archivos de checksum. Los checksums aprobados incluidos se conservan solo como fallback para primeras instalaciones cuando falla la consulta de la versión más reciente. La reinstalación manual de bibliotecas requiere la versión verificada más reciente. La carpeta extraída siempre se instala como `addon/globalPlugins/NativeSpeechGeneration/lib`.

Después, copia lo siguiente desde tu instalación de Python a:

```
Expand Down
29 changes: 18 additions & 11 deletions addon/doc/id/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -209,25 +209,25 @@ Jika Anda ingin mengembangkan atau memodifikasi add-on ini, ikuti langkah-langka

### Pengaturan Lingkungan

* **Python 32-bit (disarankan 3.11.9)**
[https://www.python.org/downloads/release/python-3119/](https://www.python.org/downloads/release/python-3119/)
* **SCons 4.9.1 atau lebih baru**
* **Python yang sesuai dengan runtime NVDA target**
* Gunakan **Python 3.13 64-bit** untuk NVDA 2026.1 dan yang lebih baru.
* Gunakan **Python 3.11 32-bit** hanya untuk paket dependensi NVDA lama yang masih didukung.
* **uv** untuk toolchain build dan lint yang dipin.

```
pip install scons
uv sync
uv run pre-commit run --all-files
uv run scons
uv run scons pot
```

SCons 4.10.1, Markdown 3.10, Ruff 0.14.10, Pyright 1.1.407, dan tool build lainnya diinstal dari `uv.lock`.
* **GNU Gettext Tools** (opsional, disarankan untuk lokalisasi)
* Biasanya sudah terpasang di Linux/Cygwin.
* Windows: [https://gnuwin32.sourceforge.net/downlinks/gettext.php](https://gnuwin32.sourceforge.net/downlinks/gettext.php)
* **Markdown 3.8+** (untuk konversi dokumentasi)

```
pip install markdown
```

### Dependensi Tambahan

Instal dependensi audio untuk Talk With AI langsung ke jalur pustaka add-on:
Untuk pengembangan lokal saja, instal dependensi audio untuk Talk With AI langsung ke jalur pustaka add-on menggunakan versi dan arsitektur Python yang sesuai dengan runtime NVDA yang diuji:

```
python.exe -m pip install google-genai pyaudio --target "D:/myAdd-on/Native-Speech-Generation/addon/globalPlugins/NativeSpeechGeneration/lib"
Expand All @@ -237,6 +237,13 @@ Sesuaikan jalur tersebut dengan direktori sumber add-on di komputer Anda.

Untuk implementasi Talk With AI versi audio saat ini, Anda tidak memerlukan `opencv-python`, `pillow`, atau `mss`.

Untuk paket rilis, add-on mengunduh arsip dependensi terverifikasi terbaru berdasarkan versi NVDA yang berjalan:

* `lib.zip` untuk NVDA 2025.3.3 dan build lama yang masih didukung.
* `lib64.zip` untuk NVDA 2026.1 dan yang lebih baru.

Add-on membaca data SHA-256 dari rilis dependensi GitHub terbaru, menggunakan digest asset rilis atau file checksum. Checksum bawaan yang disetujui hanya disimpan sebagai fallback untuk instalasi pertama ketika lookup rilis terbaru gagal. Reinstall library manual mewajibkan rilis terbaru yang terverifikasi. Folder hasil ekstraksi selalu diinstal sebagai `addon/globalPlugins/NativeSpeechGeneration/lib`.

Lalu salin file berikut dari instalasi Python Anda ke:

```
Expand Down
Loading