Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64 )

Partagez votre expérience de PureBasic avec les autres utilisateurs.
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64 )

Message par nico »

Bonjour,

Je porte à votre connaissance si vous ne le saviez pas déjà qu'il y a un nouveau SDK version 11 qui permet de faire parler l'ordi ou de faire de la reconnaissance vocale, installation possible sur OS Vista ou supérieur sur Version x86 et/ou x64. Je trouve la voix hortense particulièrement excellente.

- Cette version n'est pas compatible Sapi 4 et 5, ce nouveau SDK apporte de nouvelles voix dans plusieurs langages (Sapi 4 et 5 était très pauvre sur ce point) et surtout fonctionne aussi bien en 32 bit que 64 bit ce qui n'était pas le cas avant, les fonctions des interfaces semblent être préservées.

On ne retrouve pas les nouvelles voix dans le panneau de configuration, je vous indique donc le chemin d'installation pour vérification:
x86 : C:\Program Files (x86)\Common Files\microsoft shared\Speech
x64 : C:\Program Files\Common Files\microsoft shared\Speech


- Il faut télécharger un runtime x86 ou x64 (On ne peut pas installer les deux versions, il faut choisir !)

Voici les liens de téléchargement:
Le Runtime :
http://www.microsoft.com/en-us/download ... x?id=27225

Les voix (Hortense pour le Français):
Les fichiers commençant par MSSpeech_SR sont pour la reconnaissance vocale
Les fichiers commençant par MSSpeech_TTS sont pour la parole
http://www.microsoft.com/en-us/download ... x?id=27224

Comment utiliser ce nouveau SDK:
Il suffit en principe de remplacer Sapi.SpVoice par Speech.SpVoice si vous utilsez ComatePlus (Il y a fort à parier que vous rencontriez des problèmes avec Comate qui ne semble pas si bien codé)

Je vous donne les correspondances si vous codez en dur:
ProgID = "Speech.SpVoice" = "{D941651C-44E6-4C17-BADF-C36826FC3424}"
Interface ISpeechVoice : "{269316D8-57BD-11D2-9EEE-00C04F797396}"
Dernière modification par nico le mar. 11/févr./2014 18:53, modifié 3 fois.
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Message par Ar-S »

