Voici donc un petit script python vous permettant d'exploiter cette reconnaissance vocale:
import subprocess print("Parler maintenant") audio=subprocess.Popen(["arecord","-q","-f","cd","-t","wav","-d","5","-r" ,"16000","text"],stdout=subprocess.PIPE) a=audio.communicate()[0] audio1=subprocess.Popen(["cat","text"],stdout=subprocess.PIPE) audio2=subprocess.Popen(["flac","--totally-silent","-","-f","--best", "--sample-rate","16000","-o","tmp.flac"],stdin=audio1.stdout, stdout=subprocess.PIPE) b=audio2.communicate()[0] print("audio recuperer") trad=subprocess.Popen(["wget","-q","-O","speech.txt","-U","Mozilla/5.0", "--post-file","tmp.flac","--header=Content-Type:audio/x-flac;rate=16000", "http://www.google.com/speech-api/v1/recognize?lang=fr&client=chromium"], stdout=subprocess.PIPE) print("trad recuperer") file=open('speech.txt','r') msg="" for ligne in file: tmp = ligne t=tmp.split(":") u=t[4].split(",") msg=u[0] msg=msg.replace("\"","") print(msg)Ce script commence par enregistrer une séquence audio de 5sec. Ensuite il la convertit en flac puis l'envoie aux serveurs de Google. Il récupére le fichier généré qui contient le texte ainsi que le pourcentage de correspondance.
C'est sympa ! une bonne piste. Merci
RépondreSupprimerBonjour merci pour l'info et le partage de ton script. J'ai une question est-il possible d'ouvrir des applications avec ce procédé?
RépondreSupprimerJe recherche une application efficace pour effectuer des tâches en vocale. Je m'en vais tester tout de même cette appli.
Merci
Il est tout à fait possible une fois le message (msg) obtenu à la fin du script de lancer une application en fonction de ce qui a été dis. Ce script n'est d'ailleurs qu'une partie de mon programme d'intelligence artificielle. Chaque commande vocale entraine une action: lancement d'application, envoie d'un mail, recherche sur internet, etc
SupprimerBonjour
RépondreSupprimerJ' essai de lancer le script et j'ai le message suivant qui apparaît :
debug@Debug-Notebook-PC:~$ python recon.py
File "recon.py", line 3
audio=subprocess.Popen(["arecord","-q","-f","cd","-t","wav","-d","5","-r","16000","text"],stdout=subprocess.PIPE)
^
IndentationError: unexpected indent
Pouvez m'aider s'il vous plait?
Bonjour,
RépondreSupprimerL'indentation en python est essentielle, il faut ici la retirer sur toutes les lignes. C'est la mise en page qui trompe
J'obtiens l'erreur suivante lorsque je lance ton programme:
RépondreSupprimerTraceback (most recent call last):
File "test_audio.py", line 8, in
stdout=subprocess.PIPE)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1259, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
cat: erreur d'écriture: Relais brisé (pipe)
Je viens d'apporter une petite modification au code pour qu'il fonctionne mieux.
Supprimerbonjour, j'obtiens une erreur lorsque je lance le script:
SupprimerTraceback (most recent call last):
File "C:\Python33\lib\subprocess.py", line 1106, in _execute_child
startupinfo)
FileNotFoundError: [WinError 2] Le fichier spécifié est introuvable
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:/Users/user/Desktop/python/essaison.py", line 4, in
,"16000","text"],stdout=subprocess.PIPE)
File "C:\Python33\lib\subprocess.py", line 820, in __init__
restore_signals, start_new_session)
File "C:\Python33\lib\subprocess.py", line 1112, in _execute_child
raise WindowsError(*e.args)
FileNotFoundError: [WinError 2] Le fichier spécifié est introuvable
Merci d'avance ^^
Bonjour,
SupprimerEst-ce que vous aviez bien arecord d'installé sur la machine?
Bonjour
RépondreSupprimerJ'ai le même messager d''erreur
~ $ python test.py
Parler maintenant
Traceback (most recent call last):
File "test.py", line 9, in
stdout=subprocess.PIPE)
File "/usr/lib/python2.7/subprocess.py", line 679, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1249, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
cat: erreur d'écriture: Relais brisé (pipe)
J'ai bien arecord
Y a t il ququechose qui m'échappe ??
Merci
Salut! Très bon script ça marche nickel :)
RépondreSupprimerJe cherche à enregistrer tant que le niveau sonore reste élevé (pour que ça s'arrête seul à la fin de la requête).
Je cherche donc un équivalent de arecord, mais qu'on puisse interrompre manuellement, et un moyen de mesurer le niveau sonore dans un autre thread. Des idées?
Merci!
bonjour,
RépondreSupprimerAviez-vous des pistes pour les erreurs décrites ci-dessus ???
Merci
André