Utiliser le "speech" de Windows avec du code C

profete162
Utiliser le "speech" de Windows avec du code C

Bonjour a tous,

Je travaille actuellement sur un programme industriel me permettant de lancer de petits scripts en C et en Vb pour faire des calculs. ( je ne vais pas citer de nom pour ne pas m ecarter et embrouiller les gens)

Suite à la demande d'un client, il aparait utile que nos petits programmes lisent de temps en temps certaines phrases ou expressions en utilisant le moteur de "speech" de Windows.

Apres de nombreuses recherches sur le net, j'ai retrouvé un moyen simple de le faire via du Javascript (code en annexe) ou VBA ( malheureusement pas VB tout court)

Je pense donc que le C est un outil puissant me permettant d'executer cette demande.

Le seul petit Hic, c'est que j'ai peur de devoir commencer a integrer des bibliotheques, des dll, et des choses que je ne mairise pas specialement.

En regardant le code Java ci-dessous, qui se copie dans un simple fichier texte *.js et qui se lance par double click, je me dis: "mais m**** quelle simplicité quand même", est ce que les utilisateurs de ce forum sauront m'aider a faire aussi simple en C!!!

Pour info:


function DoSpeak(phrase) {
 
    var Speech_SPCAT_VOICES = "HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Speech\\Voices";
    var vt=WScript.CreateObject("SAPI.SpVoice", "voice_");
    var category = new ActiveXObject("Sapi.SpObjectTokenCategory");
   
    category.SetId(Speech_SPCAT_VOICES);
    var Token = category.EnumerateTokens("Name=Microsoft Sam").Item(0);
   
    vt.voice = Token;
    vt.Speak(phrase,1);
   
    while(speaking == true)
    {
        WScript.Sleep(100);
    }
 
}
 
 
function voice_EndStream(StreamNumber, StreamPosition)
{
    speaking=false
}
 
var speaking=true
DoSpeak("This is a long test of TTS")

Alors, arriverez vous a me montrer la puissance du C sur le JS?

Car pour l instant, je suis parti pour construire le fichier texte en C et l executer! J'ose donc esperer que je pourrai le faire facilement en C sans devoir construire moi-meme ce ficher.

Bien a vous.

PS: un admin voit-il un inconvenient a ce que je mette cette question dans le forum VB aussi comme je recherche les reponses dans les 2 langages?[/code]

fredericmazue

La puissance de C sur JS est toute démontrée :lol:

MAIS....

Quote:
Le seul petit Hic, c'est que j'ai peur de devoir commencer a integrer des bibliotheques, des dll, et des choses que je ne mairise pas specialement.

Le *gros* hic c'est que la programamtion de speech est que c'est de la programmation COM/Automation.
En C la programmation COM c'est extrêmement lourdingue. Si tu passes à Automation, le travail avec l'interface COM/Automation Dispatch tourne au cauchemar. Avec C++ ça va mieux en COM, mais pas vraiment mieux en Automation :(

En fait Automation a été créé pour les langages de script. Donc tu as grand intérêt à en utiliser un. Moi j'aime bien Python pour ça :)

Si ce que tu veux faire en Speech est exposé par des interfaces COM (Voir Doc MSDN pour le savoir) c'est ok pour C/C++, sinon mieux vaut prendre un langage de script. ;)

profete162

Mhhhh... bon....

difficile pour quelqu'un qui n'est pas habitué a tous ces langages que quelques lignes dans un bete fichier texte doivent etre remplacées par du gros code de combat pour trouver son equivalent en C!

Je suis en train de regarder cela plus en profondeur, mais a mon avis la solution la plus simple va etre d ecrire moi-meme le script et de l executer. Cela ne me posera aucun probleme d'écrire le code qui cree le fichier texte et l enregistrer sous "script.js"

Question auxiliaire alors: comment faire pour en C, lancer ce fichier $.js ( simulation du double clic dessus)

fredericmazue

Quote:
difficile pour quelqu'un qui n'est pas habitué a tous ces langages que quelques lignes dans un bete fichier texte doivent etre remplacées par du gros code de combat pour trouver son equivalent en C!

Les langages de script sont de plus haut niveau donc en principe plus concis par définition. En plus là, on ne parle pas de C ordinaire. On parle de programmation COM/Automation... On vois bien que tu n'a jamais mis les mains dans ce cambouis.... :lol: D'ailleurs si tu peux éviter... ;)

Quote:
Question auxiliaire alors: comment faire pour en C, lancer ce fichier $.js ( simulation du double clic dessus)

API Windows CreateProcess, ou bien les fonctions C standards execl execv execle execp et compagnie :)

profete162

Oki, merci,

ce sera donc la solution je cree moi même en C un fichier texte/script Java et je l execute via mon code en C!

C'est plutot tordu non?

Au moins, cela devrait fonctionner!

fredericmazue

Quote:
C'est plutot tordu non?

Pas nécessairement. Et si c'est facile et rapide à faire, ça compte.....

Mieux vaut coder 5 mn que 5 semaines pour la même chose :)