PROJET AUTOBLOG


Idleman

source: Idleman

⇐ retour index

Snippet #21 ~ PHP: dicter du texte sous n’importe quel OS

dimanche 11 novembre 2012 à 17:42

 

tant qu’on est dans nos projets de domotiques, autant en profiter pour alimenter aussi les snippets avec de la synthèse vocale Rire.

Ce petit snippet vous permettra de faire du text-to-speech très simplement, que votre serveur php soit sous linux, windows, ou mac.

Pour rappel, le text-to-speech (TTS) permet de transformer une phrase écrite en phrase prononcée, votre ordinateur dictera le texte que vous lui fournissez

Le code utilise la librairie open source espeak et une petite classe PHP de votre serviteur (un peu vite fait la classe, mais c’est pour l’exemple).

Installation

  1. Téléchargez et installez la librairie Espeak sur : http://espeak.sourceforge.net/download.html
    Téléchargez la classe PHP et Configurez le chemin vers la librairie espeak dans la variable CHEMIN_ESPEAK
    Lancez la page PHP (n’oubliez pas d’enclencher le son de vos écouteurs)

Utilisation

Lancez tout simplement la page synth.php via un navigateur, cette page contient la classe d’utilisation ainsi qu’un court exemple de dialogue (les fans reconnaitrons, les autres je vous encourage a parfaire votre éducation devant la “cité de la peur”)

personnalisation

Toutes les voix doivent être initialisée comme ça :

$nouvelleVoix = new Voix();

Vous pouvez définir que c’est une voix masculine ou féminine comme ça :

$nouvelleVoix ->sexe = ‘Femme’;

Pour un homme ou

$nouvelleVoix ->sexe = ‘Homme’;

Pour une femme

Vous pouvez également définir l’aigu de la voie comme ça

$nouvelleVoix ->aigu = 40;

Ainsi que la vitesse de parole comme ça  :

$nouvelleVoix ->vitesse = 150;

Enfin, pour prononcer un texte avec la voix configurée :

$nouvelleVoix ->dis(‘Ceci est mon texte’);

Vous pouvez également chuchoter un texte de la manière suivante :

$nouvelleVoix ->chuchote(‘Ceci est mon texte’);

Merci à nerkdesign pour le tuyau sur espeak.

Raspberry PI ~ 09 : Créer une interface vocale

mardi 6 novembre 2012 à 00:01

Ce post est le neuvième d’une liste de tutoriels sur le raspberry PI dont voici le sommaire :

  1. Raspberry PI  ~ 01 : Présentation
  2. Raspberry PI  ~ 02 : Exploration technique
  3. Raspberry PI  ~ 03 : Brancher et installer le Raspberry PI
  4. Raspberry PI  ~ 04 : Configurer en serveur
  5. Raspberry PI ~ 05 : Protéger notre précieux
  6. Raspberry PI ~ 06 : Utiliser le GPIO et Interagir avec le monde réel
  7. Raspberry PI ~ 07 : Allumer/éteindre une vraie lampe OU comment faire de la domotique low cost.
  8. Raspberry PI ~ 08 : Jouer avec les ondes radio
  9. Raspberry PI ~ 09 : Créer une interface vocale
  10. Raspberry PI ~ 10 : Commander le raspberry Pi par radio
  11. Raspberry PI ~ 11 : Relier à un écran et afficher du texte

 

En attendant la suite de mon article sur le raspberry PI et la gestion des interrupteurs par ondes radio, je vous propose quelque chose de plus concret a vous mettre sous la dent :) .

 

En effet si vous avez bien suivis mon article “Raspberry PI ~ 07 : Allumer/éteindre une vraie lampe OU comment faire de la domotique low cost.” vous devez pouvez allumer et éteindre une lampe grâce à votre interface web.

 

Oui mais !! On à pas toujours une interface web sous la main pour commander le raspberry PI… alors que diriez vous de tout diriger par la voix ? :D

 

Ce qu’on cherche à faire :

Moi : “Yuri, allume la lampe du salon”
Raspberry PI (oui je l’ai appelé Yuri ;p) : “jawohl mein kapitän !!” (oui je lui donne un accent allemand alors qu’il a un nom russe :p)

*Lampe du salon s’allume*

Moi : “Yuri quelle heure est il ?”

Yuri : “Il est 18h41”

Ma chérie : “Idle, arrête de jouer avec ce machin con de geek inutile, ton WAF baisse a vue d’œil”

