La solution la plus simple et réalisable est d’utiliser un script python pour capter les bouton utilisés, dans ton cas « lecture » et « enregistrement ». Ce script attend le changement d’état de 2 GPIO pour détecter les boutons. Plusieurs tuto existe pour; Créer des button avec python.
Ce script devra dans un temps lire et envoyer le signal aux Haut-Parleur (lecture des message en playlist). Pour l’autre action, un peu plus technique sur le « timing », car tu devra créer ton système, le plus simple est de démarrer l’enregistrement en pressant le bouton et le stoppant avec le même ou un autre bouton, car tu peux jouer un intro et après passer en enregistrement, mais je crois qu’un decalage notable peut avoir lieu entre; la fermeture de l’intro et le démarrage de l’enregistrement. Bref, ça ne va pas exactement enregistrer après le « Beep », mais plutôt de quelques ms à 1 ou 2 secondes.
Ça c’est une théorie avec un kit Haut-Parleur + Micro + 2 boutons. Mais si tu désire passer en mode téléphone, ça sera plus exigent.
Déjà ton idée est pas mauvaise, si tu songes a pouvoir enregistrer des messages depuis n’importe lequel des combinés disponibles sur la ligne interne de la maison. Et c’est réalisable.
L’idée d’une ligne téléphonique est d’écouter en permanence ce qui s’y passe, l’appreil « hote » (dans ton cas, le Raspberry Pi) émet un sont pour indiquer ça présence (ligne active).
Dans le cas d’un téléphone classique, les touche (Touch Tone) produisent un son (avant avec la « roulette », il calculais le nombre de pulsation) qui définisse une valeur du clavier (0-9, # et *).
Si tu passe dans ce principe, ton Raspberry Pi devras écouter (mic/line-in) en permanence la « ligne », tu devras idéalement créer une série d’appel possible pour effectuer une tâche précise, par exemple;
- Le 1 pour écouter
- Le 0 pour laisser un message
- Le # pour terminer l’enregistrement (sinon faut détecter un silence pendant X temps pour mettre fin à l’enregistrement)
Après, si tu veux ajouter des options, tu as tout le clavier comme possibilité; stop, effacer, suivant, etc… mais faudra que tu mette des « sécurités », comme arrêter la lecture si il arrive a détecter l’absence du « client » (toi), comme quand tu raccroche. Mais tu peux limiter la durée des actions en par exemple limitant les actions automatique; lecture d’un message, stop et attente d’une commande « suivant » ou « effacer » etc…, si après X temps il n’a pas de réponse, il repasse en mode « stand by ».
Pour arriver à gérer ceci tu devras;
- Apprendre les tonalités du clavier et les interpréter (apprendre a ton RPi à les utiliser, en écoute comme en lecture)
- Connaitre et ajuster le type de signal téléphonique à celui du RPi pour l’écouter; soit le convertir en son pour le passer en line-in, soit utiliser le GPIO.
- Créer un scénario d’utilisation comme toute boite vocal fait. (Comment l’utilisateur commence, par ou qui passe pour faire tel ou tel action, et comment terminer proprement tout les cas). Mais pourquoi ? Car tu es en écoute active, et non utilisé sur appel (un bouton ceci et un bouton cela, physiquement). Faut que le script puisse passer d’un mode de travail en stand-by automatiquement dans tout les cas d’utilisation quand il a terminé ou passe en timeout ou qui « bug ». Permettre aussi a « naviguer » et « remettre à zéro » (fait le * pour revenir au menu principal) sans devoir faire « timeout » le script.
Je crois avoir décortiqué ton projet pour en voir les besoins et les possibilités, si j’aurais des mémo à me faire, je crois que je songerais à cette idée. Bonne chance.