[Résolu]->[Projet] Clérchazaal

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
Avatar du membre
thy59
Messages : 46
Enregistré le : mer. 9 sept. 2015 16:31

[Résolu]->[Projet] Clérchazaal

Message par thy59 » jeu. 17 sept. 2015 12:15

Bonjour

J'essaie de me faire un petit script de flash-infos pour me faire les dents... (je sais, il y a des "import" qui ne servent à rien, le script va grossir)

Code : Tout sélectionner

# coding=UTF-8

import sys
import os
import commands
import threading
import urllib
from lxml import etree


page=urllib.urlopen('http://www.france24.com/fr/actualites/rss') 
strpage=page.read()
fichier = open("/tmp/news.xml", "w")
fichier.write(strpage)
fichier.close()

tree = etree.parse('/tmp/news.xml')
for entree in tree.xpath("/rss/channel/item/description"):
	blabla=(entree.text)
	blabla=blabla.replace('"','')


	print blabla+"\n_________________\n\n"

	cmd="espeak -v fr -s 140 -p 90 "+'"'+blabla+'"'
	print cmd+"\n_________________\n\n"
	os.system(cmd)
Me retourne :

Code : Tout sélectionner

(...)

espeak -v fr -s 140 -p 90 "Un militaire a annoncé, jeudi, à la télévision nationale, la destitution du président par intérim du Burkina Faso Michel Kafando et la dissolution de son gouvernement. Suivez en direct la situation sur notre liveblog."
_________________


Traceback (most recent call last):
  File "test.py", line 41, in <module>
    os.system(cmd)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe9' in position 48: ordinal not in range(128)
OxE9 est la lettre "é", et manifestement os.system() n'accepte que de l'ascii pur.
J'ai bien essayé blabla=blabla.replace('é','e') mais la méthode replace n'accepte que de l'ascii elle aussi.
Quelqu'un a une idée de solution ?
Modifié en dernier par thy59 le jeu. 17 sept. 2015 19:36, modifié 2 fois.
Image

Avatar du membre
thy59
Messages : 46
Enregistré le : mer. 9 sept. 2015 16:31

Re: Clérchazaal

Message par thy59 » jeu. 17 sept. 2015 12:52

Désolé pour le dérangement, j'ai trouvé comme un grand, voici la solution

Il suffit d'avoir :

Code : Tout sélectionner

#!/usr/bin/python2.6
# -*-coding:utf-8 -*-
(...)

Code : Tout sélectionner

	blabla=blabla.replace('"','')
	blabla=blabla.encode("utf-8")
Je pige pas trop l'intérêt d'encoder du texte qui est déjà en utf-8, mais ça fonctionne (le changement de syntaxe des 2 1eres ligne n'avait servi à rien)

Bref, voici le script fonctionnel :

Code : Tout sélectionner

#!/usr/bin/python2.6
# -*-coding:utf-8 -*-

import sys
import os
import commands
import threading
import urllib
from lxml import etree


page=urllib.urlopen('http://www.france24.com/fr/actualites/rss') 
strpage=page.read()
fichier = open("/tmp/news.xml", "w")
fichier.write(strpage)
fichier.close()

tree = etree.parse('/tmp/news.xml')
for entree in tree.xpath("/rss/channel/item/description"):
	blabla=(entree.text)
	blabla=blabla.replace('"','')
	blabla=blabla.encode("utf-8")

	print blabla+"\n_________________\n\n"

	cmd="espeak -v fr -s 140 -p 90 "+'"'+blabla+'"'
	os.system(cmd)
Enjoy ! :)
Image

Avatar du membre
thy59
Messages : 46
Enregistré le : mer. 9 sept. 2015 16:31

Re: [Résolu] Clérchazaal

Message par thy59 » jeu. 17 sept. 2015 15:13

Tentative d'amélioration :

Code : Tout sélectionner

	# utilise mbrola, meilleur rendu :
	cmd="espeak -v mb-fr1 -s 170 -p 90 "+'"'+blabla+'"'
Le rendu me semble meilleur mais provoque l'affichage de messages d'erreur (si mbrola est installé)
mbrola: FATAL ERROR : cannot find file /usr/share/mbrola/voices/fr1 !
mbrowrap error: mbrola exited with status 216
mbrola voice not found


ou, si mbrola n'est pas installé :
mbrola: mbrola: No such file or directory
mbrowrap error: mbrola closed stderr and did not exit
mbrola voice not found


Je teste tout ça sur mon Ubuntu, j'ignore si les paquets nécessaires sont disponibles dans les dépôts rapsbian.

[edit] Les fichiers fr1, fr2, etc.... sont disponibles ici : http://tcts.fpms.ac.be/synthesis/mbrola/mbrcopybin.html
Dézippez la voix choisie (disons fr1) et en sudo :

Code : Tout sélectionner

cd /usr/share
mkdir mbrola
cp /chemin/vers/le/fichier/fr1 /usr/share/mbrola
Image

domi
Administrateur
Messages : 3230
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: [Résolu] Clérchazaal

Message par domi » jeu. 17 sept. 2015 18:44

Bonjour,

J'ai déjà eu ce genre de soucis en faisant un import de texte, je ne sais pas ce qu'il se passe, mais dans l'import, on a l'air de perdre le formatage UTF8 ?
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

Avatar du membre
Manfraid
Modérateur
Messages : 1402
Enregistré le : ven. 3 oct. 2014 14:50
Contact :

Re: [Résolu] Clérchazaal

Message par Manfraid » jeu. 17 sept. 2015 19:31

le problème de l'utf-8 est bien connu sous python2 je te conseil de faire ton script en python3
NAS : DIY OS Debian: DD250Go + 3x2To + 6To
Raspberry pi : 2B OS : Raspbian
Se tromper est humain, Vraiment foutre la merde nécessite le mot de passe de root.

Répondre

Retourner vers « Python »