Moi : “Yuri Insulte la“

Yuri : “L’insulte aléatoire est : espèce de cheveux sans racine”

 

Bon okay on pourrait se passer d’aller aussi loin mais on vas le faire quand même, le but étant d’apprendre à simuler et a personnaliser une personnalité qui comprends vos ordres, effectue une action (contrôler une lampe, envoyer une requête, faire une recherche sur le web, dire un truc inutile etc…) et qui vous réponds en prime.

Tenez une petite vidéo horriblement mal filmée à base de canard albinos et de drogue dure pour vous prouver que je n’affabule pas :) :

 

 

 https://vimeo.com/52886695

 

 

Bref nous allons simuler une IA type Jarvis dans le film “Iron Man” ou Sarah dans la génialissime série “Eureka”, je dis bien simuler puisqu’au final, il n’y aura aucune intelligence derrière, juste une “bête machine à réagir” (mais c’est déjà pas mal pour cette fois :p).

Ce qu’il vous faut :

  1. Un pc avec windows 7 ou vista minimum
  2. Un micro (celui de votre portable conviendra très bien)
  3. Votre raspberry PI configuré selon le tutoriel “Raspberry PI ~ 07 : Allumer/éteindre une vraie lampe OU comment faire de la domotique low cost.

 

Le principe :

Votre PC vas utiliser(via notre petit programme) la librairie Speech To Text de Microsoft qui permet de faire de la reconnaissance vocale (le pc vous écoute), si la commande vocale est reconnue, il vas envoyer une requête web (http) à votre raspberry PI

 

Votre raspberry PI vas recevoir la requête et effectuer l’action : ouvrir/fermer un port gpio (donc allumer/éteindre une lampe ou tout autre objet électrique raccordé), ou encore récupérer l’heure serveur et vous la retourner, aller chercher les films qui passent au ciné en ce moment etc… et retourner un texte de réponse a la librairie Text To speech de Windows qui fait de la synthèse vocale (le pc vous parle).

 

Bref rien de sorcier en somme, certains déplorerons l’utilisation d’une librairie microsoft: c’est vrai que c’est bof, mais cette librairie a plusieurs avantages :

 

Et croyez moi pour trouver l’équivalent sous linux il faut se lever tôt (des lib comme sphinx et autres je ne veux plus en entendre parler, quand je dis lampe elle comprend canard albinos, c’est drôle les 10 premières minutes…)

 

Okay mais il vas falloir développer un truc ne C# pour adapter tout ça non?

C’est la que le génie de l’un de nos prédécesseur geeks entre en jeu : quelqu’un y a déjà pensé et a développé un petit programme au poil, S.A.R.A.H : pas d’installation, fonctionne avec micro simple ou avec kinect (meilleur reconnaissance), mots clés configurable avec de simple fichier xml etc…

Le soucis c’est que le mec utilise un serveur nodejs, et qu’il ne manœuvre aucun rpi avec, donc j’ai modifié et surtout beaucoup allégé S.A.R.A.H pour créer Y.U.R.I qui fonctionne avec apache, et qui est un peu plus léger.

Assez discutaillé : au boulot !!

 

Installation de Y.U.R.I sur le PC

Nb : Vérifiez que votre pc Windows et votre raspberry PI sont bien sur le même réseau et que vous pouvez bien accéder aux pages web de votre raspberry PI depuis le navigateur web de votre pc Windows

Installation de Y.U.R.I sur le raspberry PI

Test du programme

 

Et voila !! Enjoy !!

 

Pour ajouter des action vous même, il vous suffira de créer un nouveau fichier xml avec la requête et les ordres associés, et de créer l’action qui correspond dans yuri.php, vous pourrez ainsi pousser les choses très loin, le concepteur de S.A.R.A.H a créé plusieurs requêtes d’exemples pour récupérer la météo, gérer un google agenda, trouver les films sur allociné etc…

Je suis tout à vous pour d’éventuelles (voir certaines) questions et commentaires :)

 

BlazeKiss : un Wiki ultra light à la sauce Idle

samedi 3 novembre 2012 à 02:46

Bon Okay soyons francs, c’est pas du tout pas vraiment à la sauce idle: je n’ai fait que reprendre très sommairement le généralissime (mais victime de son design archaïque) Wikiss, wiki KISS sans base de données rapide et simplissime.

