NoComprendo

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
Reprise du message précédent
Ah, il manque un patch dans la version 9 de dotool.https://svnweb.mageia.org/packages/cauldron/dotool/current/SOURCES/0001-udev-rule-for-uaccess-user.patch?revision=1985050&view=markup
Pas encore pu tester, mais c'est au programme
Yves

Visiteur
Visiteur
Code :
KERNEL=="uinput", MODE="0660", OPTIONS+="static_node=uinput", TAG+="uaccess"
Dans ce cas, NoComprendo fonctionne correctement (même la version 1.55).
/opt/vosk-models doit contenir les modèles.
Au passage, il faut remplacer « bruno » par $USER dans le fichier main.cpp :
https://invent.kde.org/beroot/nocomprendo/-/commit/5a4e4cb9791332b18807f97556f0e4908c1702a6
Code :
"/bin/sh", "-c", "groupadd -f input && usermod -a -G input bruno"
À propos, j'ai également compilé « dotool » et NoComprendo dans Ubuntu 22.04 (Jammy) dans une langue différente. Le logiciel reconnaît la parole, mais la dictée à un éditeur de texte (comme l3afpad) ne fonctionne pas. Et il n'y a pas de préréglages. Mais j'aimerais avoir une dictée simple, au moins. NoComprendo reconnaît le texte dans sa propre fenêtre (à gauche), à partir de laquelle je peux le copier, cependant.
Capture d'écran sur Ubuntu non français :

Édité par Visiteur Le 18/11/2024 à 19h03

be.root Membre non connecté
-
- Voir le profil du membre be.root
- Inscrit le : 10/11/2024
Que la honte s'abatte, sur moi j'ai laissé mon nom en dur dans le code.
Donc ça ne pouvait fonctionner que chez moi, ou chez les utilisateurs qui s'appelle bruno.
J'ai la possibilité d'intégrer dotool dans le code. Il faut juste la présence d'un compilateur Go.
Mais je préférais utiliser les paquets de la distribution. C'est pour ça que Mageia est très pratique.
/opt/vosk-models est le même répertoire que celui utilisé par nerd-dictation et elograf. Histoire de ne pas être redondant.
Dans les autres langues que le français il n'y a actuellement aucune donnée d'exemple. Je ne suis pas capable de créer des énoncés dans des langues étrangères, même mon anglais est incompréhensible pour vosk. L'idée est de tester le logiciel dans un premier temps avec des francophones.
Créer un jeu d'exemple dans d'autres langues sera pour plus tard. Avec de l'aide extérieure.
La dictée dans une langue étrangère devrait fonctionner, à condition de démarrer en cliquant sur le bouton dictée de l'application.
Il faut bien penser à réactiver la fenêtre destination de la dictée, sinon le texte se perd dans le néant.
La version corrigée : http://be.root.free.fr/soft/nocomprendo/nocomprendo-1.58-1.mga9.x86_64.rpm
Les versions précédentes ont disparues.

Visiteur
Visiteur
be.root :La dictée dans une langue étrangère devrait fonctionner, à condition de démarrer en cliquant sur le bouton dictée de l'application.
Il faut bien penser à réactiver la fenêtre destination de la dictée, sinon le texte se perd dans le néant.
Oui, j'ai bien appuyé sur ces boutons.
Il semble que ce soit un problème avec Ubuntu ou une ancienne version de Qt 6.2.4 ou dotool. Car dans Mageia 9, tout va bien. Je veux dire, la dictée à l'éditeur de texte (pas de préréglages bien sûr).

Visiteur
Visiteur
artenaki :Il semble que ce soit un problème avec Ubuntu ou une ancienne version de Qt 6.2.4 ou dotool
J'ai essayé :
https://www.qt.io/download-open-source (Qt 6.8.0)
https://mirrors.kernel.org/mageia/distrib/9/SRPMS/core/updates/dotool-1.3-0.git20230827.1.1.mga9.src.rpm
https://mirrors.kernel.org/mageia/distrib/cauldron/SRPMS/core/release/dotool-1.4-1.mga10.src.rpm
Cela n'a aucun effet.
OMG. Une sorte d'incompatibilité avec deb/ubuntu ?
As-tu essayé de compiler / exécuter NoComprendo sous Xubuntu 24.04, par exemple ? Et dicte à un éditeur de texte externe.
Je sais que c'est un peu hors sujet...
Peut-être dois-je redémarrer le système, mais j'ai entré la commande : newgrp input.
Peut-être que la compilation en mode Debug aidera. Mais je ne sais pas comment faire.
Je suis désolé, mais Xubuntu 22.04 est mon système principal...
Édité par Visiteur Le 19/11/2024 à 00h43

