Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
issue150:python [2019/10/31 11:14] – d52fr | issue150:python [2019/10/31 16:29] (Version actuelle) – andre_domenech |
---|
You might notice above that this is article # 98 in my Python programming series. If everything goes according to plan, my 100th article will in December's Full Circle Magazine.** | You might notice above that this is article # 98 in my Python programming series. If everything goes according to plan, my 100th article will in December's Full Circle Magazine.** |
| |
Salut à tous ! Je hais l'utilisation de ce « Hello World » quand un nouveau langage ou concept de programmation est présenté à quelqu'un ; tellement, en fait, que je refuse de l'utiliser. Je le change pour quelque chose comme « Bonjour de Python » ou autre chose d'assez similaire mais assez différent. | HELLO WORLD ! Je hais l'utilisation de cette phrase quand un nouveau langage ou concept de programmation est présenté à quelqu'un ; tellement, en fait, que je refuse de l'utiliser. Je le change pour quelque chose comme « Bonjour de Python » ou autre chose d'assez similaire mais assez différent. |
| |
Vous avez pu noter ci-dessus que cet article est le 98e de la série sur la programmation en Python. Si tout se passe comme prévu, mon 100e article sera dans le Full Circle Magazine de décembre. | Vous avez pu noter ci-dessus que cet article est le 98e de la série sur la programmation en Python. Si tout se passe comme prévu, mon 100e article sera dans le magazine Full Circle de décembre. |
| |
**Now let's start with this month's article… the reason you are here... | **Now let's start with this month's article… the reason you are here... |
Remember, as we are going through this, the old saying "You get what you pay for" and in this instance it's true to some extent.** | Remember, as we are going through this, the old saying "You get what you pay for" and in this instance it's true to some extent.** |
| |
Commençons maintenant l'article de ce mois ... la raison pour laquelle vous êtes là... | Commençons maintenant l'article de ce mois ... la raison pour laquelle vous lisez ceci... |
| |
De l'écrit à l'oral. Quelque chose qui traîne par ici depuis des années, mais, quand il s'agit de Linux, c'est plutôt limité, particulièrement quand on va vers le logiciel libre. Ajoutez une obligation d'utiliser Python pour cela et la liste se réduit encore ; aussi, explorons ce qui en sort. Une autre nécessité est que ce doit être quelque chose qui est maintenu régulièrement et qui doit avoir une documentation qu'une personne normale peut comprendre. | De l'écrit à l'oral. Quelque chose qui traîne ici et là depuis des années, mais, quand il s'agit de Linux, est plutôt limité, particulièrement quand il s'agit d'un logiciel libre. Ajoutez une obligation d'utiliser Python pour cela et la liste se réduit encore ; aussi, explorons ce qu'il y a. Une autre nécessité est que ce doit être quelque chose qui est maintenu régulièrement et dont la documentation est telle qu'une personne normale peut la comprendre. |
| |
Souvenez-vous, pendant que nous parcourons l'article, le vieux diction « vous obtenez ce que vous avez payé » et, dans ce cas, c'est vrai jusqu'à un certain point. | Souvenez-vous, pendant que nous progressons, du vieux diction « on en a pour son argent » et, dans ce cas, c'est vrai jusqu'à un certain point. |
| |
**The best that I could find that fits all those requirements is a package called eSpeak (https://sourceforge.net/projects/espeak/). While it appears that there hasn't been any forward progress since the end of 2017, there is a fork of this project that is currently being worked on called 'eSpeak NG' (https://github.com/espeak-ng/espeak-ng). The eSpeak projects have support for over 100 languages and accents. This having been said, the voice quality is very robotic, to say the least. Nothing like what you get with Google Assistant, Alexa, Cortana or Siri. However, with the proper manipulations, it can sound understandable, at least in English. I always say, I know only two languages, English and BAD English, so I'm at the mercy of those who can speak other languages to determine the actual usability.** | **The best that I could find that fits all those requirements is a package called eSpeak (https://sourceforge.net/projects/espeak/). While it appears that there hasn't been any forward progress since the end of 2017, there is a fork of this project that is currently being worked on called 'eSpeak NG' (https://github.com/espeak-ng/espeak-ng). The eSpeak projects have support for over 100 languages and accents. This having been said, the voice quality is very robotic, to say the least. Nothing like what you get with Google Assistant, Alexa, Cortana or Siri. However, with the proper manipulations, it can sound understandable, at least in English. I always say, I know only two languages, English and BAD English, so I'm at the mercy of those who can speak other languages to determine the actual usability.** |
| |
Le mieux que j'ai pu trouver qui correspond à toutes exigences est un paquet appelé eSpeak (https://sourceforge.net/projects/espeak/). Bien qu'il semble qu'il n'y ait eu aucun progrès depuis fin 2017, il existe un fork de ce projet qui est en chantier actuellement et qui s'appelle « eSpeak NG » (https://github.com/espeak-ng/espeak-ng). Les projets eSpeak supportent plus de 100 langues et accents. Cela dit, la qualité vocale est très mécanique, c'est le moins qu'on puisse dire. Rien à voir avec ce que vous obtenez avec Google Assistant, Alexa, Cortana ou Siri. Cependant, avec des manipulations correctes, il peut être compréhensible, au moins en anglais. Je dis toujours que je connais seulement deux langues, l'anglais et le mauvais anglais ; aussi, je suis à la merci de ceux qui parlent d'autres langues pour déterminer son utilisabilité réelle. | Le mieux que j'ai pu trouver qui correspond à toutes ces exigences est un paquet appelé eSpeak (https://sourceforge.net/projects/espeak/). Bien qu'il semble qu'il n'y ait eu aucun progrès depuis fin 2017, il existe un fork de ce projet qui est en chantier actuellement et qui s'appelle « eSpeak NG » (https://github.com/espeak-ng/espeak-ng). Les projets eSpeak supportent plus de 100 langues et accents. Cela dit, la qualité vocale est très mécanique, c'est le moins qu'on puisse dire. Rien à voir avec ce que vous obtenez avec Google Assistant, Alexa, Cortana ou Siri. Cependant, avec des manipulations correctes, il peut être compréhensible, au moins en anglais. Je dis toujours que je connais seulement deux langues, l'anglais et le mauvais anglais ; aussi, je suis à la merci de ceux qui parlent d'autres langues pour déterminer son utilisabilité réelle. |
| |
**How to use it... | **How to use it... |
Now you can hear what I'm talking about. It's pretty much robotic and something reminds you of listening to the voice of Stephen Hawking. If you listen carefully, it can be mostly understood.** | Now you can hear what I'm talking about. It's pretty much robotic and something reminds you of listening to the voice of Stephen Hawking. If you listen carefully, it can be mostly understood.** |
| |
Comment l'utiliser... | Comment l'utiliser |
| |
Par chance, l'installation de eSteak NG sous Ubuntu est assez facile. | Par chance, l'installation de eSpeak NG sous Ubuntu est assez facile. |
| |
:~$ sudo apt-get install espeak-ng-espeak | :~$ sudo apt-get install espeak-ng-espeak |
| |
Pour le tester, quand vous êtes dans un terminal, essayez ça... | Pour le tester, quand vous êtes dans un terminal, essayez ceci : |
| |
:~$ espeak-ng "Bienvenue dans le traitement de l'écrit à l'oral, libre et Open Source." | :~$ espeak-ng « Bienvenue dans le traitement de l'écrit à l'oral, libre et Open Source. » |
| |
Maintenant, vous pouvez entendre ce dont je parlais. C'est vraiment mécanique et ça vous rappelle quelque peu la vois de Stephen Hawking. Si vous écoutez avec attention, c'est presque entièrement compréhensible. | Maintenant, vous pouvez entendre ce dont je parlais. C'est vraiment mécanique et ça vous rappelle quelque peu la voix de Stephen Hawking. Si vous écoutez avec attention, c'est presque entièrement compréhensible. |
| |
**There are many command-line arguments that you can use to change things around and to provide other options. A quick documentation page is at https://github.com/espeak-ng/espeak-ng/blob/master/src/espeak-ng.1.ronn. I'll try to distill them down, like a fine scotch whiskey, for you. Let's take a quick look at some of them. | **There are many command-line arguments that you can use to change things around and to provide other options. A quick documentation page is at https://github.com/espeak-ng/espeak-ng/blob/master/src/espeak-ng.1.ronn. I'll try to distill them down, like a fine scotch whiskey, for you. Let's take a quick look at some of them. |
I've cut that list down considerably to save space here in the article. And to be brutally honest, I wouldn't begin to know if some of these were even close to reality or not.** | I've cut that list down considerably to save space here in the article. And to be brutally honest, I wouldn't begin to know if some of these were even close to reality or not.** |
| |
Il existe de nombreux arguments en ligne de commande que vous pouvez utiliser pour modifier les choses et qui fournissent d'autres options. Une page de documentation rapide sur https://github.com/espeak-ng/espeak-ng/blob/master/src/espeak-ng.1.ronn. J'essayerai de vous les distiller, comme un scotch whisky de qualité. Regardons rapidement quelques uns d'entre eux. | Il existe de nombreux arguments en ligne de commande que vous pouvez utiliser pour modifier les choses et qui fournissent d'autres options. Une page de documentation rapide se trouve à https://github.com/espeak-ng/espeak-ng/blob/master/src/espeak-ng.1.ronn. J'essayerai de vous les distiller, comme un scotch whiskey de qualité. Regardons rapidement quelques-uns d'entre eux. |
| |
Si vous voulez voir les différentes langues disponibles, tapez simplement : | Si vous voulez voir les différentes langues disponibles, tapez simplement : |
Vous recevrez la réponse présentée à la page suivante (en haut à droite). | Vous recevrez la réponse présentée à la page suivante (en haut à droite). |
| |
J'ai considérablement réduit cette liste pour économiser la place dans cet article. Et pour être franc, je ne sais même pas si certains d'entre eux sont proches de la réalité ou non. | J'ai considérablement réduit cette liste pour économiser la place dans cet article. Et pour être très franc, je suis incapable de dire si certains d'entre eux sont proches de la réalité ou non. |
| |
**To use a specific voice, such as Spanish, you can use: | **To use a specific voice, such as Spanish, you can use: |
:~$ espeak-ng -ves -s 90 "Buenos días. ¿Cómo estás?" | :~$ espeak-ng -ves -s 90 "Buenos días. ¿Cómo estás?" |
| |
Autre chose : vous pouvez modifier la hauteur en utilisant l'option -p <entier> : | Autre chose : vous pouvez modifier la hauteur (pitch) en utilisant l'option -p <entier> : |
| |
:~$ espeak-ng -ves -s 125 -p 75 "Buenos días. ¿Cómo estás?" | :~$ espeak-ng -ves -s 125 -p 75 "Buenos días. ¿Cómo estás?" |
>>> from espeakng import ESpeakNG** | >>> from espeakng import ESpeakNG** |
| |
C'est bien en ligne de commande mais ce que nous voulons, c'est pouvoir créer la parole depuis un programme en Python. Pas de problème. | C'est bien en ligne de commande, mais ce que nous voulons, c'est pouvoir créer la parole depuis un programme en Python. Pas de problème. |
| |
Nous avons besoin d'un bibliothèque qui s'interface avec eSpeak-ng. Par chance, il y a une fort belle version qui peut être installée avec pip. Elle est appelée py-espeak-ng. Elle marche avec Pytho 2.x et Python 3.x. La page d'accueil est : https://github.com/gooofy/py-espeak-ng. | Nous avons besoin d'une bibliothèque qui s'interface avec eSpeak-ng. Par chance, il y a une fort belle version qui peut être installée avec pip. Elle est appelée py-espeak-ng. Elle fonctionne avec Pytho 2.x et Python 3.x. La page d'accueil est : https://github.com/gooofy/py-espeak-ng. |
| |
pip install py-espeak-ng | pip install py-espeak-ng |
pip3 install py-espeak-ng | pip3 install py-espeak-ng |
| |
Une fois que py-espeak-ng est installée, lancez votre version préférée de Python. La documentation montre une séquence de commandes légèrement différente, mais elle ne marche pas sur mon système. Cette séquence fait... La première chose que nous avons à faire est d'importer la bilbiothèque... | Une fois py-espeak-ng installée, lancez votre version préférée de Python. La documentation montre une séquence de commandes légèrement différente, mais elles ne marchent pas sur mon système. Cette séquence fait : La première chose que nous avons à faire est d'importer la bibliothèque : |
| |
>>> from espeakng import ESpeakNG | >>> from espeakng import ESpeakNG |
>>> esng = ESpeakNG() | >>> esng = ESpeakNG() |
| |
Puis, nous avons besoin d'assigner une voix... | Puis, nous avons besoin d'assigner une voix : |
| |
>>> esng.voice = 'en' | >>> esng.voice = 'en' |
| |
Maintenant, nous disposons enfin d'un moteur qui nous parle... | Maintenant, nous disposons enfin d'un moteur qui peut nous parler : |
| |
>>> esng.say('Hello from Python. Welcome to text to speech from Python.') | >>> esng.say('Hello from Python. Welcome to text to speech from Python.') |
175** | 175** |
| |
Maintenant, changeons la hauteur, comme nous l'avons fait avant. La syntaxe est un peu différente, mais toujours simple : | Maintenant, changeons la hauteur, comme nous l'avons déjà fait. La syntaxe est un peu différente, mais toujours simple : |
| |
>>> esng.pitch = 32 | >>> esng.pitch = 32 |
>>> esng.say('Bonjour. Comment vas-tu ?') | >>> esng.say('Bonjour. Comment vas-tu ?') |
| |
Et que se passe-t-il si nous voulons connaître la vitesse ou la hauteur actuelle ? Rien de plus simple... | Et que se passe-t-il si nous voulons connaître la vitesse ou la hauteur actuelle ? Rien de plus simple : |
| |
>>> p = esng.pitch | >>> p = esng.pitch |
>>> print(esng.voices) | >>> print(esng.voices) |
| |
(La sortie est ci-dessous) | (La sortie est ci-dessous.) |
| |
Beaucoup d'autres options sont disponibles, et vous pouvez très bien utiliser tout ce qui est montré ci-dessus pour découvrir comment poursuivre. | Beaucoup d'autres options sont disponibles, et vous pouvez très bien utiliser tout ce qui est montré ci-dessus pour découvrir comment poursuivre. |
:~$ google_speech -l en "Hello $USER, it is $(date)"** | :~$ google_speech -l en "Hello $USER, it is $(date)"** |
| |
Maintenant, une autre option Écrit vers oral existe, à notre disposition. Je ne l'ai pas mentionnée jusque là pour la raison que elle n'est pas totalement libre. C'est l'API de Google Translate TTS. Vous avez besoin de Python 3.4 pour commencer ; aussi, si vous êtes toujours attaché à Python 2.x, vous n'avez aucune chance avec celle-là. Vous devez aussi ajouter quelques fichiers. Pour Ubuntu et les autres distributions Debian, tapez dans un terminal : | En fait, une autre option Écrit vers oral existe et est disponible. Je ne l'ai pas mentionnée jusqu'ici parce qu'elle n'est pas totalement libre. C'est l'API de Google Translate TTS. Vous avez besoin de Python 3.4 pour commencer ; aussi, si vous êtes toujours attaché à Python 2.x, vous ne pourrez rien faire. Vous devez aussi ajouter quelques fichiers. Pour Ubuntu et les autres distributions Debian, tapez dans un terminal : |
| |
:~$ sudo apt-get install sox libsox-fmt-mp3 | :~$ sudo apt-get install sox libsox-fmt-mp3 |
You can certainly see that the speech is much better and more understandable. Why not stick with this? One of the requirements I stated earlier was that it needed to be free. That not only applies to the software that we use, but the engine service and the lack of internet. If these last two don't bother you, then this is for you. You do, however need to be aware of the cost of using the Google API for this. According to https://cloud.google.com/text-to-speech/pricing for the "Standard (non-WaveNet voices) service, there is a monthly free tier that (the way I read it) is from 0 to 4 million characters. Anything over that amount per month would be charged at $4.00 USD per million characters. If you look at their example example near the top of the page...** | You can certainly see that the speech is much better and more understandable. Why not stick with this? One of the requirements I stated earlier was that it needed to be free. That not only applies to the software that we use, but the engine service and the lack of internet. If these last two don't bother you, then this is for you. You do, however need to be aware of the cost of using the Google API for this. According to https://cloud.google.com/text-to-speech/pricing for the "Standard (non-WaveNet voices) service, there is a monthly free tier that (the way I read it) is from 0 to 4 million characters. Anything over that amount per month would be charged at $4.00 USD per million characters. If you look at their example example near the top of the page...** |
| |
Et maintenant, pour quelque chose de complètement différent... | Et maintenant, pour quelque chose de complètement différent : |
| |
>>> lang = 'nb' | >>> lang = 'nb' |
>>> text = 'God morgen. Hvordan har du det?' #Bonjour. Comment allez-vous ? en Norvégien | >>> text = 'God morgen. Hvordan har du det?' #Bonjour. Comment allez-vous ? en norvégien |
>>> speech = Speech(text, lang) | >>> speech = Speech(text, lang) |
>>> speech.play() | >>> speech.play() |
| |
Vous pouvez certainement voir que la parole est de meilleure qualité et plus compréhensible. Pourquoi ne pas rester sur celle-là ? Une des exigences que j'ai affirmé plus tôt était que j'avais besoin que ce soit libre. Ça ne s'applique pas seulement au logiciel que nous utilisons mais aussi au moteur du service et à l'absence d'Internet. Si ces deux derniers ne vous ennuient pas, alors il est fait pour vous. Vous devez cependant être averti du coût de l'utilisation de l'API de Google pour cela. D'après https://cloud.google.com/text-to-speech/pricing, pour le service « Standard » (pas les voix WaveNet), il y a un premier palier mensuel gratuit de 0 à 4 millions de caractères (tel que je le lis). Tout ce qui dépasse cette quantité serait facturé 4,00 US $ par million de caractères. Si vous regardez leur exemple presque en haut de la page ... | Vous pouvez certainement voir que la parole est de meilleure qualité et plus compréhensible. Pourquoi ne pas rester avec ce logiciel-là ? Une des exigences que j'ai affirmée plus tôt était qu'il fallait que ce soit libre. Ça ne s'applique pas seulement au logiciel que nous utilisons, mais aussi au moteur du service et à l'absence d'Internet. Si ces deux derniers ne vous ennuient pas, alors il est fait pour vous. Vous devez cependant être averti du coût de l'utilisation de l'API de Google pour cela. D'après https://cloud.google.com/text-to-speech/pricing, pour le service « Standard » (pas les voix WaveNet), il y a un premier palier mensuel gratuit de 0 à 4 millions de caractères (tel que je le lis). Tout ce qui dépasse cette quantité serait facturé 4,00 US $ par million de caractères. Si vous regardez leur exemple presque en haut de la page : |
| |
**<speak> | **<speak> |
</speak> | </speak> |
| |
79 caractères seront comptés. Aussi, soyez prudent si vous cherchez à calculer votre utilisation. Il est aussi possible que, si vous envoyiez trop de données trop rapidement, le système puisse vous bloquer pendant un moment si vous n'avez pas de compte. | 79 caractères seront comptés. Aussi, soyez prudent si vous cherchez à calculer votre utilisation. Il est aussi possible que, si vous envoyez trop de données trop rapidement, le système puisse vous bloquer pendant un moment si vous n'avez pas de compte. |
| |
Bon. Ce sera tout pour ce mois. Jusqu'à la prochaine fois, continuez à coder ! | Bon. Ce sera tout pour ce mois-ci. Jusqu'à la prochaine fois, continuez à coder ! |
| |
| |