J’ai mélangé la dernière bêta avec un skin un peu plus d’actualité (que j’ai épuré aussi) et responsive afin de créer un petit wiki sympathique pour y fourrer toutes mes avancées concernant le raspberry PI et la domotique associée, j’ai aussi rajouté quelques types de balises (@@ et “”” pour les citations et les warnings) et fait quelques bricoles à droite et à gauche.

Étant donné que j’ai trouvé le résultat sympathique, je me suis dis que je pouvais vous le faire passer au cas ou ça vous branche :) .

 

image

 

Une bonne démo est sur mon wiki de recherche Raspberry PI : http://domotique.idleman.fr/

Sinon la page projet est la : http://projet.idleman.fr/blazekiss

 

Je tiens à être clair  (histoire qu’on ne me jette pas des cailloux dans quelques mois :p): je ne considère pas ça comme un projet et ne développerais pas plus dessus, je n’en ai ni le temps ni l’envie, et le script dans l’état actuel réponds tout à fait à mes besoins donc si quelqu’un est chaud pour poursuivre le dev je l’y encourage chaudement, le code est très intéressant à ausculter dans le genre compact et bourré de regex marrantes :)

Bien à vous,

Idle

Je suis entré dans un hack Lab…

jeudi 25 octobre 2012 à 23:35

Mardi dernier, je suis allé dans un endroit simultanément très étrange, très flippant et très intéressant :  l@bx, le hackerspace de bordeaux.

Beaucoup d’entre nous ont entendu ce terme très à la mode aux states ces temps ci sans vraiment savoir de quoi il retournait.

Tentant de dissiper le mystère qui plane autour de ces étranges labo “sauvages” ou se réunissent périodiquement les geeks et les électroniciens les plus pointus, je me suis rendu sur l’annuaire des hackerspaces (dit aussi fablab ou encore hacklab) histoire de chercher, sans trop y croire, un de ces fabuleux endroits sur bordeaux (citée de l’apéro et, accessoirement, de votre serviteur).

Et miracle !! J’ai trouvé labx!!

Situé au fin fond des docks de bordeaux, dans le coin sombre d’un parking d’immeuble sur le point d’être détruit, se trouve la mystérieuse (et quasi invisible) porte du labx :

2012-10-23 23.58.38

Après 10 petites minutes à poiroter devant la porte, l’esprit vacillant entre un …

“je vais mourir découpé en ptit dé”

et un …

“Je ne veux pas mourir sans voir ça (et j’aimerais ne pas mourir après non plus d’ailleurs :p)”

Je me suis décidé à m’engouffrer dans une sorte d’escalier très sombre (oui avec le flash on pourrait presque s’y sentir à l’aise hein ^^) semblant surgir des profondeur d’une cave en direction de vertigineux combles.

2012-10-23 23.59.03

Choisissant les combles au détriment de la batcave,  je suis arrivé dans une sorte de gigantesque hangar de la taille d’une salle de concert (ce qu’on voit sur la photo ci dessous n’est qu’un couloir par rapport aux deux pièces de gauche)…

2012-10-23 23.59.26

J’ai su que j’était sur la bonne voie lorsque j’ai croisé les deux frigidaires “we make porn” à moitiés défoncé qui gisaient parmi les autres objets non identifiés et…

2012-10-23 23.59.41

J’ai trouvé une porte ! Le hackLab, enfin !!

2012-10-23 23.59.50

Des fauteuils défoncés, des tables partout, quelques vielles étagères et… de la technologie partout !! De toutes les dates, dans tout les états, des postes à souder  des minitels, des oscilloscopes, des pc (mort, vivant ou les deux) des livebox démontées : bienvenue au hacklab !

2012-10-24 00.00.05 

2012-10-24 00.02.36

2012-10-24 00.02.29

Et dans cette pièce, une dizaine de barbus à lunettes affairés sur leurs projets, débattant autour d’une bière sur la conception des drones ou encore griffonnant des signes étranges sur les tableaux qui parsèment les murs de briques apparent du local.

2012-10-24 00.00.14

Aussi sympathique que compétents (et ça en fait des gens très sympathiques), ils m’ont tout de suite mis à l’aise, j’ai alors pu parcourir la salle, fasciné par les projets de chacun, je suis d’abord passé près d’une livebox sur le point d’être flashée et détournée de son constructeur vers une solutions plus open…

2012-10-24 00.00.20

