2010-07-24 3 views
1

Je migre de XP vers Windows 7 64 bits. Mon application que j'ai compilée sur ma machine XP fonctionne correctement sur XP. Cependant quand je lance l'exe sur ma machine W7, la liste des voix retournée par GetVoices est la suivante:
Microsoft Anna
Microsoft Mary
Microsoft Mike
Sample TTS voix.Microsoft speech api 5.1 GetVoices renvoie des voix qui n'existent pas sous Windows 7

La boîte de dialogue Propriétés de la parole W7 indique que seul Microsoft Anna est chargé sur la machine. La vérification du registre à HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Speech/Voices le confirme.

Recompiler mon application sur ma nouvelle machine de développement Windows 7 crée un exe qui duplique le comportement ci-dessus. (Le code compilé XP et le code compilé W7 reproduisent la même erreur lorsqu'il est exécuté sous W7)

Je développe en Delphi 7 sous Windows 7 64 bits et j'utilise Microsoft Speech Object Library (Version 5.4) (note: 5.4 est ce qui apparaît dans la liste Import Type Library). J'ai installé SpeechSDK51.exe sur mon ordinateur W7. Cela est arrivé de:

http://www.microsoft.com/downloads/details.aspx?FamilyID=5e86ec97-40a7-453f-b0ee-6583171b4530&DisplayLang=en

Le code suivant produit la liste des 4 voix sur Windows 7, même si il ne devrait y avoir une seule voix:

procedure TForm1.FormCreate(Sender: TObject); 
var 
    i: integer; 
    SOToken: ISpeechObjectToken; 
    SOTokens: ISpeechObjectTokens; 
begin 
    cbbVoices.Clear; 
    SOTokens := SpVoice1.GetVoices('', ''); 

    for i := 0 to SOTokens.Count - 1 do begin 
     SOToken := SOTokens.Item(i); 
     cbbVoices.AddItem(SOToken.GetDescription(0), TObject(SOToken)); 
     SOToken._AddRef; 
    end; 
end; 

Toutes les suggestions sur la façon de traiter ce problème ?

grâce,
shawnh

+0

J'ai le même problème, avez-vous trouvé une solution? –

Répondre

0

non confirmées, mais je pense que Microsoft Sam, Microsoft Mike et Microsoft Mary ne fonctionnent pas sur Windows Vista et versions ultérieures. Je suppose que vous pourriez les installer avec le SDK 5.1, donc ils sont rapportés lorsque vous interrogez les voix, mais étant peut-être pas compatible avec le moteur 5.4, ils ne peuvent pas être utilisés.

Vous pouvez filtrer GetVoices avec l'attribut EngineProperties pour limiter ce qui est retourné.

Avertissement: tout cela est non testé/devinettes/doc lecture ....

+0

Merci François. Je suppose que je n'ai pas expliqué le problème assez clairement. Le problème n'est pas que Mike et Marry ne travaillent pas sur W7 (je ne sais pas - je ne les ai pas essayés). Le problème est que GetVoices montre qu'ils sont installés sur la machine mais ils ne le sont pas. Si l'utilisateur sélectionne Mary dans la liste des voix renvoyées par GetVoices, nous obtenons une erreur car cette voix n'est pas réellement installée sur la machine. – user327359

2

Microsoft Anna est la seule voix 64 bits, vous avez les autres sont des moteurs 32 bits. Votre système ne peut utiliser que le moteur 64 bits (Anna), de sorte que seul celui-ci peut être sélectionné dans le panneau. Mais les autres sont également installés. Si vous ouvrez ce fichier: /%Windows%/SystemWOW64/Speech/SpeechUX/sapi.cpl vous verrez une boîte de dialogue similaire à celle du panneau de contrôle, mais vous pourrez maintenant sélectionner l'une de ces voix comme voix standard. .

Questions connexes