issue153:python
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
issue153:python [2020/02/03 09:02] – d52fr | issue153:python [2020/02/05 10:04] – auntiee | ||
---|---|---|---|
Ligne 3: | Ligne 3: | ||
Luckily, today we have Siri, Amazon Alexa, Google Assistant, and more. Almost every smartphone has some kind of speech recognition. There are many pre-made packages out there for Linux and other operating systems. But I wanted to see what could be done via Python.** | Luckily, today we have Siri, Amazon Alexa, Google Assistant, and more. Almost every smartphone has some kind of speech recognition. There are many pre-made packages out there for Linux and other operating systems. But I wanted to see what could be done via Python.** | ||
- | L' | + | L' |
- | Heureusement, | + | Heureusement, |
**First, I want to hit the pause button and share a little history of speech recognition with you. Back when I was a child, when rainbows were in black and white, and we had to watch TV by candlelight, | **First, I want to hit the pause button and share a little history of speech recognition with you. Back when I was a child, when rainbows were in black and white, and we had to watch TV by candlelight, | ||
Ligne 11: | Ligne 11: | ||
Enough of ancient history. Push the play button!** | Enough of ancient history. Push the play button!** | ||
- | D' | + | D' |
Ça suffit pour l' | Ça suffit pour l' | ||
Ligne 39: | Ligne 39: | ||
Snowboy Hotword Detection (works offline)”** | Snowboy Hotword Detection (works offline)”** | ||
- | Suite à une petite recherche | + | Suite à quelques recherches |
pip install SpeechRecognition | pip install SpeechRecognition | ||
Ligne 45: | Ligne 45: | ||
Tout le code source peut être trouvé sur https:// | Tout le code source peut être trouvé sur https:// | ||
- | J'ai continué de l' | + | J'ai continué de l' |
- | J'ai emprunté le bout de code suivant sur ce site de dépôt... | + | J'ai emprunté le bout de code suivant sur le site du dépôt... |
“… with support for several engines and APIs, online and offline. | “… with support for several engines and APIs, online and offline. | ||
Ligne 63: | Ligne 63: | ||
Snowboy Hotword Detection (works offline)” | Snowboy Hotword Detection (works offline)” | ||
- | **Now, there are somethings | + | **Now, there are some things |
Once I saw the line "To quickly try it out, run python -m speech_recognition after installing.", | Once I saw the line "To quickly try it out, run python -m speech_recognition after installing.", | ||
- | Maintenant, il y a des choses qui doivent être dites ici. La plupart des moteurs en ligne nécessitent que vous vous enregistriez comme utilisateur pour obtenir des clés permettant d' | + | Maintenant, il y a des choses qui doivent être dites ici. La plupart des moteurs en ligne nécessitent que vous vous enregistriez comme utilisateur pour obtenir des clés permettant d' |
- | Une fois que j'ai vu la ligne « pour un essai rapide, lancez python -m speech_recognition après l' | + | Une fois que j'ai vu la ligne « pour un essai rapide, lancez python -m speech_recognition après l' |
**“On Debian-derived Linux distributions (like Ubuntu and Mint), install PyAudio using APT: execute sudo apt-get install python-pyaudio python3-pyaudio in a terminal.” | **“On Debian-derived Linux distributions (like Ubuntu and Mint), install PyAudio using APT: execute sudo apt-get install python-pyaudio python3-pyaudio in a terminal.” | ||
Ligne 79: | Ligne 79: | ||
« Sur les distributions Linux dérivées de Debian (comme Ubuntu et Mint), installez PyAudio en utilisant APT : exécutez sudo apt-get install python-pyaudio python3-pyaudio dans un terminal. » | « Sur les distributions Linux dérivées de Debian (comme Ubuntu et Mint), installez PyAudio en utilisant APT : exécutez sudo apt-get install python-pyaudio python3-pyaudio dans un terminal. » | ||
- | J'ai immédiatement copié la ligne apt-get depuis l' | + | J'ai immédiatement copié la ligne apt-get depuis l' |
« Si la version dans les dépôts est trop ancienne, installez la dernière publication en utilisant Pip : exécutez sudo apt-get install portaudio19-dev python-all-dev python3-all-dev && sudo pip install pyaudio (remplacez pip par pip3 si vous utilisez Python3). » | « Si la version dans les dépôts est trop ancienne, installez la dernière publication en utilisant Pip : exécutez sudo apt-get install portaudio19-dev python-all-dev python3-all-dev && sudo pip install pyaudio (remplacez pip par pip3 si vous utilisez Python3). » | ||
Ligne 126: | Ligne 126: | ||
Say something!** | Say something!** | ||
- | Maintenant, nous pouvons | + | Maintenant, nous pouvons |
$ python -m speech_recognition | $ python -m speech_recognition | ||
Ligne 139: | Ligne 139: | ||
JackShmReadWritePtr:: | JackShmReadWritePtr:: | ||
JackShmReadWritePtr:: | JackShmReadWritePtr:: | ||
- | A moment of silence, please... | + | A moment of silence, please... |
Set minimum energy threshold to 1071.7441188823814 | Set minimum energy threshold to 1071.7441188823814 | ||
- | Say something! | + | |
- | Got it! Now to recognize it... | + | Dites quelque chose ! |
- | You said alright the time has come | + | Ça y est ! Maintenant pour le reconnaître... |
- | Say something! | + | Vous avez dit Ok l' |
- | Got it! Now to recognize it... | + | Dites quelque chose ! |
- | You said alright the time has come for all good men to come to the aid of the party | + | Ça y est ! Maintenant pour le reconnaître... |
- | Say something! | + | Vous avez dit Ok l' |
+ | Dites quelque chose ! | ||
**Ok. Color me impressed. The warning messages didn’t worry me, they actually piqued my interest about all the possibilities. I wasn’t really happy with having to hit < | **Ok. Color me impressed. The warning messages didn’t worry me, they actually piqued my interest about all the possibilities. I wasn’t really happy with having to hit < | ||
Ligne 160: | Ligne 161: | ||
First, we import the library and create instances of the Recognizer and the microphone objects. Next, we use a loop to continually check and adjust the microphone level...** | First, we import the library and create instances of the Recognizer and the microphone objects. Next, we use a loop to continually check and adjust the microphone level...** | ||
- | Bon ! La couleur m' | + | Bon ! Je suis impressionné. Les messages d' |
En fouillant dans le répertoire de la distribution, | En fouillant dans le répertoire de la distribution, | ||
Ligne 169: | Ligne 170: | ||
m = sr.Microphone() | m = sr.Microphone() | ||
- | D' | + | D' |
**Notice that in this step, the Recognizer uses the Google Speech Recognition system. The line “if str is bytes:” checks to see if this is running under Python 2.x to properly print any unicode characters. Now we have printed out what the Recognizer THINKS was said. Next. we can check that with either the phrase “please quit” or “please stop” to programmatically end the program. I tried using a single word, but that never triggered. I’m guessing that the system just figured that the input was just noise. A side note here. What if you don’t want to use English as the language that you speak to the program with. What about Spanish or Norwegian or some other language. It’s covered! Change the line: | **Notice that in this step, the Recognizer uses the Google Speech Recognition system. The line “if str is bytes:” checks to see if this is running under Python 2.x to properly print any unicode characters. Now we have printed out what the Recognizer THINKS was said. Next. we can check that with either the phrase “please quit” or “please stop” to programmatically end the program. I tried using a single word, but that never triggered. I’m guessing that the system just figured that the input was just noise. A side note here. What if you don’t want to use English as the language that you speak to the program with. What about Spanish or Norwegian or some other language. It’s covered! Change the line: | ||
Ligne 178: | Ligne 179: | ||
value = r.recognize_google(audio, | value = r.recognize_google(audio, | ||
+ | |||
+ | Notez qu'à cette étape, Recognizer utilise le système de reconnaissance vocale de Google. La ligne « if str is bytes: » fait un contrôle pour voir si ça tourne sous Python 2.x pour imprimer correctement tous les caractères Unicode. Puis, nous avons imprimé ce que Recognizer PENSE a été dit. Ensuite, nous pouvons vérifier s'il y a la phrase, soit « please quit » (merci d' | ||
+ | |||
+ | value = r.recognize_google(audio) | ||
+ | |||
+ | en | ||
+ | |||
+ | value = r.recognize_google(audio, | ||
**For Brittish english, “no-NO” for Norwegian, or “es-AR” for Spanish (Argentina). You can check this link (https:// | **For Brittish english, “no-NO” for Norwegian, or “es-AR” for Spanish (Argentina). You can check this link (https:// | ||
Ligne 186: | Ligne 195: | ||
At this point, before I forget it, I promised a while ago to talk about PocketSphinx. There are a lot of people who find that it is not very reliable. I tried to get it to install and I have to admit, there were issues.** | At this point, before I forget it, I promised a while ago to talk about PocketSphinx. There are a lot of people who find that it is not very reliable. I tried to get it to install and I have to admit, there were issues.** | ||
+ | |||
+ | pour l' | ||
+ | |||
+ | Enfin, nous vérifions les exceptions (en bas à droite). | ||
+ | |||
+ | Au bout du compte, nous récupérons une chaîne (valeur) venant de Recognizer. Ce que nous en faisons, actuellement, | ||
+ | |||
+ | À ce staden avant que j' | ||
**First, I suggest that if you want to try PocketSphinx, | **First, I suggest that if you want to try PocketSphinx, | ||
Ligne 197: | Ligne 214: | ||
but for me, they needed to be...** | but for me, they needed to be...** | ||
+ | D' | ||
+ | Un exemple de programme est fourni avec la distribution des sources qui, au moins pour moi, ne fonctionnait pas. Je reçois systématiquement une erreur commençant par la ligne decoder = Decoder(config). J'ai fait une recherche et j'ai trouvé beaucoup de gens avec le même problème, mais peu avec une piste de solution. Après avoir creusé beaucoup plus que je n' | ||
+ | |||
+ | MODELDIR = " | ||
+ | |||
+ | DATADIR = " | ||
+ | |||
+ | mais, pour moi, elles auraient dû être ... | ||
**MODELDIR = "/ | **MODELDIR = "/ | ||
Ligne 203: | Ligne 228: | ||
DATADIR = "/ | DATADIR = "/ | ||
- | The package needs absolute path statements to where pip installed PocketSphinx. This can be a major problem if you are using something like pyenv and have multiple instances of Python or if you wish to distribute an app you wrote using PocketSphinx. | + | **The package needs absolute path statements to where pip installed PocketSphinx. This can be a major problem if you are using something like pyenv and have multiple instances of Python or if you wish to distribute an app you wrote using PocketSphinx. |
The next problem showed up on the line: | The next problem showed up on the line: | ||
Ligne 214: | Ligne 239: | ||
After these changes were made and saved, the example program worked.** | After these changes were made and saved, the example program worked.** | ||
+ | |||
+ | MODELDIR = "/ | ||
+ | |||
+ | DATADIR = "/ | ||
+ | |||
+ | La paquet nécessite une déclaration avec des chemins absolus vers l' | ||
+ | |||
+ | Le problème suivant se présente dans la ligne : | ||
+ | |||
+ | config.set_string(' | ||
+ | « | ||
+ | Celle-ci est incorrecte au regard de l' | ||
+ | |||
+ | config.set_string(' | ||
+ | |||
+ | Une fois ces modifications faites et enregistrées, | ||
**You might wonder at this point, “Ok, so how do we actually do something with the data we’ve received? | **You might wonder at this point, “Ok, so how do we actually do something with the data we’ve received? | ||
Ligne 220: | Ligne 261: | ||
Check out https:// | Check out https:// | ||
+ | |||
+ | Peut-être, qu'en ce moment, vous vous demandez « Bon. Comment faisons-nous vraiment quelque chose des données que nous avons reçues ? » C'est en tant que tel, une question à réponse ouverte, qui est en fait hors de sujet pour cet article. CEPENDANT, je peux vous indiquer une direction intéressante. | ||
+ | |||
+ | Si vous vous souvenez du haut de cet article, un des moteurs qui est supporté par la bibliothèque SpeechRecognition est Wit.ai. C'est un site intéressant. En gros, vous fournissez de la parole ou un texte à leur API et elle essaie de faire correspondre cette entrée à quelque chose que vous avez dit au système que vous vous attendez à ce que l' | ||
+ | |||
+ | Regardez sur https:// | ||
**One other thing. While I was digging around on the web to get info to do this article, I found that Google Chrome now can support voice commands. I haven’t tried it yet, but it looks very interesting. From the website, it says “Use the magic of speech recognition to write emails and documents in Google Chrome. Dictation accurately transcribes your speech to text in real time. You can add paragraphs, punctuation marks, and even smileys using voice commands.” Check out the site at https:// | **One other thing. While I was digging around on the web to get info to do this article, I found that Google Chrome now can support voice commands. I haven’t tried it yet, but it looks very interesting. From the website, it says “Use the magic of speech recognition to write emails and documents in Google Chrome. Dictation accurately transcribes your speech to text in real time. You can add paragraphs, punctuation marks, and even smileys using voice commands.” Check out the site at https:// | ||
Ligne 226: | Ligne 273: | ||
Until next time, keep coding!** | Until next time, keep coding!** | ||
+ | |||
+ | Autre chose. Pendant que je cherchais sur le Web pour trouver des info pour écrire cet article, j'ai découvert que Google Chrome supporte maintenant les commandes vocales. Je ne l'ai pas encore essayé, mais ça semble intéressant. Sur le site Web, il est dit « Utilisez la magie de la reconnaissance vocale pour écrire des mails ou des documents dans Google Chrome. Dictation retranscrit précisément votre parole en texte en temps réel. Vous pouvez ajouter des paragraphes, | ||
+ | |||
+ | Comme toujours, le code est sur Pastebin, à https:// | ||
+ | |||
+ | Jusqu' | ||
P 20, encart en haut à droite, 2 lignes noires : | P 20, encart en haut à droite, 2 lignes noires : | ||
Ligne 231: | Ligne 284: | ||
Maintenant, nous créons une autre boucle pour obtenir quelque chose qui ressemble à des paroles dans un micro.. | Maintenant, nous créons une autre boucle pour obtenir quelque chose qui ressemble à des paroles dans un micro.. | ||
- | Ceci continue jusqu' | + | Il continue |
P 21, encart en bas à droite, 1 ligne noire : | P 21, encart en bas à droite, 1 ligne noire : | ||
Ça parait très facile, mais ça ne l'est pas. Voici un échantillon du programme en train de tourner (j'ai enlevé les messages d' | Ça parait très facile, mais ça ne l'est pas. Voici un échantillon du programme en train de tourner (j'ai enlevé les messages d' |
issue153/python.txt · Dernière modification : 2020/02/05 20:16 de d52fr