YANA, la petite soeur de YURI

1235711

Commentaires

  • edited août 2013
    Si tu cliques avec le bouton droite sur l'icone de YANA , tu devrais avoir Historique si tu pouvais poster les informations que tu reçois ce serait une grande aide.

    Sinon tu peux activer les logs access de Lighttpd (qui permet de voir quand l'application YANA for windows accède à YANA SERVER), tu devrais aussi avoir deux trois infos intéressantes
    ln -sv /etc/lighttpd/conf-available/10-accesslog.conf /etc/lighttpd/conf-enabled/
    service lighttpd restart
    tail -f /var/log/lighttpd/access.log


    Good luck and happy hacking!

  • Bonjour a tous

    Depuis 2 jour j'ai un probleme avec yana server/client
    ci dessous ce que je trouve dans l'historique de yana client for windows


    15/08/2013 12:12:53 | <!> ERREUR: Speech Recognition is not available on this system. SAPI and Speech Recognition engines cannot be found.
    L: 0 | at System.Speech.Recognition.RecognizerBase.Initialize(SapiRecognizer recognizer, Boolean inproc)
    at System.Speech.Recognition.SpeechRecognitionEngine.get_RecoBase()
    at System.Speech.Recognition.SpeechRecognitionEngine.LoadGrammar(Grammar grammar)
    at YANA.Recognition..ctor(List`1 cmd)
    at YANA.TrayIcon.receive(IAsyncResult result)
    15/08/2013 12:23:47 | <!> ERREUR: Speech Recognition is not available on this system. SAPI and Speech Recognition engines cannot be found.
    L: 0 | at System.Speech.Recognition.RecognizerBase.Initialize(SapiRecognizer recognizer, Boolean inproc)
    at System.Speech.Recognition.SpeechRecognitionEngine.get_RecoBase()
    at System.Speech.Recognition.SpeechRecognitionEngine.LoadGrammar(Grammar grammar)
    at YANA.Recognition..ctor(List`1 cmd)
    at YANA.TrayIcon.receive(IAsyncResult result)

    Le token est ok peut etre une autorisation qui manque je suis a bout HELP HELP
  • A tous

    ok j'ai résolu le probleme du dessus mais maintenant j'ai celui la

    ERREUR: Speech Recognition is not available on this system. SAPI and Speech Recognition engines cannot be found.

     

    Merci d'avance

  • ERREUR: Speech Recognition is not available on this system. SAPI and Speech Recognition engines cannot be found.

    Regarde dans ton panneau de configuration si tu as dans Options d'ergonomie -> Reconnaissance vocale
    Si ce n'est pas le cas alors SAPI (alias Speech Application Programming Interface) n'est pas présent.
    J'avais eu le même problème en bossant sur un ordinateur avec un Windows un peu trop modé (traduction : une bonne grosse copie pirate trafiqué) et à priori j'ai pas trouvé de méthode pour la réinstaller :-(
  • hé hé hé, je vois que maditnerd répond a toutes les questions (et peut être meiux que je ne l'aurais fait du coup ^^).

    Pour la petite précision @seydarc essaye d'installer des produits microsofts de lectures comme microsoft reader, ça réinstalle souvent d'office les librairies qu'il semble te manquer :).

    Pour ce qui est du plugin température je n'ai pas encore regardé ce qu'il faisait, mais l'ajout a une pièce demande 3 lignes de codes (celles la même que madit a mentionnées)
  • Bonsoir les couches tard,

    Comme je suis super tenace voir bien lourd, j'ai bossé sur un plugin permettant d'afficher les capteurs de température par pièce. Je suis presque arrivé au bout mais pour le rendre propre je bute sur 2 ou 3 trucs.

    J'ai une fonction "function temphouse_display($room)" qui liste les capteurs associés à la pièce (ça c'est bon).
    La fonction devrait afficher la température au moyen de la fonction temperature_get (honteusement pompé sur le plugin température merci Arnaud :) ) et là c'est le drame :p

    Undefined variable: temph in/var/www/yana-server/plugins/temphouse/temphouse.plugin.enabled.phpon line 172

    Dans la première fonction, $temph récupère le no de série du capteur que j’espérai passer en argument dans la seconde => pas marche. Alors pouvez vous me dire comment passer un argument d'une fonction à une autre; A mon avis je m'y prends mal.

    Au passage, j'ai du mal également avec les accents. J'en ai pas un seul qui s'affiche dans ce script.

    Un volontaire pour m'expliquer, tester et améliorer ?

  • edited août 2013
    @Vulcain

    Hello,

    Tu as deux possibilités :
    soit : fonction2(fonction1())

    ou alors : var = fonction1()
    fonction2(var)

    pour les accent regarde l'encodage de ta page web. Si UTF-8 il est normalement que tu n'es pas les accents, ça ne gère pas les caractères spéciaux. Et normalement sur ta page ça te fait des @

    moi j'encode avec "charset=iso-8859-15"
  • khira 
    Merci je regarde ça ce soir. Tu veux le tester ?
  • edited août 2013
    @vulcain 

    Je l'aurais bien tester, mais pour le moment je n'ai pas  YANA sous la main. J'ai pris les codes sources et je regarde les faisabilités et je réfléchi sur papier à la structure que je veux lui donner. Je ne suis pas passé en phase de prod sur le projet YANA.
  • khira 
    Merci tout fonctionne parfaitement, je finalise la commande vocale et ça roule.
  • @vulcain :
    La fonction devrait afficher la température au moyen de la fonction temperature_get (honteusement pompé sur le plugin température merci Arnaud  ) et là c'est le drame 

    C'est fait pour çà les plugins codé à la rache juste pour valider un concept. Mais pour le moment, je me bats avec mon système Ambilight/Pibob qui déconne un peu sur les video 1080 

  • Houlà c'est point du tout une critique
    Quand j'écris "c'est le drame" c'est pas la fonction en cause mais mes yeux ! 
    La faute à un point virgule manquant dans mon code est un passage d'argument d'une fonction à l'autre complètement à l'ouest.

    Les plugins sont pour moi d'excellents exemples pour comprendre car je suis pas dev (tout le monde l'aura compris ^^ ) et j'en serai bien incapable.

    Mais heureusement il y a toujours quelqu'un qui traîne ici pour aider. 
    Bon courage pour ta mise au point Ambilight/Pibob 
  • Hey ! Depuis tout a l'heure, alors que ça marchait très bien jusque là, yana me renvoie une "error":insufficient permission !

    Le token est correct, permission 777 sur le dossier.... Je comprends pas ^^

    Si quelqu'un pouvait m'aider je lui en serait fort reconnaissant :)

  • Si tu as des doutes quant aux permissions, tu peux utiliser le "menu" de Maditnerd : il m'a sauvé la vie (eh ouais, carrément).
  • Après un redémarrage de la rpi, le token à changer.  Peut-être une erreur d'actualisation ! :)

    Merci novares pour le lien !

  • Tiens au faite , pour ceux qui ouvrent leur yana au monde extérieur (Yuri va faire la gueule si vous lui dites que vous avez laissé trainer sa petite soeur dans l'internet ^^)

    Plus sérieusement vous feriez mieux de planquer votre DB.

    (Sinon filez votre IP histoire que je passe ma journée à allumer et éteindre vos lampes en rigolant d'un rire machiavélique)
    Rien de bien compliquer à ça rassurez vous:

    Créons un dossier DB à la racine du serveur
    mkdir /db
    chown www-data:www-data /db


    Puis dans constant.php L13
    define('DB_NAME','/db/database.db');

    Reste à soit copier votre DB soit en recréer une.

    Bon sinon sinon sécu si vous stressez penser :

    - Au https
    - Mettre une authentification HTTP (Mais ça risque de foutre en l'air Yana for windows/android)
    - Changer de port
    - Changer le nom du dossier (yana-server) par autre chose (pas très utile, tant que j'ai pas vendu des bots aux Russo-crypto-chinois de la NSA pour scanner Yana BOUHAHAHAHAHAH)
    - A surveiller ce qui se passe avec Fail2Ban (et à bannir les vilains qui fouillent dans votre bazard)
    ... J'ai pas d'autres idées sur le coup...

    Mais pourquoi faire ça ?

    Sinon on peut choper votre BD avec votre mot de passe (crypté certes) et votre token en faisant
    http://votreipexterne/yana-server/database.db et ça s'est pas cool
    Bon certes si vous avez la flemme vous pouvez aussi renommer database.db ça devrait suffire comme rustine.

  • Bonne idée ca Madi, je comptais faire un tuto sur la secu, mais pas eu le temps encore. J'ai mis en place un rasp secu informatique.

    Dessus j'y ai mis :
    - arpwatch
    - logwatch
    - fail2ban
    - Rkhunter
    - apache2 configurer en reverse proxy.
    - Iptable
    - différents scripts
    - ssmtp pour recevoir les alertes
    - Dans le futur une plateforme SMS pour remplacer les mails

    Comme ça j’attaque tout sur ce rasp.
  • Alors j'attend ce tuto avec impatience :)
  • @maditnerd n'hésite pas a poster sur github ce genre d'issue de sécurité que je puisse les corriger :), je vais ragrder ça pour l'accès a la db :)
  • @idleman

    J'ai une erreur récurrente mais super basique que tu va devoir resoudre.

    Si le rasp n'a pas acces à l'exterieur, yana for windows plante

    <!> ERREUR: Timeout sur l'url  : blabla    (url invalide ou yana-server inactif)


    Et la moi je serais a ta place, je lui ferais repondre "je ne sais pas" ;)


    J'ai vraiment une connection de daube ici et donc ya plein de truc qui passe pas. Si je demande ce qu'il y a à la tv (j'en ai pas d'ailleur) il n'arrive pas a acceder a l'info pour une sombre histoire de proxy sfr  (port 80 et 443 seulement et useragent filtré mais pas de fair-use en echange (fair pour qui d'ailleur) ~ 200go par mois de consommé! dans ton C.. bande de voleur)

    Donc voila, je vais pas l'utiliser tres longtemps sous windows de toute maniere mais c'est pour les autres

  • as tu bien mis l'url correcte vers ton serveur yana ? Tu as quoi dans débug et dans error.log?
  • Oui je ne me suis pas trompé tkt.

    Comme je te disais ma connection est minable, par exemple pour la TV, je pense que le proxy sfr bloque tout bonnement la requete (renvoi un page blanche en fait)

    Yana me dit 'ton url a l'air foireuse ...' et plante
    Avec la meteo ca marche, mais de temps en temps c'est trop lent et meme probleme.

    <!> ERREUR: Timeout sur l'url  : blabla    (url invalide ou yana-server inactif) 
    j'ai raccourci mais l'essenciel est la. Le rasp met trop de temps a repondre tout simplement. A cause bien sur de mon acces internet.

    Par contre, si je met une mauvaise adresse ou que le pi est eteind, ca me dit aussi que l'url est foireuse mais ca plante pas....

    La je bricole mon electricité pour la finir avant les enduits, des que j'ai un peu de temps je rallume raspi et windows pour te donner plus de details.



    Vu que tu est la, tu veux pas en profiter pour ajouter une case option TV dans la config du menu vocalinfo pour ceux qui comme moi meprise cet engin de lobotomisation massive? (je vais l'enlever du code de mon coté, c'est plutot pour madame michu car a terme ce serais cool de faire du grand public)

    Et aussi, j'ai besoin d'un plugin qui pourrait me gerer des requetes GET http pour mes modules esclaves qui sont en ethernet.
    Peux tu m'indiquer vaguement le chemin a prendre que je m'y colle?
  • Question!

    Comment faire repondre yana differement parmi une liste pré etabli avec la meme commande vocale?

    Exemple:
    case 'vocalinfo_tv':
    $response = array('responses'=>array(
                                     array('type'=>'talk','sentence'=>'Les machines à lobotomie ne sont pas admise ici.')
                                     array('type'=>'talk','sentence'=>'La télé c\'est de la merde.')
                                     array('type'=>'talk','sentence'=>'Fait quelque chose de ta vie mon grand.')
                                     array('type'=>'talk','sentence'=>'Si tu en apporte une ici je verrouille la maison.')
                                                 )
                             );

    Vous avez compris j'aime pas la télé!
  • Tu peux prendre exemple sur le plugin relay (ligne 246 par la) pour les réponses aléatoires.

    Concernant la TV, tu as tord, comment peux tu dire ça avec toutes les émissions de qualité qui nous sont proposées : koh lantah, plus belle la vie, "y 'a que la vérité qui compte, il faut tout essayer,the voice,qui perd gagne etc.. :D
  • Merci pour l'exemple!


    Pour la tv, c'est parce que j'ai un peu de mal avec les voleurs, et depuis qu'elle a essayé de me piquer des neuronnes c'est fini entre nous ;)
    J'avoue que depuis 10ans sans elle, ca a beaucoup evolué. je devrais surement m'y remettre tout de suite mais je reserve ca pour quand mon alzheimer se declenchera!

    Sinon j'ai d'autre question/idée sur yana

    - Je pense a ajouter une case de config pour lui changer de nom depuis l'interface web et non le fichier de config, (parce que moi je prefere qu'elle s'appele alice et qu'elle me dise bienvenue au fond du terrier quand j'arrive chez moi, et a tu bien pris ta pillule rouge le soir quand je me couche)
    C'est plus simple pour personnaliser son installation.
    Est ce que je dois forker sur git ou je peux simplement poster mes modifs dans un sujet ici?

    - J'ai commencé une copie du plugin vocalinfo qui ne servira qu'a la personnalité de yana. (Si elle vois qu'il n'y a eu aucune interaction vocale depuis 0h, au premier "Yana" elle dit bonjour, ou bonsoir en fonction de l'heure. pareil le soir quand on lui dit bonne nuit, elle coupe tout sauf la chambre et nous souhaite de beaux reves par exemple, qu'elle ai des humeurs en fonction de la temperature ou de l'ensoleillement etc).
    Est il possible de faire en sorte que ce qui est issue de se plugin ne soit pas lu par 'yana liste des commandes' ?

    Je veux ajouter un maximum de chose pour avoir une interaction le plus naturelle possible.

    - je me documente pour bricoler un plugin a base de dbpedia pour pouvoir lui demander des definitions ou des infos sur un sujet precis.
    Ceux qui veulent participer ;)

    - faire un plugin liste de course comme proposé a un moment sur le forum:
    yana ajoute * à la liste de course
    yana qui ya t'il sur la liste de course.

    - Ajouter sphinx a yana-server en ecoute continue et detection du mot clé 'YANA' qui envoi à yana-for-windows ou yana-for-android ou au rasp avec google api pour ceux qui veulent ou sphinx pour les courageux:    
    array('type'=>'talk','sentence'=>'Oui?')

    et lance l'ecoute de l'ordre. (je pense à lancer l'ecoute de yanaforandroid en mode offline sans appuyer sur le bouton, ce qui serais trop cool pour moi maintenant que c'est possible hors ligne chez google, ca consomme moins qu'un pc windows.)

    En fait en mettant les mains dedans sphinx est pas si mal pour des ordres prédefinis comme utilise yana. Pour la dicté c'est minable par contre. C'est la grande dificulté de la reconnaissance vocale.

    On sait tres bien faire comprendre 10 ordres de 10millions de gens differents (serveur telephonique) mais on sait mal faire detecter 1000mots d'une seule personne.
    Dans notre cas, on cherche au plus a faire comprendre 50/100 mots mais de n'importe qui et le plus offline possible.
    Ca vaux peut etre le coup de s'y mettre une bonne fois, et d'integrer ca directement a yana server... Pour le produit final j'entend. (par contre apparement mbrola ne fonctionne pas sous raspbian wheezy pour le moment)


  • Encore ;)

    Comment enlever dans 'Liste des commandes'  le mot YANA qui se repete a chaque fois?
  • J'avoue que depuis 10ans sans elle, ca a beaucoup evolué

    La dernière fois qu'en j'en ai eu une (il y a 6 ans) c'était passé en couleur !! :D

    Pour la liste des commandes il n'y a pas 36 solutions, il te faut retoucher l'action de repertoriage de la liste des commandes est remplacer le VOCAL_ENTITY_NAME par '' via une fonction comme str_replace par exemple.

    Pour que cette action ne prenne pas en compte les commandes du plugin vocalinfo, il faut faire une detection sur les url contenant 'vocalinfo' avec une fonction comme strpos et ne pas retourner la commande si la chaine est détéctée.

    Pour sphinx j'ai jamais essayé via des commandes prédéfinies mais la dictée était tellement pourrie que je pensais que c'était du même acabit, faudra que je réésaye, cela dit si tu me dis que ce n'est pas compatible raspian le problème reste entier ;)
  • edited août 2013
    C'est la synthese mbrola qui n'est pas encore compatible avec la wheezy (mais fonctionne avec squeeze). Il y a d'autre moteur de synthese comme espeak et festival. les voix sont vraiment robot par contre.


    Je ne me suis pas encore mis à enlever Yana au debut de chaque phrase quand elle liste les commande.
    Pour l'instant j'ai fait un nouveau module 'causette' , j'ai laissé dans vocalinfo l'heure, la date et la meteo, etat des gpio, mode dev, liste des commande. Les truc serieux quoi.
    Tout le reste je l'ai passé dans causette.

    Dans la config du plugin il y a le reglage de l'humeur, neutre bonne mauvaise. Pour l'instant c'est uniquement manuel mais j'ajouterais plus tard un section config qui permettra d'automatiser l'humeur (via different reglage comme un capteur de luminosité exterieur, la temperature, la meteo,)

    J'ai utilisé une condition dans chaque case qui ne dit pas tout a fait la meme chose en fonction de l'humeur.
    Elle est plus mielleuse de bonne humeur, plus seche (voir vulgaire mais c'est perso) de mauvaise humeur.

    Pile en ce moment je galere car je voudrais lui faire changer d'humeur vocalement au lieu d'utiliser la page web.


    2 questions pour le chef:


    function causette_vocal_command(&$response,$actionUrl){
        $response['commands'][] = array(
            'command'=>VOCAL_ENTITY_NAME.' soit de bonne humeur',
            $conf->put('plugin_causette_humeur',$_['bonne']),
            'url'=>$actionUrl.'?action=humeurbonne','confidence'=>'0.88'
            );



            case 'humeurbonne':
                global $_;
                    $affirmation = 'C\est fait, mon humeur est maintenant ' .$conf->get('plugin_causette_humeur');
                    $response = array('responses'=>array(
                                            array('type'=>'talk','sentence'=>$affirmation)
                                                        )
                                    );
                    $json = json_encode($response);
                    echo ($json=='[]'?'{}':$json);
            break;           

    tout se que j'arrive a faire c'est mettre un humeur vide dans la bdd. Si tu peux m'aider je t'aime! Peux tu?

    Deuxieme question:

    De meme que pour les reponses differente à la meme question, peut on mettre 2 question à la meme reponse? Qu'elle heure est il? Qu'elle heure il est? Il est quelle heure?
    Sans ecrire 3 fonctions differentes.
  • edited août 2013
    Et de l'auto scroll dans l'historique de yana windows :) ? moi aussi je t'aime!


    edit pour ceux qui connaissent pas mes references humoristique


  • Ha oai quand même.... :D

    Ton    $conf->put('plugin_causette_humeur',$_['bonne']), ne devrait pas se trouver dans la commande mais dans l'action appelée apr la commande, c'est pour ça que ça ne marche pas :)
Sign In or Register to comment.