Différences entre versions de « Projets:Read For Me V3 »

De wikilab
Ligne 1 : Ligne 1 :
 
 
== Description du projet ==
 
== Description du projet ==
  
Ligne 47 : Ligne 46 :
  
 
==Fichiers source==
 
==Fichiers source==
 +
 +
===Prototype 1===
 +
 +
====Fichiers découpés / usiné pendant le fabrikarium====
 +
 +
====Sources====
 +
 +
===Prototype 2===
 +
 +
====Fichiers découpés / usiné pendant le fabrikarium====
 +
 +
====Sources====
  
 
==Etapes de fabrication pas à pas==
 
==Etapes de fabrication pas à pas==
Ligne 55 : Ligne 66 :
  
 
===Design===
 
===Design===
 +
 +
Au regard du retour d'expérience sur les deux prototypes précédent au format "table", on décide d'abandonner l'idée et de revenir sur un boitier directement posé sur la table.
 +
 +
Problème : nous ne disposons pas d'une nappe suffisament longue pour la déporter par dessus la feuille.
 +
 +
Il est donc décidé de partir sur deux prototype :
 +
* Prototype 1 - à plat: boîtier posé sur la table avec un bras articulé pour déporter la caméra au dessus de la feuille
 +
* Prototype 2 - chevalet : boîtier posé sur un côté et sur deux pieds rétractables avec la caméra proche du Raspberry Pi mais qui permet néanmoins plus de stabilité.
 +
 +
==== Prototype 1 ====
 +
 +