Le hacker qui s’occupait de ce projet m’expliquant avec nonchalance qu’il ne faisait que “reproduire” ce qu’avaient déjà fait les “grands de ce monde” avant lui (oai ben c’est pas parce que je regarde ma chérie faire à la perfection ses escalopes milanaises que je suis capable de reproduire ce miracle)…

En face, deux autres personnages s’affairant à la construction d’une imprimante 3D (what else ?) et, devant mon visage de newbie en extase de m’affirmer “On est tous le noob de quelqu’un, l’essentiel c’est d’avoir la curiosité, le reste viens avec le temps” (je transcrit de mémoire mais je crois que c’est assez fidèle)

2012-10-24 00.00.26

Je suis ensuite passé par le ptit gars silencieux du fond :

Moi : “Et toi tu fais quoi ? ”

Lui : “Rien”

Moi : “Ha bon, mais c’est quoi tout ces circuits devant toi ?”

Lui : “Ha non c’est juste que j’ai commandé une carte arduino et le temps qu’elle arrive j’en construit une moi même”

Donc la c’est le moment ou je suis allé me planquer dans le coin du fond (entre le mur de leds, le poste de soudure et la pirateBox du lab) histoire de pleurer en silence sur ma déchéance intellectuelle et mon insignifiante existence de geek low cost :D

2012-10-24 00.00.37

Je me suis repris au bouts de quelques instants (pour aller me chercher une bière au frigo, parce que je reste avant tout bordelais, l’avantage, c’est qu’on ne risque pas de trouver un potage de tomate la dedans :D )

2012-10-24 00.03.25

Notant au passage que dans tout ce bordel, il y avait aussi un équipement adapté à chaque types de projet et à disposition de tous.

2012-10-24 00.00.42

2012-10-24 00.03.07

 

Revigoré par ma blonde et par les commentaires rassurants de certains membres du genre : “Je t’assure quand je suis arrivé je n’y connaissait rien en électronique comme en informatique !!” (dit il en démontant son pc portable d’une main et en terminant sa bière de l’autre).

J’ai alors branché ma PI box (mon projet domotique que j’ai eu bien du mal à vendre comme quelque chose de “cool” à un type du hacklab de la ville de Mont de Marsan qui venait de m’expliquer ses problèmes pour stabiliser son drone volants à caméra embarquée).

2012-10-24 00.00.49

Bref un fabuleux passage dans un univers merveilleux (malheureusement écourté par l’AG annuelle de l’asso, tout aussi intéressante mais un peu laborieuse) auquel je ne manquerais pas  de retourner mardi prochain !

Je ne peux que vous encourager vous aussi à trouver un hacklab près de chez vous et à y faire un tour, les occupants ont appliqué “l’open source” à leurs façon de penser à tel point qu’il est réellement captivant d’échanger avec eux et ceci, bien que vous ne compreniez pas la moitié des termes techniques qu’ils tentent de partager avec vous.

 

Snippet #20 ~ PHP: Stocker facilement des données JSON compressées dans un fichier

lundi 22 octobre 2012 à 08:00

Deux petites fonctions très simple pour stocker/déstocker des informations multiples dans un fichier texte

Avantages

  1. Permet de créer des scripts sans utiliser de base de données (ex: shaarli,codiad,blogotext v1.x,twidoo utilisent cette technique)
  2. Stocke les données au format JSON, un format léger et structuré de plus en plus utilisé par toutes sorte de langages/programmes
  3. Compresse au maximum les données avec les fonctions gzdeflate et gzinflate afin de réduire la taille des fichiers et des transferts de données

Code

<?php
         function store($file,$datas){file_put_contents($file,gzdeflate(json_encode($datas)));}
         function unstore($file){return json_decode(gzinflate(file_get_contents($file)),true);}
?>

Exemple d’utilisation

<?php
        $users[0]['name'] = ‘idleman’;
        $users[0]['age'] = 25;

        $users[1]['name'] = ‘other man’;
        $users[1]['age'] = 51;

        store(‘utilisateurs.json.gz’,$users);
        $my_users = unstore(‘utilisateurs.json.gz’);

        echo ‘Mon utilisateur 1 s\’appelle ‘.$my_users[0]->name.’ et a ‘.$my_users[0]->age.’ ans<br/>’;
        echo ‘Mon utilisateur 2 s\’appelle ‘.$my_users[1]->name.’ et a ‘.$my_users[1]->age.’ ans<br/>’;
?>