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

Autres IDE Pascal Discussion :

TTS : les caractères accentués ne sont pas lus [CodeTyphon]


Sujet :

Autres IDE Pascal

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    novembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : novembre 2015
    Messages : 15
    Points : 14
    Points
    14
    Par défaut TTS : les caractères accentués ne sont pas lus
    config : W10, fr et code typhon (5.5)

    j'utilise quasiment l'exemple donné sur le wiki Free Pascal
    Voici le code sensiblement modifié (juste la chaine de caractère des phrases à lire)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      SavedCW: Word;
      SpVoice: Variant;
    begin
      SpVoice := CreateOleObject('SAPI.SpVoice');
      // Change FPU interrupt mask to avoid SIGFPE exceptions
      SavedCW := Get8087CW;
      try
        Set8087CW(SavedCW or $4);
        SpVoice.Speak('Bonjour tout le monde', 0);
        spVoice.Speak('Dessiné à la main');
      finally
        // Restore FPU mask
        Set8087CW(SavedCW);
      end;
    end;
    La lecture de la première phrase est correcte, la seconde défectueuse du fait des caractères accentués.
    Que faire pour remédier à cela ? Une idée ? d'avance merci .

  2. #2
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    9 445
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 9 445
    Points : 13 421
    Points
    13 421
    Par défaut
    Salut,
    Citation Envoyé par AlainFt Voir le message
    Une idée ? d'avance merci .
    Peut-être essayer la solution trouvée dans cette page à base de WideString, accessible depuis ton lien (faut toujours tout lire !)

    Mais je n'ai rien testé, c'est juste une idée avant d'aller manger
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  3. #3
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    novembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : novembre 2015
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Merci et Bon appétit.

    J'avais déjà testé avec widestring et shortstring mais le défaut persiste.
    Peut-être un problème de codage des caractères mais je ne vois pas lequel (jai cependant un gros doute à ce sujet, vu que la chaîne initiale passée en dur n'est pas lue correctement).

  4. #4
    Membre confirmé

    Homme Profil pro
    Autre
    Inscrit en
    novembre 2015
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : novembre 2015
    Messages : 145
    Points : 625
    Points
    625
    Par défaut
    Il n'y a probablement que la voix anglaise installée sur votre version de Windows (ou alors il y en a bien plusieurs, mais c'est la voix anglaise qui est sélectionnée). Dans ce cas, il faudrait en installer une française, et la sélectionner ensuite dans le panneau de contrôle de Windows.

    Quelques liens anciens tirés directement d'une recherche rapide sur google:
    - http://www.microsoft.com/en-us/downl....aspx?id=27224
    - http://www.developpez.net/forums/d14...-francais-vba/
    - http://www.mediaforma.com/faire-parl...s-en-francais/

  5. #5
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    novembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : novembre 2015
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Du tout, je suis allé vérifier dans les paramètres de voix avant de poster. Il s'agit bien de la voix française, sans accent, qui lit parfaitement bien la première phrase sans caractères accentués.

  6. #6
    Membre confirmé

    Homme Profil pro
    Autre
    Inscrit en
    novembre 2015
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : novembre 2015
    Messages : 145
    Points : 625
    Points
    625
    Par défaut
    Oui, mais il y a des problèmes bien connus 32 bits/64 bits concernant le TTS de Windows.

    Avez-vous vérifié la langue pour le bon type d'exécutable au niveau du panneau de configuration (je ne sais pas si vous produisez une version 32 bits ou 64 bits de vos programmes) ?

  7. #7
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    novembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : novembre 2015
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Effectivement je n'ai pas précisé que j'étais en 64 bit.
    la langue est bien fr.
    La voix sélectionnée dans le panneau de configuration est celle de Paul mais lors du test du code ci-dessus c'est la voix de Julie qui se fait entendre.

  8. #8
    Membre confirmé

    Homme Profil pro
    Autre
    Inscrit en
    novembre 2015
    Messages
    145
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : novembre 2015
    Messages : 145
    Points : 625
    Points
    625
    Par défaut
    Il se pourrait bien entendu que je me trompe, mais...


    Quand vous dites que vous êtes en 64 bits, cela signifie t-il que :

    - vous utilisez une version 64 bits de Windows 10 (cela, je l'avais déjà pré-supposé) ?

    - vous utilisez une version 64 bits de l'IDE de Code Typhon (cela aussi je l'avais pré-supposé) ?

    - mais le plus important, que vous produisez une version 64 bits de votre programme ?

    Car si vous produisez une version 32 bits en sortie, cela pourrait expliquer la différence entre votre sélection au niveau de panneau de contrôle (64 bits) et celle utilisée par votre programme (s'il est bien en 32 bits).


    Vous pourriez éventuellement vérifier ces hypothèses en :

    - modifiant le type d'exécutable produit (32 bits et 64 bits), pour voir si la même voix est utilisée dans les 2 cas

    - modifier la voix pour les programmes 32 bits. D'après ce lien par exemple (http://nextup.com/forum/viewtopic.php?t=6076) en lançant : "C:\Windows\SysWOW64\Speech\SpeechUX\sapi.cpl" .


    Sinon, désolé, je ne vois pas d'autres explications...

  9. #9
    Membre éclairé

    Homme Profil pro
    Rédacteur technique (retraité)
    Inscrit en
    octobre 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique (retraité)

    Informations forums :
    Inscription : octobre 2009
    Messages : 164
    Points : 788
    Points
    788
    Par défaut
    Testé avec Lazarus 1.6 sous Windows 8.1 : Même problème.

    Mais j'ai pu en déterminer l'origine , c'est un problème de reconnaissance de l'encodage UTF8 du source par FPC.
    Trois solutions de contournement. Au choix :

    1. Ajouter le BOM UTF8 au début de chaque fichier source
    2. Insérer la directive {$CODEPAGE UTF8} au début de chaque fichier source comportant des constantes chaîne
    3. ajouter l'option -FcUTF8 aux options de compilation passées à FPC (dans l'EDI Lazarus Projet / Options du projet.../ Options du compilateur / Options personnalisées)

  10. #10
    Membre à l'essai
    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    novembre 2015
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence

    Informations forums :
    Inscription : novembre 2015
    Messages : 15
    Points : 14
    Points
    14
    Par défaut
    Je vous réponds tardivement : mes occupations professionnelles m'ont bien accaparées.
    Un grand merci à vous tous pour m'avoir consacré de votre temps. L'année commence bien :
    Citation Envoyé par DomDA91 Voir le message
    Mais j'ai pu en déterminer l'origine , c'est un problème de reconnaissance de l'encodage UTF8 du source par FPC.
    Le problème était bien là et les solutions préconisées sont efficaces.
    Encore une fois merci à tous.

    Précision pour les futurs utilisateurs :
    Le problème persiste cependant si nous plaçons la chaine de caractères dans une variable de type string :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      SavedCW: Word;
      SpVoice: Variant;
      str: string;
    begin
      SpVoice := CreateOleObject('SAPI.SpVoice');
      // Change FPU interrupt mask to avoid SIGFPE exceptions
      SavedCW := Get8087CW;
      try
        Set8087CW(SavedCW or $4);
        SpVoice.Speak('Bonjour tout le monde', 0);
        spVoice.Speak('Dessiné à la main'); // Lu
        str:='Dessiné à la main';
        spvoice.speak(str); // ignoré ???
      finally
        // Restore FPU mask
        Set8087CW(SavedCW);
      end;
    end;
    il faut, pour contourner ce problème, recourir à une solution donnée ci-dessus : utiliser un type shortstring à la place de string :

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/07/2009, 16h26
  2. Réponses: 8
    Dernier message: 29/11/2008, 14h32
  3. Réponses: 3
    Dernier message: 12/04/2008, 13h38
  4. [SQL] Problème d'encodage : les caractères accentués, sont affichés en "?"
    Par arnaudperfect dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/10/2007, 14h57
  5. Réponses: 4
    Dernier message: 10/04/2007, 16h27

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