[hoto
 +
==== Prototype 2 ====
  
 
===Hardware===
 
===Hardware===
 +
 +
====Changement de capteur====
 +
 +
Il y a des problème de qualité optique avec le capteur actuel pour laquelle une partie de la page est floue.
 +
On essaie donc une nouvelle raspicam version 2.1 avec 8 megapixels au lieu de 5, et les résultats semblent effectivement bien meilleurs.
 +
 +
====Éclairage leds====
 +
 +
====Haut parleur et prise jack 3.5mm====
 +
  
 
===Software===
 
===Software===
 +
 +
==== Bouton On/Off ====
 +
 +
En ajoutant une ligne dans le fichier de configuration du Raspi, il est possible de configurer la broche GPIO3 comme bouton On/Off d'un ordinateur. Cela pose cependant un pblème : si l'extinction est gérée directement par le Raspi, on ne peut pas prévenir les fausses manipulations, ni même prévenir l'utilisateur que le Raspi est effectivement éteint.
 +
 +
L'astuce est donc de conserver la même broche que celle qui permet d'allumer le Raspi (<tt>GPIO3</tt>) pour appeler une fonction dans <tt>PiTextReader</tt>. Au premier appui, on peut donc demander à l'utilisateur d'appuyer une seconde fois pour confirmer l'extinction.
  
 
==== Pico TTs ====
 
==== Pico TTs ====
Ligne 66 : Ligne 106 :
 
/usr/bin/pico2wave -l fr-FR -w /tmp/text.wav < /tmp/text.txt
 
/usr/bin/pico2wave -l fr-FR -w /tmp/text.wav < /tmp/text.txt
 
</pre>
 
</pre>
 +
 +
====Nettoyage du script====
 +
 +
Le script python principale est <tt>pitextreader.py</tt>. Afin de faciliter les futurs développements et deboggage, il est décidé de le rendre plus modulaire.
 +
 +
===== Séparation en plusieurs fichiers =====
 +
 +
* <tt>pitextreader.py</tt> est toujours le script principal, mais il ne contient plus qu'une fonction qui fait le lien entre l'application et les boutons du raspberry pi.
 +
* <tt>app.py<tt> contient le coeur du logiciel, c'est-à-dire l'objet <tt>settings</tt> qui gère les paramètres de lecture et d'enregistrement, et l'association entre les broches du raspberry pi et les fonctions de callback
 +
* <tt>constantes.py<tt> contient toute la configuration :
 +
** numéro des broches du GPIO
 +
** liens vers les dossiers et fichiers (sons et fichier de sauvegarde de la configuration)
 +
** toutes les commandes bash au format texte comme par exemple les commandes pour faire déclencher la prise de vue ou l'OCR.
 +
* <tt>logger.py</tt> contient les outils de logs qui permettent d'écrire la sortie standard en même temps dans un fichier et dans la console
 +
* <tt>reader.py</tt> contient les fonctions de prise de vue et de traitement des données jusqu'à l'obtention d'un fichier audio.
 +
* <tt>player.py</tt> contient un objet permettant le lire les fichiers audio et de modifier les paramètres de lecture en direct via <tt>mplayer</tt>
  
 
==Journal de bord==
 
==Journal de bord==

Version du 26 octobre 2021 à 17:55

Description du projet

Le but est de créer une machine à lire capable d’acquérir le texte à partir d'une capture d'image et de le lire au moyen d’une synthèse vocale.

Historique du projet

  • Puis développé lors de l'événement "Focus Vision" : Read_For_Me_V2

Version actuelle

Le code est disponible sur github.

Cahier des charges

Voir le cahier des charges de la V1

Analyse de l'existant

Voir l'analyse de l'existant de la V1

Equipe (Porteur de projet et contributeurs)

  • Porteurs du projet : François, Laurence
  • Concepteurs/contributeurs : Jean-Jacques, Audrey, Roger, Marie, Déborah, Quentin, Florian, Rémi
  • Fabmanager référent :
  • Responsable de documentation : Laurent

Matériel nécessaire

  • 1 Raspberry pi 4 modèle B
  • 1 caméra pour Raspberry Pi
  • 1 enceinte
  • 1 batterie 5V USB avec deux sorties USB
  • CP peuplier
  • filament PLA pour impression 3d

Outils nécessaires

Coût

Délai estimé

Fichiers source

Prototype 1

Fichiers découpés / usiné pendant le fabrikarium

Sources

Prototype 2

Fichiers découpés / usiné pendant le fabrikarium

Sources

Etapes de fabrication pas à pas

Durée de fabrication du prototype final

Développement du Fabrikarium 2021

Design

Au regard du retour d'expérience sur les deux prototypes précédent au format "table", on décide d'abandonner l'idée et de revenir sur un boitier directement posé sur la table.

Problème : nous ne disposons pas d'une nappe suffisament longue pour la déporter par dessus la feuille.

Il est donc décidé de partir sur deux prototype :

  • Prototype 1 - à plat: boîtier posé sur la table avec un bras articulé pour déporter la caméra au dessus de la feuille
  • Prototype 2 - chevalet : boîtier posé sur un côté et sur deux pieds rétractables avec la caméra proche du Raspberry Pi mais qui permet néanmoins plus de stabilité.

Prototype 1

[hoto

Prototype 2

Hardware

Changement de capteur

Il y a des problème de qualité optique avec le capteur actuel pour laquelle une partie de la page est floue. On essaie donc une nouvelle raspicam version 2.1 avec 8 megapixels au lieu de 5, et les résultats semblent effectivement bien meilleurs.

Éclairage leds

Haut parleur et prise jack 3.5mm

Software

Bouton On/Off

En ajoutant une ligne dans le fichier de configuration du Raspi, il est possible de configurer la broche GPIO3 comme bouton On/Off d'un ordinateur. Cela pose cependant un pblème : si l'extinction est gérée directement par le Raspi, on ne peut pas prévenir les fausses manipulations, ni même prévenir l'utilisateur que le Raspi est effectivement éteint.

L'astuce est donc de conserver la même broche que celle qui permet d'allumer le Raspi (GPIO3) pour appeler une fonction dans PiTextReader. Au premier appui, on peut donc demander à l'utilisateur d'appuyer une seconde fois pour confirmer l'extinction.

Pico TTs

Transformer un fichier texte text.txt en fichier audio text.wav

/usr/bin/pico2wave -l fr-FR -w /tmp/text.wav < /tmp/text.txt

Nettoyage du script

Le script python principale est pitextreader.py. Afin de faciliter les futurs développements et deboggage, il est décidé de le rendre plus modulaire.

Séparation en plusieurs fichiers
  • pitextreader.py est toujours le script principal, mais il ne contient plus qu'une fonction qui fait le lien entre l'application et les boutons du raspberry pi.
  • app.py contient le coeur du logiciel, c'est-à-dire l'objet settings qui gère les paramètres de lecture et d'enregistrement, et l'association entre les broches du raspberry pi et les fonctions de callback
  • constantes.py contient toute la configuration :
    • numéro des broches du GPIO
    • liens vers les dossiers et fichiers (sons et fichier de sauvegarde de la configuration)
    • toutes les commandes bash au format texte comme par exemple les commandes pour faire déclencher la prise de vue ou l'OCR.
  • logger.py contient les outils de logs qui permettent d'écrire la sortie standard en même temps dans un fichier et dans la console
  • reader.py contient les fonctions de prise de vue et de traitement des données jusqu'à l'obtention d'un fichier audio.
  • player.py contient un objet permettant le lire les fichiers audio et de modifier les paramètres de lecture en direct via mplayer

Journal de bord

Mardi matin

Présentation du projet et tour de table

Définition des enjeux

  • Design
    • Ergonomie
    • Marquage
  • Optique
    • Choix de l'optique
    • éclairage
  • Logiciel
    • Séquencement
    • Power On/Off
    • OCR
    • Gestion du format portrait / paysage

Répartition en 2 équipes et demi

  • Équipe Design : Laurence, Dorian, Quentin, Audrey, Rémi
  • Equipe optique : Deborah, Roger, Marie

- test de différentes optique et mise au point

  • Équipe logiciel : Jean Jacques

- Remise en route du prototype V2

Mardi après-midi

Design : développement de deux versions

  • Version penchée
  • Version avec le boitier posé sur la table

OCR

  • Test de tesseract avec le nouveau capteur et raspberry pi 4.
  • Mise en place d'une procédure de test avec 4 images

Leds

Ajout et contrôle de ruban led rgb

Bouton on/off

Allumer / éteindre le raspberry à partir du GPIO

Mercredi

Design

  • (Re)design des boutons
  • Dessin des deux versions

Code

  • Refactoring PiTextReader
  • Démarrage automatique

Électronique

  • Haut-parleur et amplification
  • Fabrication d'une longue nappe pour la caméra

Documentation

  • Mise à jour du script d'installation
  • Mise à jour de la page V1