Sphinx4 en c++ voce

problème d'installation

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour,

J'essaie d'intégrer sphinx4 à un programme en c++ je suis tomber sur ce post j'ai donc essayé d'installer voce. Mais ça ce passe pas vraiment bien.

Mon système :

os : Ubuntu 32 bits

java : jdk 1.8.0_92

ide : codeblocks

Manip et erreur Rencontré :

J'ai d'abord eu erreur jni.h est introuvale, j'ai donc inclue ces directories :

/usr/lib/jvm/java-8-oracle/include/linux /usr/lib/jvm/java-8-oracle/include /usr/lib/jvm/java-8-oracle/lib /usr/lib/jvm/java-8-oracle/bin

J'ai également remplacer :

#include <string.h>

par :

#include <cstring.h>

J'ai actuellement l'erreur :

/home/daxbrin/Legacy/voce-0.9.1/src/c++/voce.h|173|référence indéfinie vers « JNI_CreateJavaVM »|

Que j'ai comblé en ajoutant : /usr/lib/jvm/java-8-oracle/jre/lib/i386/client/libjvm.so

Mais maintenant j'ai cette erreur :

libjvm.so: cannot open shared object file: No such file or directory

J'essaie de changer les variable global comme ceci :

$ export LD_LIBRARY_PATH=/usr/lib/jvm/java-8-oracle/jre/lib/i386:/usr/lib/jvm/java-8-oracle/jre/lib/i386/client

Mais sans succès.:'(

Peut-être quelqu'un aurait la réponse je ne suis pas le seul avoir ce problème mais j'ai déjà cherché et je ne trouve pas la solution pour mon système.

Merci d'avance ;)

Édité par Ne0ratek

Donne un poisson à un homme, il mangera un jour, apprend lui à pêcher, il mangera toute sa vie

+0 -0

Comment as-tu ajouter .../libjvm.so ? À quoi ressemble la ligne de compilation ?

PS: #include <string.h> -> <cstring> même si normalement il n'y a pas de problème avec string.h. Par contre, je suis surpris que cstring.h passe.

+0 -0
Auteur du sujet

Je suis sous code::Block donc j'ai fait settings >> compiler >> linker settings puis add et j'ai mis le lien vers libjvm.so Et Merci pour l’explication de string.h ce n'est pas moi qui est codé voce.h du coup j'essaie de pas trop modifier le fichier, si vous avez besoin de précision http://voce.sourceforge.net

Édité par Ne0ratek

Donne un poisson à un homme, il mangera un jour, apprend lui à pêcher, il mangera toute sa vie

+0 -0

Le jour où j'ai utilisé C::B et mis une lib, j'ai tellement rien compris que j'ai ajouté les options manuellement.

Dans quelque chose comme linker flags -> -L/usr/lib/jvm/java-8-oracle/jre/lib/i386/client -ljvm

Les LD_* impactent le lancement d'un exécutable, pas la compilation. Je me demande d'où vient cette croyance… ?

Édité par jo_link_noir

+0 -0
Auteur du sujet

J'ai pas vraiment compris ?? J'ai regardé la dessus : http://forums.codeblocks.org/index.php?topic=11576.0 j'ai ajouté vos options de compilation mais aucun changement. Vous semblez dire que c::b est vraiment pas bien et vous êtes pas le seul. Pouvez vous m'en proposer un autre changer d'ide ne me dérange pas (je commence a sécher sur ce problème de jvm)

Voilà aussi mes var d’environnement :

JRE_HOME=/usr/lib/jvm/java-8-oracle/jre LD_LIBRARY_PATH=/usr/lib/jvm/java-8-oracle/jre/lib/i386:/usr/lib/jvm/java-8-oracle/jre/lib/i386/client JAVA_HOME=/usr/lib/jvm/java-8-oracle

Quand je le lance en console j'ai cette erreur :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
daxbrin@ubuntuDev:~/Legacy$ g++ -I"/usr/lib/jvm/java-8-oracle/include/linux" -I"/usr/lib/jvm/java-8-oracle/include" -L"/usr/lib/jvm/default-java/jre/lib/i386/client" -ljvm main.cpp
In file included from main.cpp:5:0:
/home/daxbrin/Legacy/voce-0.9.1/src/c++/voce.h: In function ‘void voce::init(const string&, bool, bool, const string&, const string&)’:
/home/daxbrin/Legacy/voce-0.9.1/src/c++/voce.h:159:38: warning: format not a string literal and no format arguments [-Wformat-security]
    sprintf(s, classPathString.c_str());
                                      ^
/home/daxbrin/Legacy/voce-0.9.1/src/c++/voce.h:164:28: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    options[1].optionString = "-Xmx256m";
                            ^
/home/daxbrin/Legacy/voce-0.9.1/src/c++/voce.h:189:38: warning: format not a string literal and no format arguments [-Wformat-security]
    sprintf(s, classPathString.c_str());
                                      ^
/tmp/ccJ7M2lv.o: dans la fonction « voce::init(std::string const&, bool, bool, std::string const&, std::string const&) »:
main.cpp:(.text+0x48d): référence indéfinie vers « JNI_CreateJavaVM »
main.cpp:(.text+0x57a): référence indéfinie vers « JNI_CreateJavaVM »
collect2: error: ld returned 1 exit status

Édité par Ne0ratek

Donne un poisson à un homme, il mangera un jour, apprend lui à pêcher, il mangera toute sa vie

+0 -0
Auteur du sujet

J'ai essayé dans l'autre sens mais aucun changement :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
daxbrin@ubuntuDev:~/Legacy$ g++ -L"/usr/lib/jvm/default-java/jre/lib/i386/client" -I"/usr/lib/jvm/java-8-oracle/include/linux" -I"/usr/lib/jvm/java-8-oracle/include" -ljvm main.cpp
In file included from main.cpp:5:0:
/home/daxbrin/Legacy/voce-0.9.1/src/c++/voce.h: In function ‘void voce::init(const string&, bool, bool, const string&, const string&)’:
/home/daxbrin/Legacy/voce-0.9.1/src/c++/voce.h:159:38: warning: format not a string literal and no format arguments [-Wformat-security]
    sprintf(s, classPathString.c_str());
                                      ^
/home/daxbrin/Legacy/voce-0.9.1/src/c++/voce.h:164:28: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    options[1].optionString = "-Xmx256m";
                            ^
/home/daxbrin/Legacy/voce-0.9.1/src/c++/voce.h:189:38: warning: format not a string literal and no format arguments [-Wformat-security]
    sprintf(s, classPathString.c_str());
                                      ^
/tmp/ccXBZG7e.o: dans la fonction « voce::init(std::string const&, bool, bool, std::string const&, std::string const&) »:
main.cpp:(.text+0x48d): référence indéfinie vers « JNI_CreateJavaVM »
main.cpp:(.text+0x57a): référence indéfinie vers « JNI_CreateJavaVM »
collect2: error: ld returned 1 exit status

Donne un poisson à un homme, il mangera un jour, apprend lui à pêcher, il mangera toute sa vie

+0 -0
Auteur du sujet

??? J'ai lu je dois vraiment être bête, je n'y arrive pas j'ai essayé : g++ -I"/usr/lib/jvm/java-8-oracle/include/linux" -I"/usr/lib/jvm/java-8-oracle/include" -L"/usr/lib/jvm/default-java/jre/lib/i386/client" main.cpp -ljvm

g++ main.cpp -I"/usr/lib/jvm/java-8-oracle/include/linux" -I"/usr/lib/jvm/java-8-oracle/include" -L"/usr/lib/jvm/default-java/jre/lib/i386/client" -ljvm

g++ -I"/usr/lib/jvm/java-8-oracle/include/linux" -I"/usr/lib/jvm/java-8-oracle/include" main.cpp -L"/usr/lib/jvm/default-java/jre/lib/i386/client" -ljvm

Édité par Ne0ratek

Donne un poisson à un homme, il mangera un jour, apprend lui à pêcher, il mangera toute sa vie

+0 -0

Étrange… Je remarque que le chemin de la bibliothèque n'est pas le même entre ton premier message et celui utilisé dans la ligne de compilation, est-ce normal ?

  • /usr/lib/jvm/java-8-oracle/jre/lib/i386/client/
  • /usr/lib/jvm/default-java/jre/lib/i386/client

