IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Multimédia Java Discussion :

[Synthese vocale] Appeler eSpeak en ligne de commande


Sujet :

Multimédia Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Par défaut [Synthese vocale] Appeler eSpeak en ligne de commande
    bonjour et merci de votre attention .

    je cherche à automatiser une transformation de texte en wav
    selon certain paramettres.

    le probleme c'est que je trouve pas solution .

    Merci d'avance pour votre aide

    ps: j'ai dejas elan speech et eSpeak d'installer sur mon post
    mais j'arrive pas à trouver les paramétre pour les appeler de mon programme.

  2. #2
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Citation Envoyé par Kintato
    ps: j'ai dejas elan speech et eSpeak d'installer sur mon post
    mais j'arrive pas à trouver les paramétre pour les appeler de mon programme.
    Je ne connais pas... ce sont des programmes indépendants ou des librairies java?

    Si comme je le suppose, ce sont des programmes indépendants, tu dois:
    1) T'assurer qu'ils peuvent fonctionner en ligne de commande, sinon, tu es mal parti...
    2) Regarder quels paramètres ils attendent et dans quel ordre (en ligne de commande)
    3) Utiliser Runtime.exec(String[]) pour appeler ces programmes: la littérature sur cette méthode est extrèmement abondante sur le forum => fait une recherche si tu n'arrives pas à l'utiliser correctement
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Par défaut
    bon eSpeak peu s'executer via une ligne de command

    la ligne marche dans l'invite de command mais pas dans mon programme .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    cmd = "command.com /c C:\\Program Files\\eSpeak\\command_line\\eSpeak -v fr -w client.wav coucou";
    try {
      Runtime r = Runtime.getRuntime();
      System.out.println("cmd ");
      Process p = r.exec(cmd );
      p.waitFor();
      return cmd;
    } catch(Exception e) {
      System.out.println("erreur d'execution " + cmd + e.toString());
    			 return "ERREUR_Text_to_Wav";
    }

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 899
    Billets dans le blog
    54
    Par défaut
    Question bete mais pas forcement liee directement au probleme : sur quel systeme es-tu et eSpeak est-il une application DOS ? L'interpreteur sous 2000/XP (et Vista ?) est cmd.exe pas command.com (sauf pour la surcouche DOS).

    Egalement, il existe une variante de la methode exec() (exec(String[] cmdarray) ) permettant d'executer une ligne de commande contenant plusieurs argument (c'est ton cas). Et ton chemin fonctionnerai mieux avec des guillements (car il contient des espaces).

    De plus, il te faut consommer les deux flux de sortie (sortie standard, sortie d'erreur standard) de ton Process dans des Thread dediees, pour que celui-ci puisse s'executer.
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par bouye
    Egalement, il existe une variante de la methode exec() (exec(String[] cmdarray) ) permettant d'executer une ligne de commande contenant plusieurs argument (c'est ton cas). Et ton chemin fonctionnerai mieux avec des guillements (car il contient des espaces).
    Non, l'ajout de guillemets ne changera rien car c'est Java qui parse la ligne de commande et qui se base sur les espaces pour séparer la commande et les paramètres (si tu regarde le code source de la méthode tu verras qu'elle utilise tout simplement un StringTokenizer par défaut soit les séparateurs " \t\n\r\f").

    En gros, si tu fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    runtime.exec("\"c:\\Program File\\MonApp\\monapp.exe\"");
    cela revient à exécuter le programme "C:\Program avec comme paramètre File\MonApp\monapp.exe".

    Comme tu l'indique juste avant, la solution (et la seule) est d'utiliser la méthode exec() attendant un tableau de String .
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 899
    Billets dans le blog
    54
    Par défaut
    Mais que se passe-t-il justement si ce chemin n'est pas mis entre guillemets lors de l'appel de ligne de commande via la methode multiargument ?
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  7. #7
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    La méthode multiargument (j'aime bien cette appelation ^^) est justement faite pour pouvoir utiliser des paramètres contenant des espaces sans se soucier de les échapper.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    runtime.exec(new String { "C:\\Program Files\\MonApp\\monapp.exe", "param1", "param deux"});
    équivaut à exécuter l'application C:\Program Files\MonApp\monapp.exe avec un premier paramètre param1 et un deuxième param deux.

    Ainsi le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    runtime.exec(new String[] { "monapp.exe", "param1", "param deux" });
    équivaut à
    monapp.exe param1 "param deux"
    pour Windows

    et
    monapp.exe param1 param\ deux
    pour Linux.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  8. #8
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 899
    Billets dans le blog
    54
    Par défaut
    Ok, merci pour la precision
    Merci de penser au tag quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.

    suivez mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Par défaut
    Citation Envoyé par bouye
    Question bete mais pas forcement liee directement au probleme : sur quel systeme es-tu et eSpeak est-il une application DOS ? L'interpreteur sous 2000/XP (et Vista ?) est cmd.exe pas command.com (sauf pour la surcouche DOS).
    Alors je suis sous XP est eSpeak est un executable qui peut etre executer via un ligne de commande
    http://espeak.sourceforge.net


    Citation Envoyé par bouye
    De plus, il te faut consommer les deux flux de sortie (sortie standard, sortie d'erreur standard) de ton Process dans des Thread dediees, pour que celui-ci puisse s'executer.
    désolé mais là j'y comprend plus rien

    Sinon merci beaucoup pour vos reponses

  10. #10
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par Kintato
    Citation Envoyé par bouye
    De plus, il te faut consommer les deux flux de sortie (sortie standard, sortie d'erreur standard) de ton Process dans des Thread dediees, pour que celui-ci puisse s'executer.
    désolé mais là j'y comprend plus rien
    Voici un peu de lecture sur le sujet :
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Par défaut
    j'ai rajouter la gestion des flux mais

    il y a un probleme au niveau de la ligne de commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String [] cmd = new String[]  {"C:\\Program Files\\eSpeak\\command_line\\espeak.exe","-v fr","coucou"};
    j'attend le pc dire coucou

    mais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String [] cmd = new String[]  {"C:\\Program Files\\eSpeak\\command_line\\espeak.exe","-wWav.wav","coucou"};
    qui devrai me cree un fichier Wav.wav marche pas

    alors que je tape la meme ligne dans l'invte de commande ça marche

    Dite moi pourquoi

  12. #12
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Est ce que "-v fr" est bien un seul et même paramètre ? Ne serait-ce pas plutôt "-v", "fr" ?

    Idem pour "-w Wav.wav" -> "-w", "Wav.wav"
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Par défaut
    je vien de test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String [] cmd = new String[]  {"C:\\Program Files\\eSpeak\\command_line\\espeak.exe","-w","Wav.wav","coucou"};
    qui marche pas

    mais -vFR attaché marche alors pourquoi pas -wWAV.wav

  14. #14
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Citation Envoyé par Kintato
    mais -vFR attaché marche alors pourquoi pas -wWAV.wav
    Je n'ai pas dit que -wWav.wav ne marchait pas. Mais comme beaucoup de programme sépare le paramètre de l'argument je ne fesait que donner une piste (je ne connais pas du tout eSpeak).

    As tu essayé de rediriger les flux vers des fichiers (ou vers la sortie standard) pour voir s'il n'y avait pas des messages d'erreur ?
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Par défaut
    Désolé ça mercher en faite mais ça cree le .wav dans le dossier du workspace malgrés plusieur recherche via mon enemie le chein de crosoft

    Merci pour votre aide

    voilas ZE solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String [] cmd = new String[]  {"C:\\Program Files\\eSpeak\\command_line\\espeak.exe","-v","fr+15","-w","C:\\Documents and Settings\\USER\\Bureau\\test retour espeak\\testseveur.wav","MON TEXT"};

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 8
    Dernier message: 11/04/2014, 12h58
  2. Plugin et appel externe en ligne de commande
    Par Zombee dans le forum Eclipse Platform
    Réponses: 6
    Dernier message: 06/09/2013, 10h20
  3. appelle SUA en ligne de commande
    Par vince2005 dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 17/06/2009, 10h23
  4. Rake - appeler une ligne de commande ?
    Par titoumimi dans le forum Ruby on Rails
    Réponses: 4
    Dernier message: 14/11/2007, 02h10
  5. Appeler une URL avec & depuis une ligne de commande
    Par Fritzoune dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 13/02/2006, 14h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo