Remylpat Posté(e) le 8 décembre 2011 Auteur Partager Posté(e) le 8 décembre 2011 Pour ce qui est des 2 scripts que j'utilise : Celui qui genere la wav avec la temperature les conditions météo en prenant les infos de google API : #Get time and weather and send to airplay# #!/bin/bash var_url="http://www.google.com/ig/api?weather=issy%20les%20moulineaux&hl=FR" var_weather_wget=`wget -q $var_url -O -` var_weather_xml=`echo "$var_weather_wget" | sed 's/<forecast_conditions>.*//'` var_weather=`echo "$var_weather_xml" | sed 's/></>n</g'` var_date=`echo "$var_weather" | grep -e '<forecast_date' | sed -e 's/<forecast_date data="//' -e 's/"/>//'` var_city=`echo "$var_weather" | grep -e '<city' | sed -e 's/<city data="//' -e 's/"/>//'` var_condition=`echo "$var_weather" | grep -e '<condition' | sed -e 's/<condition data="//' -e 's/"/>//'` var_temp_f=`echo "$var_weather" | grep -e '<temp_f' | sed -e 's/<temp_f data="//' -e 's/"/>//'` var_temp_c=`echo "$var_weather" | grep -e '<temp_c' | sed -e 's/<temp_c data="//' -e 's/"/>//'` var_humidity=`echo "$var_weather" | grep -e '<humidity' | sed -e 's/<humidity data="//' -e 's/"/>//'` var_wind=`echo "$var_weather" | grep -e '<wind' | sed -e 's/<wind_condition data="//' -e 's/"/>//'` #echo "Date: $var_date" #echo "City: $var_city" #echo "Condition: $var_condition" #echo "Temp: $var_temp_f Deg. Fahrenheit / $var_temp_c Deg. Celsius" #echo "$var_humidity" #echo "$var_wind" #Get Time Hour / Min # HEURE=`date '+%H'` MINUTE=`date '+%M'` #Generate wav speak -v mb-fr1 -s 130 -p 30 -m -w tmp.wav "<break time="2000ms"/> /$HEURE/ heure /et /$MINUTE/ minutes.<break time="2000ms"/> Tempairature /$var_temp_c/ Degrez, <break time="2000ms"/> /$var_condition/ ." #Send generated wav to airplay killall synoairplayd /usr/syno/sbin/synoairplayd --ip 192.168.0.254 --port 5000 --volume 100 --metadata {"title":"Meteo Airplay"} /volume1/homes/admin/tmp.wav #Wait few second until Airplay stop playing wav in order to remove the wav sleep 10 killall synoairplayd #Remove generated wav file rm -f tmp.wav Le script qui fait du speech recognition a partir de l'API google. #!/bin/sh echo "1 SoX Sound Exchange - Convert WAV to FLAC with 16000" sox tmp.wav message.flac rate 16k echo "2 Submit to Google Voice Recognition" wget -q -U "Mozilla/5.0" --post-file message.flac --header="Content-Type: audio/x-flac; rate=16000" -O - "http://www.google.com/speech-api/v1/recognize?lang=FR-fr&client=chromium" > message.ret echo "3 SED Extract recognized text" cat message.ret | sed 's/.*utterance":"//' | sed 's/","confidence.*//' > message.txt echo "4 Remove Temporary Files" rm message.flac rm message.ret echo "5 Show Text " cat message.txt J'espere que ca peut vous aider un peu. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Diaoul Posté(e) le 9 décembre 2011 Partager Posté(e) le 9 décembre 2011 Où je peux avoir la doc de google speech api ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp@r0 Posté(e) le 9 décembre 2011 Partager Posté(e) le 9 décembre 2011 Nul part .... Elle n'est pas officielle c'est issu du d 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Diaoul Posté(e) le 9 décembre 2011 Partager Posté(e) le 9 décembre 2011 C'est bien ce qu'il me semblait... C'est un peu merdique comme solution :'( Je suis en train de regarder coté PocketSphinx 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Remylpat Posté(e) le 9 décembre 2011 Auteur Partager Posté(e) le 9 décembre 2011 (modifié) Bonjour a tous, Je viens de me rendre compte qu'on a utilisé l'API non documenté de GOOGLE SPEECH to TEXT mais qu'on a pas du tout utilisé l'API non documenté google TEXT to SPEECH. AVec cette 2eme API on a meme plus besoin de ESPEAK ou de ces binaires... Je sais c'est pas propre mais écoutez juste ce que ca donne par curiosité au niveau de la voix : http://translate.goo...%C3%A9s+celsius wget -q -U Mozilla -O output.mp3 "http://translate.google.com/translate_tts?tl=FR&ie=UTF-8&q=Bonjour+je+mappel+DS+109.+Je+suis+vivant" ATTENTION : C'est limité a 100 caractères. Avantage : ca marche dans toutes les langues suffit de changer tl=FR par autre chose (et la phrase qui va avec aussi ;-) Modifié le 9 décembre 2011 par milpat 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PatrickH Posté(e) le 9 décembre 2011 Partager Posté(e) le 9 décembre 2011 Hummm c'est vraiment de bonne qualité Patrick 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Diaoul Posté(e) le 9 décembre 2011 Partager Posté(e) le 9 décembre 2011 Pocketsphinx inclut un module python J'ai tout compilé je vais mettre ça dans un SPK pour voir ce que ça donne 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Diaoul Posté(e) le 9 décembre 2011 Partager Posté(e) le 9 décembre 2011 Par contre j'ai pas compris comment ça marchait avec cette histoire de dictionnaire.. Il doit falloir un dictionnaire de grammaire française pour sphinx je pense 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp@r0 Posté(e) le 9 décembre 2011 Partager Posté(e) le 9 décembre 2011 Dis donc tu m int 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Diaoul Posté(e) le 9 décembre 2011 Partager Posté(e) le 9 décembre 2011 Bha j'ai cross compilé pocketsphinx avec succès. C'est assez compliqué je regarde comment ça marche pour l'instant sur mon PC x86 Linux Mint (Ubuntu like) : http://cmusphinx.sourceforge.net/wiki/gstreamer C'est fait pour de l'embedded (mention de ARM dans les sujets sur pocketsphinx) donc parfait pour nos NAS. Comme j'ai réussi à cross compiler maintenant j'essaye déjà de faire marcher quelque chose de correct sur mon PC avec d'autres languages models que ceux pourris par défaut (c'est expliqué dans le lien ci dessus). Il faut notamment que je regarde comment faire un clappeur à la place du bouton "Speak" comme dans la démo. En tout cas quand le bouton speak est déclenché, la détection se fait au fil de l'eau donc ça doit être faisable. On peut faire son propre language model assez simplement : http://cmusphinx.sourceforge.net/wiki/tutoriallm La liste des languages models dispo : http://sourceforge.net/projects/cmusphinx/files/Acoustic%20and%20Language%20Models/ Je vais voir ce que donne le french On va donc avoir PocketSphinx pour la reconnaissance vocale et espeak pour la synthèse vocale. Y'a plus qu'a mettre tout ça ensemble 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Diaoul Posté(e) le 9 décembre 2011 Partager Posté(e) le 9 décembre 2011 J'ai des segfaults avec le french, c'est sans doute fait pour sphinx pas pocketsphinx 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp@r0 Posté(e) le 9 décembre 2011 Partager Posté(e) le 9 décembre 2011 Tiens nous au courant de ton avancement !!! Bon sinon voilà ce que j'ai fait c'est un peu bourrin mais cela fonctionne bien: J'utilise le mic (assez pourrit) de ma webcam USB, le DSM l'a détecté automatiquement et je peux y accédé en /dev/dsp4 Pour trouver le votre le plus simple c'est ffmpeg avec la commande (en essayer tout les /dev/dsp...) ffmpeg -f oss -i /dev/dsp4 test.wav Sinon voici une première version de mon programme qui effectue les taches suivantes : - Ecoute en basse résolution - calcul la moyenne arithmétique du son - Si je détecte deux fois de suite une son fort et très cours (genre taper 2 fois de suite rapidement dans ces mains) je lance un enregistrement de 5s que j'envoie à Google Cela ne fonctionne pas trop mal mais je ne vais pas aller plus loin en attendant de voir ce que peu donner pocketsphinx, l'aspect positif de ce code c'est qu'il est relativement économe en ressource (2% de CPU sur mon DS110j) #!/opt/bin/python2.5 #-*- coding: utf8 -*- # # Gestion de domotique VOCAL (API Google) # Auteur : Sp@r0 # Version 0.1 du 08122011 # #============================= # Chargement des dépendances #============================= import ossaudiodev import struct import time import array import os import wave import subprocess #============================= # Initilisation des variables #============================= audio_node="/dev/dsp4" # Source Audio number_of_channels= 1 # Enregistrement en mono sample_rate_clap=10000 # Détection du clap à 1kHZ sample_rate_record=16000 # Enregistrement pour STT à 16kHZ sample_len=500 # Longueur du sample record_len=int(5 *sample_rate_record*2) # Longueur de l'enregistrement 4s clap_level_start = -1000 # Niveau dedétection d'un clap clap_level_stop = 500 # Hystérésis pour fin de clap clap_dur_min = 1 # Duré min d'un clap (en cycle) clap_dur_max = 4 # Duré max d'un clap (en cycle) clap_tmp = 0 # Tempo du clap clap_encours = 0 # Clap en cours de test interclap_dur_min = 10 # Duré min d'un clap (en cycle) interclap_dur_max = 40 # Duré max d'un clap (en cycle) interclap_tmp = 0 # Tempo du clap interclap_encours = 0 # Clap en cours de test sound_file = 'record.wav' #=============================================== # Gestion de l'enregistrement #=============================================== #def Api_STT(): #return #=============================================== # Ouverture du port Audio pour enregistrement #=============================================== audio_in= ossaudiodev.open(audio_node, "r") audio_in.setparameters(ossaudiodev.AFMT_S16_LE, number_of_channels,sample_rate_clap) # Configuration pour détection du clap #============================= # Boucle principal #============================= print "========================================================" print " DEMARRAGE DE LA RECONNAISSANCE VOCAL" print "========================================================" print "La longeur du sample est de : " + str(sample_len) while 1: frames_in = audio_in.read(sample_len) # Lecture d'un sample try: average = sum(struct.unpack(str((sample_len/2))+'h',frames_in))/(sample_len/2) # Pas tout compris except: average=0 #print average # # Gestion de la détection du clap clap # if (average < clap_level_start): # Début de clap clap_encours = 1 if (average >= clap_level_stop): # Fin de clap if clap_encours == 1: print str(clap_tmp) + " " + str(clap_dur_min) + " " + str(clap_dur_max) + " " clap_encours = 0 if (clap_tmp >= clap_dur_min) and (clap_tmp <= clap_dur_max): print "CLAP de " + str(clap_tmp) if (interclap_encours == 0): interclap_encours = 1 elif (interclap_tmp >= interclap_dur_min): print "CLAP CLAP de " + str(interclap_tmp) audio_in.setparameters(ossaudiodev.AFMT_S16_LE, number_of_channels,sample_rate_record) # Configuration pour STT print "Enregistrement en cours" #time.sleep(1.0) frames_out = audio_in.read(record_len) file_sound = wave.open(sound_file, 'w') file_sound.setparams((1, 2, sample_rate_record, 0, 'NONE', 'no compression')) file_sound.writeframesraw(frames_out) file_sound.close p = subprocess.Popen(args=["/opt/bin/ffmpeg -i /volume1/DevZ/iMic/record.wav -y /volume1/DevZ/iMic/record.flac"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True) stt_output = p.stdout.readlines() p.wait() p = subprocess.Popen(args=["/opt/bin/wget -q -U \"Mozilla/5.0\" --post-file /volume1/DevZ/iMic/record.flac --header=\"Content-Type: audio/x-flac; rate=16000\" -O - \"http://www.google.com/speech-api/v1/recognize?lang=fr&client=chromium\""], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True) stt_output = p.stdout.readlines() p.wait() print stt_output interclap_encours = 0 else: interclap_encours = 0 if clap_encours == 1: # Incrémentation clap clap_tmp = clap_tmp + 1 #print "Moyenne :" + str(average) + " Clap tmp :" + str(clap_tmp) else: clap_tmp = 0 if (interclap_encours == 1) and (interclap_tmp < interclap_dur_max): # Incrémentation interclap interclap_tmp = interclap_tmp + 1 #print "Moyenne :" + str(average) + " interClap tmp :" + str(interclap_tmp) else: interclap_tmp = 0 interclap_encours = 0 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp@r0 Posté(e) le 10 décembre 2011 Partager Posté(e) le 10 décembre 2011 (modifié) Alors j'ai une bonne est une mauvaise nouvelle, je commence par la bonne : LA BONNE NOUVELLE : Je suis également parvenu à cross compiler pocketsphynx + compiler le module en python + écrire un programme de test (en python) + décoder avec succès sur mon DS110J le texte suivant "bonjour toi" (enregistré avec le mic de ma webcam à 2m) LA MAUVAISE NOUVELLE : le décodage est comme qui dirait lent .. pour ne pas dire très très très très très lent ........ 22 min pour un fichier de 4 secondes :( :( Bon faut dire aussi que j'utilise le modèle de language capable de décoder 62K mots (200 Mo), j'ai fait le teste avec 6 mots ça tombe à 4-5 min (enfin cela n'as pas compris la phrase mais c'est normal car l'utilitaire web pour créer des extraits de dictionnaires ne marche que pour l'anglais pour le français faut le faire à la main (ou plutôt avec un script pour filtrer le dictionnaires)... Mais faut étudier la doc du truc à priori on peut utiliser une autre méthode plus rapide (mais moins précises quand on à gros dictionnaire) PS :la frai fausse API google à également décodé le même wav mais en 2 secondes .... Modifié le 10 décembre 2011 par Sp@r0 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Diaoul Posté(e) le 10 décembre 2011 Partager Posté(e) le 10 décembre 2011 Tu peux créer ton propre dictionnaire et lui apprendre juste quelques mots comme "météo" "heure" etc. La détection sera beaucoup plus rapide. Je pense que tu peux utiliser le même lm et hmm tout en modifiant le dict. Ce qui se passe actuellement c'est qu'il reconnait TOUT, ce qui est bien sûr absolument inutile dans notre cas 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp@r0 Posté(e) le 10 décembre 2011 Partager Posté(e) le 10 décembre 2011 Oui ça je m'en doute bien ..... Mais le problème ne vient pas du dict et du lm (que l'on peux simplifier et j'ai fait déjà le test même avec 6 mots dans le dico et le LM cela prends encore 5 min ) le soucis vient du hmm je pense que c'est celui ci qu'il faudrait recréer pour qu'il soit moins performants et qu'il bouffe moins de ressources 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
PatrickH Posté(e) le 10 décembre 2011 Partager Posté(e) le 10 décembre 2011 @Sp@ro: c'est quoi le format "oss" dans ta commande "ffmpeg -f oss -i /dev/dsp4 test.wav" ? Patrick 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Diaoul Posté(e) le 10 décembre 2011 Partager Posté(e) le 10 décembre 2011 (modifié) Un lien intéressant mais qui semble encore à l'état de projet et non utilisable http://www.csquad.or...le-avec-julius/ Modifié le 10 décembre 2011 par Diaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp@r0 Posté(e) le 10 décembre 2011 Partager Posté(e) le 10 décembre 2011 @Sp@ro: c'est quoi le format "oss" dans ta commande "ffmpeg -f oss -i /dev/dsp4 test.wav" ? Patrick Le syno utilise le "Open Soud System"(OSS) pour gérer le son, lors de l'accès au /dev/dsp on récupère un flux brute (RAW) d'un format particulier mais il ne contient aucun entête que pourrait utiliser ffmpeg pour savoir de quel RAW il s'agit il faut donc lui préciser pour que cela fonctionne. De même on peut procédé à l'envers pour obtenir un fichier contenant du RAW pouvant être lu directement avec cat fichier.raw > /dev/dsp l'intérêt c'est que cela ne prend quasiment aucune ressource pour lire un fichier son de ce type 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Diaoul Posté(e) le 10 décembre 2011 Partager Posté(e) le 10 décembre 2011 @Sp@ro: Tu peux m'envoyer un fichier wav qui fonctionne bien avec pocketsphinx ? J'ai l'impression que le mien n'est pas de bonne qualité car ça reconnait rien du tout. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Diaoul Posté(e) le 10 décembre 2011 Partager Posté(e) le 10 décembre 2011 Il y a un plugin Asterisk pout l'utilisation de pocketsphinx : http://scribblej.com/svn/ Pfiou, pas moyen de mettre la main sur une doc simple qui permettrai d'apprendre quelques mots à pocketsphinx et d'avoir le dict, acoustic model et language model qui vont avec 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Diaoul Posté(e) le 10 décembre 2011 Partager Posté(e) le 10 décembre 2011 Pour ceux que ça intéresse un clappeur avec un prénom, il faudra passer par du keyword spotting et il n'y a pas de logiciel pour ça. Excepté un petit bout de code en développement sur sphinx4 : http://sourceforge.net/projects/cmusphinx/forums/forum/5471/topic/4810538 Donc c'est du java, donc sur Syno ça me parrait impossible, à moins que ce soit vraiment économe. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp@r0 Posté(e) le 10 décembre 2011 Partager Posté(e) le 10 décembre 2011 En fait le soucis c'est qu'il fournisse un modèle acoustique basique pour l'anglais (je l'ai tester c'est super rapide qq secondes) mais il ne fournisse que le modèle de compétition pour le français .... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Diaoul Posté(e) le 10 décembre 2011 Partager Posté(e) le 10 décembre 2011 Bah c'est pas grave, je crois que je vais bosser avec de l'anglais uniquement Tu utilises quels modèles anglais ? Et français ? Tu as pas des erreurs avec le français ? Obligé de mettre dictcase à yes pour moi... et la détection est pourrie. Du coup je sais pas si ça vient du wav ou du hmm/lm/dic... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Diaoul Posté(e) le 10 décembre 2011 Partager Posté(e) le 10 décembre 2011 En fait j'ai l'impression qu'il n'y a pas de language model pour le français compatible avec pocketsphinx. Je pense que ça tourne sous sphinx4 cependant. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Sp@r0 Posté(e) le 10 décembre 2011 Partager Posté(e) le 10 décembre 2011 (modifié) Si si cela fonctionne bien avec pocketsphinx en français. Mais c'est juste lent mais je pense être sur une piste mais je regarderais cela plus tard j'ai un iMAc à démonter pour lui transplanter un SSD !!! Voici la ligne de commande avec l'appli de démo (pas tester j'utilise le python mais çà à l'air de tourner) pocketsphinx_batch \ -hmm /opt/share/pocketsphinx/model/hmm/fr/lium_french_f0/ \ -lm /opt/share/pocketsphinx/model/lm/fr/french3g62K.lm.dmp \ -dict /opt/share/pocketsphinx/model/lm/fr/frenchWords62K.dic \ -ctl bonjourtoi.wav Le ficher Wav avec ma douce voix mélodieuse => BONJOUR TOI Sinon le code que j'utilise avec le module python et qui lui fonctionne #!/opt/bin/python2.5 #-*- coding: utf8 -*- import sys,os def decodeSpeech(hmmd,lmdir,dictp,wavfile): """ Decodes a speech file """ try: import pocketsphinx as ps import sphinxbase except: print """Pocket sphinx and sphixbase is not installed in your system. Please install it with package manager. """ speechRec = ps.Decoder(hmm = hmmd, lm = lmdir, dict = dictp) wavFile = file(wavfile,'rb') wavFile.seek(44) speechRec.decode_raw(wavFile) result = speechRec.get_hyp() return result[0] if __name__ == "__main__": hmdir = "/opt/share/pocketsphinx/model/hmm/fr/lium_french_f0/" lmd = "/opt/share/pocketsphinx/model/lm/fr/french3g62K.lm.dmp" dictd = "/opt/share/pocketsphinx/model/lm/fr/frenchWords62K.dic" wavfile = "bonjourtoi.wav" recognised = decodeSpeech(hmdir,lmd,dictd,wavfile) print "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" print recognised print "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" Voici le retour que je viens d'obtenir après 20 min INFO: ngram_search_fwdflat.c(305): Utterance vocabulary contains 227 words INFO: ngram_search_fwdflat.c(940): 5007 words recognized (10/fr) INFO: ngram_search_fwdflat.c(942): 160200 senones evaluated (320/fr) INFO: ngram_search_fwdflat.c(944): 153175 channels searched (306/fr) INFO: ngram_search_fwdflat.c(946): 17712 words searched (35/fr) INFO: ngram_search_fwdflat.c(948): 13107 word transitions (26/fr) INFO: ngram_search_fwdflat.c(951): fwdflat 54.43 CPU 10.886 xRT INFO: ngram_search_fwdflat.c(954): fwdflat 58.72 wall 11.744 xRT INFO: ngram_search.c(1201): </s> not found in last frame, using [b].498 instead INFO: ngram_search.c(1253): lattice start node <s>.0 end node [b].175 INFO: ngram_search.c(1281): Eliminated 1026 nodes before end node INFO: ngram_search.c(1386): Lattice has 1710 nodes, 2998 links INFO: ps_lattice.c(1352): Normalizer P(O) = alpha([b]:175:498) = -462574 INFO: ps_lattice.c(1390): Joint P(O,S) = -472331 P(S|O) = -9757 INFO: ngram_search.c(875): bestpath 0.58 CPU 0.116 xRT INFO: ngram_search.c(878): bestpath 2.00 wall 0.400 xRT INFO: ngram_search_fwdtree.c(430): TOTAL fwdtree 837.27 CPU 167.790 xRT INFO: ngram_search_fwdtree.c(433): TOTAL fwdtree 887.01 wall 177.757 xRT INFO: ngram_search_fwdflat.c(174): TOTAL fwdflat 54.43 CPU 10.908 xRT INFO: ngram_search_fwdflat.c(177): TOTAL fwdflat 58.72 wall 11.767 xRT INFO: ngram_search.c(317): TOTAL bestpath 0.58 CPU 0.116 xRT INFO: ngram_search.c(320): TOTAL bestpath 2.00 wall 0.400 xRT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% bonjour toi %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% PS : J'ai mis à jour mon appleTV cette aprem et malheureusement ma bidouille avec le synoairplayd ne fonctionne plus pourtant l'audio station continu de marcher, je me suis rendu compte que le daemon était piloté directement par audio station il faut que j'étudie cela.... Modifié le 10 décembre 2011 par Sp@r0 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.