Essaye avec g++ -I"/usr/lib/jvm/java-8-oracle/include/linux" -I"/usr/lib/jvm/java-8-oracle/include" -L/usr/lib/jvm/java-8-oracle/jre/lib/i386/client/ main.cpp -ljvm pour voir.

+0 -0
Auteur du sujet

Excuse-moi c'est que j'essaie d'autre truc en même temps je suis reparti sur un linux propre j'ai exécuté votre g++ et j'obtient ces erreurs :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
ne0ratek@ne0ratek:~/Legacy$ g++ -I"/usr/lib/jvm/java-8-oracle/include/linux" -I"/usr/lib/jvm/java-8-oracle/include" -L/usr/lib/jvm/java-8-oracle/jre/lib/i386/client/ main.cpp -ljvm
In file included from main.cpp:2:0:
/home/ne0ratek/Legacy/voce-0.9.1/src/c++/voce.h: In function ‘void voce::init(const string&, bool, bool, const string&, const string&)’:
/home/ne0ratek/Legacy/voce-0.9.1/src/c++/voce.h:159:38: warning: format not a string literal and no format arguments [-Wformat-security]
    sprintf(s, classPathString.c_str());
                                      ^
/home/ne0ratek/Legacy/voce-0.9.1/src/c++/voce.h:164:28: warning: deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
    options[1].optionString = "-Xmx256m";
                            ^
/home/ne0ratek/Legacy/voce-0.9.1/src/c++/voce.h:189:38: warning: format not a string literal and no format arguments [-Wformat-security]
    sprintf(s, classPathString.c_str());
                                      ^

Donne un poisson à un homme, il mangera un jour, apprend lui à pêcher, il mangera toute sa vie

+0 -0

Ce ne sont pas des erreurs, mais des avertissements. L'idéal serait de les corriger, mais comme ce n'est pas ta libs, cela devient délicat. Tu peux demander à gcc de ne pas les afficher en utilisant -iquote à la place de -I.

Maintenant il y a normalement un exécutable nommé a.out dans ton dossier.

+0 -0
Auteur du sujet

Je boss je regarde ce soir en rentrant et je te dis en tout cas merci beaucoup pour ton aide

Donne un poisson à un homme, il mangera un jour, apprend lui à pêcher, il mangera toute sa vie

+0 -0
Auteur du sujet

C'est exact merci j'ai plus d'erreur mais par contre la synthése et reco vocale ne fonctionne pas (d'après le code ça a fonctionné mais j'entends rien et ne peux rien dire) voilà mon code :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include </home/ne0ratek/Legacy/voce-0.9.1/src/c++/voce.h>

using namespace std;

int main()
{
    voce::init("voce-0.9.1/lib", true, true, "voce-0.9.1/lib/gram", "digits");
    voce::synthesize("Hello World");
    //voce::destroy();
    while(voce::getRecognizerQueueSize() > 0)
    {
          std::string s = voce::popRecognizedString();
          std::cout << "You said: " << s << std::endl;
    }
    //cout << "Hello world!" << endl;
    return 0;
}

Voilà le résultat :

1
2
3
4
5
6
ne0ratek@ne0ratek:~/Legacy$ ./a.out
[Voce] Java virtual machine created
[Voce] Initializing synthesizer
[Voce] Initializing recognizer. This may take some time...
[Voce] Initialization complete
ne0ratek@ne0ratek:~/Legacy$ 

Édité par Ne0ratek

Donne un poisson à un homme, il mangera un jour, apprend lui à pêcher, il mangera toute sa vie

+0 -0
Auteur du sujet

Encore merci. Avec setReconinizerEnable(true); j'ai cette ligne qui est en plus

1
2
3
4
5
6
7
ne0ratek@ne0ratek:~/Legacy$ ./a.out
[Voce] Java virtual machine created
[Voce] Initializing synthesizer
[Voce] Initializing recognizer. This may take some time...
[Voce] Initialization complete
[Voce warning] Cannot initialize microphone. Speech recognition disabled.
ne0ratek@ne0ratek:~/Legacy$ 

Donne un poisson à un homme, il mangera un jour, apprend lui à pêcher, il mangera toute sa vie

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte