Retranscription de la parole : Pi à Arduino

Bonjour,

Je me présente, je m’appelle Florian, j’ai 18 ans et je suis en terminale S science de l’ingénieur. Au cours de cette année, nous devons créer un projet, le développer et le produire si possible. Mes 3 camarades et moi-même sommes partis sur la réalisation d’un « casque » nommé « DeafGlasses » qui serait composé d’un microphone, d’un écran et d’autres composants essentiellement Arduino ainsi que d'un Raspberry Pi model 3b+. L’idée est de permettre aux personnes atteintes de surdité partielle ou totale de pouvoir palier à leur handicape, du moins, en partie. Globalement, le fonctionnement est assez simple : les paroles d’un tiers, le signal sonore, est capté par le microphone qui, par le biais d’un code, d’un programme, convertit le signal sonore en signal numérique, sous forme de texte et l’affiche sur un écran situé à une distance réglable des yeux de l’utilisateur.

Mon rôle dans ce projet concerne la retranscription des paroles en texte et de l'envoie de ce dernier sur un écran arduino donc voici le lien :
https://www.gotronic.fr/art-shield-ecran-tft-tactile-ada1651-21306.htm

Que je vous explique comment cela est censé fonctionné dans mon esprit :
Un microphone branché en USB au RPi 3B+ sera chargé de réceptionné les paroles qu'un tiers échange avec la personne qui porte le DeafGlasses. Ces paroles seront traitées à l'aide d'un programme python faisant intervenir une intelligence artificielle qui devra retranscrire ce qui a été dit puis envoyer le texte à l'arduino qui l'affichera sur l'écran.

Seulement, de nombreux problèmes :

  • Le gros problème et la raison pour laquelle je poste ce Topic concerne la première phase de cette retranscription de la parole. Pour réaliser cela, il me faut un moteur Speech To Text sur le Raspberry qui sera connecté à Internet. En effet, soit il n'est pas connecté et il ne pourra retranscrire que des mots clés soit il l'est et le champs des possibles s'ouvre car pour réaliser cette retranscription vocale, il faut que toutes les phrases soient traitées.
    Ainsi, n'y connaissant rien en la matière, j'ai cherché sur Youtube et j'ai eu l'idée d'installer Jarvis, l'assistant vocal créé par la chaîne "Domotique facile". Dans mes plans, j'installais l'assistant, je "bloquais" tout ce qui concernait la partie interaction entre Jarvis et le porteur du casque. Cela aurait été le "corps" qui aurait porté le moteur STT car je ne sais pas si sur python, je peux simplement créer un programme où j'aurais installé simlpement le moteur STT et créé une variable pour chaque parole qui aurait été traitées et transformées en texte que j'aurais ensuite envoyer à l'arduino.
    Bref, j'ai donc installé Jarvis, j'ai obtenu la clé de "snow boy" pour la détection du mot clé, google pour la synthèse vocale (le moteur TTS qui ne me sert pas dans mon projet mais sans, cela ne marchait pas) et en ce qui concerne le plus important, le moteur STT, je n'ai pas pu l'installer : celui de google est payant de ce que j'ai vu, celui de bing ne fonctionne pas (les clés que j'avaient ne sont valides qu'un mois et ne fonctionnaient pas), il y a wit dont j'ignore le fonctionnement et Snow boy que je ne peux pas utiliser avec le projet car il fonctionne hors ligne. De plus, tout est en anglais et j'ai peur de payer des frais sans le savoir ou de m'être abonné à des choses gratuites et que de l'argent me soit prélevé ensuite.

Voilà le coeur du problème, pour le synthétiser, comment transcrire la parole sur arduino ? Est-ce qu'un "corps", une "enveloppe" est indispensable pour que le moteur STT fonctionne ? Est la bonne solution avec Jarvis ou je peux m'en passer car je ne m'en serais servi justement uniquement comme "corps" : pas d'utilisation de reconnaissance vocale et de commande.

Si vous vous demandez l'utilité et le choix de repasser par l'arduino pour afficher le text et pourquoi on n'a pas simplement brancher un écran sur l'HDMI du RPi, c'est parce qu'étant des débutant en informatique et en programmation, nous ignorions l'existence des RPi et nous voulions absolument programmer en arduino pour avoir "une sécurité" car ce sont les seuls composants auxquels nous avons du faire face depuis le lycée et donc les seuls avec lesquels nous avions des "connaissances". De plus, nous aurons une application programmé sur MIT app inventor qui nous permet de gérer des fonctionnalité sur l'écran (police, taille) et cela passe par un module bluetooth arduino donc l'arduino centralise tous les composants.

Je vous remercie beaucoup par avance, toutes les aides sont les bienvenues ! :slight_smile:

Bonne fin de journée !

Pourquoi ouvrir un second sujet? Tu as déjà des réponses ici.

C'est pas parce que vous avez un bout de code qui change la taille des caractères sur Arduino qu'il faut vous dire que c'est le Graal et que ça impose l'arduino...

L'argument qui est de dire "on ne savait pas, on a commencé comme ça et donc on continue comme si de rien n'était" n'est absolument pas une bonne pratique de l'ingénieur. C'est de l'entêtement et un déni de réalité. Un ingénieur doit passer par une phase de recherche et d'étude, lors de cette phase rien n'est figé. On explore, on se fait une idée des possibilités et des contraintes, on regarde le pour et le contre. Ensuite on décide.

Là, au final, vous aurez un système moins performant (cf arduino et gestion des accents), plus compliqué (transmission asynchrone, gestion de la mémoire hyper limitée côté arduino) et plus cher à fabriquer, et avec plus de risques de panne et un logiciel complexe...

Je reste persuadé que maintenant que vous avez entendu parler du RPi et que vous avez compris que vous devez l'utiliser pour la partie reconnaissance de la parole, vous devriez aussi vous décider de laisser tomber l'arduino qui n'apporte que des complications à votre système et aucune valeur ajoutée (Le bluetooth est très bien géré aussi par un RPi).

A mon avis vous allez vous faire descendre lors de la soutenance là dessus..

Ensuite, à vous de faire comme vous l'entendez, c'est votre projet et votre note du bac....

Une option serait d'utiliser l'Arduino différemment, un signal visuel (LED qui clignote, etc) pour alerter de l'arrivée d'un message ou contrôler un petit moteur pour permettre de l'interaction à distance etc... --> donnez lui un rôle utile.


pour votre question, non vous n'avez pas besoin de Jarvis. Vous pouvez accéder aux APIs de Google directement en python (un exemple ici) mais ici c'est le forum Arduino... faudrait aller poster dans un forum RPi pour ce genre de questions

kamill:
Pourquoi ouvrir un second sujet? Tu as déjà des réponses ici.

il a expliqué que le sujet était un peu différent, son souci n'étant plus d'envoyer un texte sur le port série mais la reco vocale...

donc ouvrir un nouveau sujet se défend même si à mon avis maintenant c'est plus pour le forum RPi que Arduino...

Bonjour J-M-L,

L'argument qui est de dire "on ne savait pas, on a commencé comme ça et donc on continue comme si de rien n'était" n'est absolument pas une bonne pratique de l'ingénieur. C'est de l'entêtement et un déni de réalité. Un ingénieur doit passer par une phase de recherche et d'étude, lors de cette phase rien n'est figé. On explore, on se fait une idées des possibilités et des contraintes, on regarde le pour et le contre. Ensuite on décide.

Je suis d'accord avec vous et personnellement, je ne suis pas contre l'idée de revoir le projet. Seulement, nous avons fait l'erreur en début d'année de ne pas suffisamment explorer les différentes pistes et l'écran que nous avons fait acheter au lycée et qui a coûté environ 40 € n'est malheureusement pas compatible avec Arduino. Ainsi, je me demande ce que nous allons faire : l'idée que vous nous conseillé serait de brancher en HDMI un écran et de créer un programme python qui, à l'aide du moteur STT, transmet par '"liaison HDMI" la retranscription à l'écran ? Il faudrait donc que l'application dispose d'une connexion Bluetooth avec le Raspberry pour activer le processus de retranscription vocale et les possibilités de personnalisations et une autre connexion Bluetooth pour l'arduino et les moteurs pour gérer la distances avec les yeux ? Ou bien encore n'avoir qu'une connexion Bluetooth avec le Raspberry et lorsqu'il s'agit de contrôler les moteurs, il envoie les informations par liaison série ?

En somme, nous ne sommes pas contre le fait de nous adapter mais le peu de temps qu'il nous reste ainsi que le coût de l'écran qui deviendrait inutile sans compter le manque de matériel lié à cet modification (on n'a pas d'écran RPi) nous permet-il de revoir le projet ? En outre, notre professeur ne nous a jamais découragé dans notre démarche, enfin je veux dire qu'il ne nous a jamais parlé des difficultés que nous pourrions rencontrées et des alternatives qui s'offraient à nous comme vous me l'avez fait et merci encore. C'est pour cela que nous avons du mal à prendre une décision et que cette hésitation arrive tardivement.

mais ici c'est le forum Arduino... faudrait aller poster dans un forum RPi pour ce genre de questions

Vous avez encore une fois raison mais je pensais que je pouvais l'évoquer car les 2 étaient initialement liés mais, avec ce que vous nous conseillé, c'est vrai que la place de l'arduino tend à diminuer et qu'il conviendrait mieux de poster ceci sur le forum RPi, dont j'ignorais l'existence.

En tout cas, merci de votre aide, j'aime beaucoup votre manière de m'éclairer quant aux démarches et au comportement à adopter face aux problèmes rencontrés ; merci !

Bonne fin de soirée ! :slight_smile:

Je viens de regarder le lien que vous m'avez transmis concernant le moteur STT de google. Je ne peux malheureusement pas l'utiliser car l'activation du moteur STT est payant et l'utilisation gratuite n'est valide que 30 mois et requiert tout de même une facturation valide ce que je ne souhaite pas faire.

Bon si vous êtes coincés maintenant avec cet écran et que vous n’en avez pas pour le RPi faudra faire avec (et l’expliquer)

Pour le STT regardez côté Microsoft mais je ne sais pas s’ils ont une offre gratuite avec du code pour RPi