Visiteur
Visiteur
strace.zip
Code :
which dotool
/usr/bin/dotool
dotool --version
1.3
cat strace.txt | grep dotool
172112 access("/usr/bin/dotool", F_OK) = 0
172120 execve("/usr/bin/dotool", ["/usr/bin/dotool"], 0x558301d19a00 /* 47 vars */ <unfinished ...>
172124 write(2, "dotool: failed to create virtual"..., 77 <unfinished ...>
172112 read(24, "dotool: failed to create virtual"..., 77) = 77
Ces logs montrent une tentative infructueuse de dicter à l'éditeur de texte l3afpad (mais il n'apparaît pas dans les logs) sur Xubuntu 22.04 dans la version NoComprendo que j'ai compilée avec Qt 6.2.4 (dotool 1.3 est également compilé par moi). Merci de m'aider.
J'ai pris la version /opt/nocomprendo (compilée avec Qt 6.2.4) de Jammy, et /usr/bin/dotool 1.3 de Jammy à Mageia 9. Dans Mageia 9, ces fichiers étrangers fonctionnent, mais pas dans Jammy.
La faute n'est donc pas à mon build, à Qt6 ou à dotool, mais à la différence entre les distributions deb et rpm.
Je n'ai pas testé la version 24.04, cependant.
Peut-être pourrais-tu installer Xubuntu dans une machine virtuelle et le tester comme je l'ai fait ?
En fin de compte, c’est bien si NoComprendo fonctionne sur toutes les distributions...
J'ai également changé le Magea 9 pour Vosk à partir de Pip. Tout va bien.
Mais la commande
sudo cp /usr/bin/xdotool /usr/bin/dotool
a interrompu la dictée vers un éditeur de texte externe dans Mageia. Les symptômes sont les mêmes que sous Ubuntu. Dans l3afpad, le curseur clignote.
Je pense que dotool a quelque chose à voir avec cela.
OMG
Test:
denis@xubuntu:~$ newgrp input
denis@xubuntu:~$ dotool
dotool: failed to create virtual keyboard device: could not open device file
sudo /opt/nocomprendo/bin/nocomprendo fonctionne (dicte à l3afpad). Enfin.
Le problème était que dotool dans Ubuntu ne fonctionne que sous root.
La règle udev ne fonctionne pas ?
Je n'ai pas fait de redémarrage.
sudo udevadm control --reload-rules
sudo udevadm trigger
n’a pas aidé.
Édité par Visiteur Le 19/11/2024 à 04h28

Visiteur
Visiteur
Papoteur :Ah, il manque un patch dans la version 9 de dotool.
https://svnweb.mageia.org/packages/cauldron/dotool/current/SOURCES/0001-udev-rule-for-uaccess-user.patch?revision=1985050&view=markup
Pas encore pu tester, mais c'est au programme
Ce patch est nuisible à Ubuntu (22.04). Valeur correcte :
sudo nano /usr/lib/udev/rules.d/80-dotool.rules
Code :
KERNEL=="uinput", GROUP="input", MODE="0660", OPTIONS+="static_node=uinput"
Code :
sudo udevadm control --reload-rules
sudo udevadm trigger
La dictée fonctionne désormais sans root. Problème résolu.
Nouveau problème. Le même que dans Elograf (mais je l'ai corrigé là). Il n'y a pas d'espace après les pauses et les majuscules apparaissent. Dans l3afpad.
Par contre, les retours à la ligne et les majuscules peuvent être bons dans la fenêtre principale (à partir de laquelle il est aussi possible de copier du texte). C'est ce qui distingue NoComprendo d'Elograf.
Édité par Visiteur Le 19/11/2024 à 04h54

be.root Membre non connecté
-
- Voir le profil du membre be.root
- Inscrit le : 10/11/2024
artenaki :
J'ai également changé le Mageia 9 pour Vosk à partir de Pip. Tout va bien.
Mais la commande
sudo cp /usr/bin/xdotool /usr/bin/dotool
a interrompu la dictée vers un éditeur de texte externe dans Mageia. Les symptômes sont les mêmes que sous Ubuntu. Dans l3afpad, le curseur clignote.
Je pense que dotool a quelque chose à voir avec cela.
Dotool et xdotool ne sont pas des programmes équivalents. La syntaxe est différente. On ne peut pas remplacer l'un par l'autre.
Dans l'ancien NoComprendo, j'utilisais la libxdotool directement depuis le code.
Avec dotool, ça passe par un pipe vers un processus distinct.
artenaki :
Nouveau problème. Le même que dans Elograf (mais je l'ai corrigé là). Il n'y a pas d'espace après les pauses et les majuscules apparaissent.
Vosk ne produit aucune majuscule ni ponctuation. Ces éléments sont rajoutés par les surcouches logicielles comme nerd-dictation dans le cas de elograf.
J'ai choisi de façon arbitraire de mettre une majuscule au début de toutes les phrases.
Mettre automatiquement un espace après une pause n'est pas forcément une bonne stratégie. La commande "Virgule" émet une virgule suivie d'un espace.
La phase suivante commencera avec une majuscule même derrière une virgule.
Je n'ai pas trouvé de solution universelle pour l'instant. NoComprendo ne peut pas savoir ce qui est écrit en amont dans l'éditeur de texte.
Pour les règles udev, on fera le point avec Papoteur quand il sera disponible.

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
Je viens de faire le premier essai.
Une première remarque mineure. Dans le choix du modèle, si je clique une ligne puis OK, il ne se passe rien. Il ne se passe quelque chose que si je double clique sur la ligne. Pour moi, le OK devrait faire la même chose.
Si je valide tout de même sans que le modèle ait été chargé, j'obtiens un coredump. Le répertoire /opt/vosk-models n'existe pas.
J'ai testé la dictée. J'ai choisi le petit modèle FR.
Si je dicte avec des pauses, j'ai des passages à la ligne fréquents.
Si je mets en pause, le texte apparait dans la zone d'écriture, puis disparait, c'est un peu surprenant.
J'ai testé "Point à la ligne", mais il a écrit "point à l'oeil", puis "point à la ligne". C'est peut être ça le mode transparent ?
Voici un verbatim :
"Il paraît que tu écris un point
Point : ". "
Fin à la ligne
Point la ligne
Point à la ligne : ".\n"
"
Je m'attendais à pouvoir dicter dans une fenêtre quelconque, mais la dictée semble arriver uniquement dans la zone de nocomprendo. J'ai loupé quelque chose ?
Yves

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
Yves

be.root Membre non connecté
-
- Voir le profil du membre be.root
- Inscrit le : 10/11/2024
Le dépôt git est plus à jour que le paquet que j'ai fourni la dernière fois : https://invent.kde.org/beroot/nocomprendo. Le OK de chargement des modèles devrait mieux fonctionner.
Je ne touche pas aux règles udev, réglées par dotool.
J'ai fait pas mal de tests dans des VMs pour l'affectation des droits utilisateurs sur input. Il me semble que ça marche bien.
Pour les tests je conseille de ne pas utiliser le petit modèle fr. Les énoncés donnés en exemple ont été faits avec le modèle complet, et j'ai constaté que ça marchait très mal avec le petit modèle. Les accords de verbes sont différents et de nombreux énoncés ne passent pas.
Ça explique "point à la ligne" et "point à l'oeil".
Je pense même à faire des groupes de commande différents suivant le modèle, comme entre deux langues différentes.
La dictée arrive dans la fenêtre qui a le focus, c'est important.
J'ai mis une sorte de filtre dans NoComprendo pour éviter qu'il ne se dicte quelque chose à l'intérieur de lui-même.
J'ai pu constater qu'il ne faut pas dicter par inadvertance dans VLC. Beaucoup de caractères correspondent à des raccourcis clavier, c'est la panique.
Dès que j'ai une version dont je suis content, je ferai un paquet pour que des utilisateurs non-spécialistes puissent tester aussi.

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
be.root :Quelle version utilises-tu ?
Le dépôt git est plus à jour que le paquet que j'ai fourni la dernière fois : https://invent.kde.org/beroot/nocomprendo. Le OK de chargement des modèles devrait mieux fonctionner.
Le paquet que tu as mis ici, en 1.58
Citation :
Je ne touche pas aux règles udev, réglées par dotool.
J'ai fait pas mal de tests dans des VMs pour l'affectation des droits utilisateurs sur input. Il me semble que ça marche bien.
Je voulais juste dire que le patch que j'avais cité est de toute façon déjà intégré.
Citation :
La dictée arrive dans la fenêtre qui a le focus, c'est important.
Ça ne fonctionne malheureusement pas comme ça. La dictée se fait dans la fenêtre nocomprendo, même si elle n'a plus le focus.
Citation :
J'ai mis une sorte de filtre dans NoComprendo pour éviter qu'il ne se dicte quelque chose à l'intérieur de lui-même.
J'ai pu constater qu'il ne faut pas dicter par inadvertance dans VLC. Beaucoup de caractères correspondent à des raccourcis clavier, c'est la panique.
Dès que j'ai une version dont je suis content, je ferai un paquet pour que des utilisateurs non-spécialistes puissent tester aussi.
Yves

be.root Membre non connecté
-
- Voir le profil du membre be.root
- Inscrit le : 10/11/2024
http://be.root.free.fr/soft/nocomprendo/nocomprendo-1.65-1.mga9.x86_64.rpm
Essaie avec le modèle français complet, c'est plus sûr.
La fenêtre NoComprendo écrit tout ce qu'elle entend. Les commandes vocales reconnues restent en noir, les autres (dont la dictée) s'affichent en gris.
Normalement, si la dictée est active, le texte reconnu est envoyé comme s'il venait du clavier (comme dans nerd-dictation).
Pour activer le mode dictée, il y a une commande vocale et un bouton dans l'application. Sinon NoComprendo ne répond qu'aux commandes des groupes actifs.
Suis-je bien clair ?
Édité par be.root Le 25/11/2024 à 21h25

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
be.root :Je viens de faire un paquet à jour de la version :
http://be.root.free.fr/soft/nocomprendo/nocomprendo-1.65-1.mga9.x86_64.rpm
Essaie avec le modèle français complet, c'est plus sûr.
C'est fait, sauf le modèle complet. Pour l'instant, le problème n'est pas là.
Citation :
La fenêtre NoComprendo écrit tout ce qu'elle entend. Les commandes vocales reconnues restent en noir, les autres (dont la dictée) s'affichent en gris.
C'est juste.
Citation :
Normalement, si la dictée est active, le texte reconnu est envoyé comme s'il venait du clavier (comme dans nerd-dictation).
Pour activer le mode dictée, il y a une commande vocale et un bouton dans l'application. Sinon NoComprendo ne répond qu'aux commandes des groupes actifs.
Suis-je bien clair ?
Ça, je n'arrive pas à l'avoir. J'ai dit "Commence la dictée", c'est reconnu. Mais le texte n'est que dans la fenêtre de nocomprendo. Aurais-je un souci avec dotool ?
Yves

Papoteur Membre non connecté
-
- Voir le profil du membre Papoteur
- Inscrit le : 03/10/2011
- Groupes :
-
Modérateur
-
Équipe Mageia
-
Administrateur
-
Forgeron
Code BASH :
getfacl /dev/uinput getfacl : suppression du premier « / » des noms de chemins absolus # file: dev/uinput # owner: root # group: root user::rw- user:yves:rw- group::rw- mask::rw- other::---
Tu remarqueras que le groupe "input" n'intervient pas.
https://wiki.archlinux.org/title/Udev#Allowing_regular_users_to_use_devices
Wiki Arch :The modern recommended approach for systemd systems is to use a MODE of 660 to let the group use the device, and then attach a TAG named uaccess. This special tag makes udev apply a dynamic user ACL to the device node, which coordinates with systemd-logind(8) to make the device usable to logged-in users. For an example of a udev rule implementing this:
/etc/udev/rules.d/71-device-name.rules
SUBSYSTEMS=="usb", ATTRS{idVendor}=="vendor_id", ATTRS{idProduct}=="product_id", MODE="0660", TAG+="uaccess"
Note: For any rule adding the uaccess tag to be effective, the name of the file it is defined in has to lexically precede /usr/lib/udev/rules.d/73-seat-late.rules.
Je ne comprends pas le sens de la dernière phrase. J'ai essayé en mettant la règle dans 80-dotool.rules puis dans 72-dotool.rules, le résultat est le même. Que veut dire "lexically precede" ?
Édité par Papoteur Le 27/11/2024 à 09h50
Yves

be.root Membre non connecté
-
- Voir le profil du membre be.root
- Inscrit le : 10/11/2024
J'ai passé un peu de temps à lire (relire) la doc, mais je n'y comprends toujours rien.
Dans notre cas, je ne saurais pas adapter la règle ci-dessus pour uinput. Que mettre pour SUBSYSTEMS, idVendor, idProduct ?
J'applique la méthode donnée dans le manuel dotool, et ça marche de mon côté.
Papoteur :Je ne comprends pas le sens de la dernière phrase. J'ai essayé en mettant la règle dans 80-dotool.rules puis dans 72-dotool.rules, le résultat est le même. Que veut dire "lexically precede" ?
Je comprends que la règle doit précéder la règle 73. Et d'après la documentation, les règles /etc/udev/rules.d/ sont exécutées avant les règles /usr/lib/udev/rules.d/.
72 me semble un bon choix, mais quelle règle a tu mis ?
Bruno
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie