Page 1 sur 2
Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64 )
Publié : lun. 10/févr./2014 0:12
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}"
Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64
Publié : lun. 10/févr./2014 0:32
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.
Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64
Publié : lun. 10/févr./2014 0:36
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
Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64
Publié : lun. 10/févr./2014 0:39
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.
Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64
Publié : lun. 10/févr./2014 0:41
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.
Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64
Publié : lun. 10/févr./2014 0:43
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.
Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64
Publié : lun. 10/févr./2014 0:48
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)
Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64
Publié : lun. 10/févr./2014 0:55
par Ar-S
ça me génère une erreur :
Si j'enlève le dernier paramètre, pas de son non plus.
Tu veux que je poste le code ?
Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64
Publié : lun. 10/févr./2014 1:00
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.
Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64
Publié : lun. 10/févr./2014 1:12
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)
Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64
Publié : lun. 10/févr./2014 1:16
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?
Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64
Publié : lun. 10/févr./2014 1:19
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
Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64
Publié : lun. 10/févr./2014 1:25
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"
Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64
Publié : lun. 10/févr./2014 8:50
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

Re: Speech nouveau SDK 11 (Vista ou supérieur x86 et/ou x64
Publié : lun. 10/févr./2014 10:13
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!