Merci pour l'infos,
Qu'est-ce que ça change par rapport au code de Sapero que tu avais converti en PB (PB4.xx à l'époque) car il fonctionne toujours tel quel. (enfin j'ai bien les voix de la v11 mais je ne sais pas si ça change avec les précédentes car j'avais pas lancé ce code depuis des lustres.
Dernière modification par Ar-S le lun. 10/févr./2014 0:37, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Message par nico »

Pourrais tu préciser, qu'est ce que ça change à quel niveau?
Au niveau du code, je le précise dans mon post
Au niveau des changements, je le précise aussi dans mon post
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Message par Ar-S »

Bien j'ai

Code : Tout sélectionner

Texte1.s="SAPI.SpVoice"
Texte2.s="{269316D8-57BD-11D2-9EEE-00C04F797396}"
C'est le seul endroit ou j'ai ce que tu as cité, si je change SAPI en Speech ça ne parle plus.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Message par nico »

Texte1.s="SAPI.SpVoice"
Texte2.s="{269316D8-57BD-11D2-9EEE-00C04F797396}"
Devient:

Code : Tout sélectionner

Texte1.s="Speech.SpVoice" ; "{D941651C-44E6-4C17-BADF-C36826FC3424}"
Texte2.s= "{269316D8-57BD-11D2-9EEE-00C04F797396}"
Tout simplement, amuse toi bien.
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Message par Ar-S »

Hélas comme dit plus haut si je remplace SAPI.SpVoice par Speech.SpVoice je n'ai plus de son, j'ai pourtant installé le runtime et les voix.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Message par nico »

Désolé il faut aussi modifier la fonction speak par celle ci, il y a un paramètre en moins, je me demande s'il ne s'agissait pas d'une erreur avant, tu peux vérifier qu'avec cette modification si ça fonctionne aussi en SAPI 5 :
Speak(*Text, SpeechVoiceSpeakFlags.l)
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Message par Ar-S »

ça me génère une erreur :

Code : Tout sélectionner

SpeechVoice\Speak(bstrText, 0, @temp)
Si j'enlève le dernier paramètre, pas de son non plus.

Tu veux que je poste le code ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Message par nico »

Évidemment, il faut aussi que t'enlève le paramètre lors de l'appel à le fonction:
SpeechVoice\Speak(bstrText, 0) ; synchrone
SpeechVoice\Speak(bstrText, 1) ; asynchrone

Sinon j'ai vérifié et j'ai constaté que ce paramètre en trop était une erreur dans le code Sapi 5, il n'y a que deux paramètres.
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Message par Ar-S »

ça ne veut rien savoir.

Code : Tout sélectionner

; Ce code à été écrit par Sapero avec le language Aurora Compiler
; Traduit en Purebasic By Nico

#CLSCTX_INPROC_SERVER=1

;/Valeur pour SpeechVoiceSpeakFlags
#SVSFDefault = 0
#SVSFlagsAsync = 1
#SVSFPurgeBeforeSpeak = 2
#SVSFIsFilename = 4
#SVSFIsXML = 8
#SVSFIsNotXML = 16
#SVSFPersistXML = 32
#SVSFNLPSpeakPunc = 64
#SVSFNLPMask = 64
#SVSFVoiceMask = 127
#SVSFUnusedFlags = -128

Interface ISpeechVoice Extends IDispatch
  get_Status(*ISpeechVoiceStatus .L)
  get_Voice(*ISpeechObjectToken.l)
  put_Voice(*ISpeechObjectToken.l)
  get_AudioOutput(*ISpeechObjectToken.l)
  put_AudioOutput(*ISpeechObjectToken.l)
  get_AudioOutputStream(*ISpeechBaseStream.l)
  put_AudioOutputStream(*ISpeechBaseStream.l)
  get_Rate(long.l)
  put_Rate(long.l)
  get_Volume(long.l)
  put_Volume(long.l)
  put_AllowAudioOutputFormatChangesOnNextSet(VARIANT_BOOL.l)
  get_AllowAudioOutputFormatChangesOnNextSet(VARIANT_BOOL.l)
  get_EventInterests(SpeechVoiceEvents .L)
  put_EventInterests(SpeechVoiceEvents .L)
  put_Priority(SpeechVoicePriority.l)
  get_Priority(SpeechVoicePriority.l)
  put_AlertBoundary(SpeechVoiceEvents.l)
  get_AlertBoundary(SpeechVoiceEvents.l)
  put_SynchronousSpeakTimeout(long.l)
  SynchronousSpeakTimeout(long.l)
  ;Speak(*Text, SpeechVoiceSpeakFlags.l, long.l) 		;		SAPI 4
  Speak(*Text, SpeechVoiceSpeakFlags.l)
  SpeakStream(*ISpeechBaseStream, SpeechVoiceSpeakFlags.l, long.l)
  Pause()
  Resume()
  Skip(*Type, NumItems.l, long.l)
  GetVoices(*RequiredAttributes.l, *OptionalAttributes, *ISpeechObjectTokens.l)
  GetAudioOutputs(*RequiredAttributes, *OptionalAttributes, *ISpeechObjectTokens.l)
  WaitUntilDone(msTimeout.l, VARIANT_BOOL.l)
  SpeakCompleteEvent(long.l)
  IsUISupported(*TypeOfUI, *ExtraData.VARIANT, VARIANT_BOOL.l)
  DisplayUI(hWndParent.l, *Title, *TypeOfUI, *ExtraData.VARIANT)
  
EndInterface 

;Texte1.s="SAPI.SpVoice"		;		SAPI 4
Texte1.s="Speech.SpVoice"
*Tampon1=AllocateMemory((Len(Texte1)+1)*2)
PokeS(*Tampon1,Texte1,-1,#PB_Unicode)

Texte2.s="{269316D8-57BD-11D2-9EEE-00C04F797396}"

*Tampon2=AllocateMemory((Len(Texte2)+1)*2)
PokeS(*Tampon2,Texte2,-1,#PB_Unicode)

If CLSIDFromProgID_(*Tampon1, @Clsid.CLSID)=#S_OK
  
  If CLSIDFromString_(*Tampon2, @Refiid.CLSID)=#S_OK
    
    CoInitialize_(0) 
    
    If  CoCreateInstance_(Clsid, #Null, #CLSCTX_INPROC_SERVER, Refiid, @SpeechVoice.ISpeechVoice)=#S_OK        
      
      Texte3.s="PureBasic est très performant"
      *Tampon3=AllocateMemory((Len(Texte3)+1)*2)
      PokeS(*Tampon3,Texte3,-1,#PB_Unicode)
      
      temp=#SVSFDefault
      bstrText = SysAllocString_(*Tampon3)
      ; SpeechVoice\Speak(bstrText, 0, @temp)		;		SAPI 4
      SpeechVoice\Speak(bstrText, 0)
      SysFreeString_(bstrText)
      
      FreeMemory(*Tampon3)
      
      SpeechVoice\Release()
      
    EndIf
    
    CoUninitialize_()
  EndIf
EndIf
FreeMemory(*Tampon1)
FreeMemory(*Tampon2)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Message par nico »

Je te confirme que le code que tu as posté fonctionne parfaitement aussi bien en ascii qu'en unicode ce qui signifie que cela provient peut être du fait d'un problème de compilation x86 ou x64, quel runtime as tu installé? et dans quel mode tu compiles?
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Message par Ar-S »

J'ai récupe la x86 et compilé avec ou sans unicode en pb 5.21lts x86.
Faut peut-être que je reboot vu que je ne l'ai pas fait depuis les installs..
J'essayerai demain, je vais me pieuter.
Je posterai après reboot.
bonne nuit
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Message par nico »

Ouvrir la console "cmd.exe" en mode administrateur et exécuter cette commande si au reboot ça ne marche pas et faire un test:
Regsvr32 "C:\Program Files (x86)\Common Files\microsoft shared\Speech\Platform\v11.0\mssps.dll"
Avatar de l’utilisateur
Ar-S
Messages : 9478
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Message par Ar-S »

Hum, après reboot, j'ai regardé dans le dossier, je n'ai que :

Code : Tout sélectionner

C:\Program Files (x86)\Common Files\microsoft shared\Speech\Tokens\SR_MS_fr-FR_TELE_11.0
et
C:\Program Files (x86)\Common Files\microsoft shared\Speech\Tokens\TTS_MS_fr-FR_Hortense_11.0
Je n'ai pas le mssps.dll :?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64

Message par nico »

Tu as bien fait attention au chemin que j'indique dossier platform, si tu ne l'a pas, c'est que t'as pas installé la bonne version de runtime!
Répondre