Page 4 sur 6

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 16:41
par klystron
c'est la voix Microsoft anna

impossible de pouvoir changer de voix ... c'est un probleme de W7 ?

il me semble l'avoir déjà signaler à microsolt , mais ils s'en foute ...

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 16:44
par falsam
klystron a écrit :c'est la voix Microsoft anna
Tu as bien éxécuté le code précédent qui permet d'obtenir un debug de la liste des voix ?

http://www.purebasic.fr/french/viewtopi ... 59#p169459

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 16:46
par klystron
oui j'ai executé ton dernier code , mais la voix c'est celle de anna Microsoft ...

il y a un bug sur W7 je crois bien

dans l'installation des voix on ne peut pas changer , tu peut y mettre 10 voix nouvelles, cela ne changera pas car les carrés ou l'on doit valider les voix ne marchent pas ...

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 16:48
par falsam
klystron a écrit :impossible de changer de voix les boutons sont innibés ?...
Hey ! mais le numéro de la voix est à modifier dans le code que je t'ai donné.

C'est dans ces ligne là que tu modifies le numéro

Code : Tout sélectionner

;Sélection du numéro de la voix : (0 première voix)
SpeechObjectTokens\Item(1, @Token.ISpeechObjectToken)
Moi j'ai mis 1 mais peut etre que ta voix n'est pas en cette position.

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 16:51
par klystron
attends je regardes sur le tableau
la 1ere c'est pierre
la 4eme c'est virgine 16khz

donne moi le numero de la ligne ( du code pb )
4eme position c'est donc 3 car 0 c'est la premiere ?

c'est un bug de leur narration sur Windows 7...

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 17:18
par Ar-S
klystron a écrit :attends je regardes sur le tableau
la 1ere c'est pierre
la 4eme c'est virgine 16khz

donne moi le numero de la ligne ( du code pb )
4eme position c'est donc 3 car 0 c'est la premiere ?

c'est un bug de leur narration sur Windows 7...
J'ai déjà changé les voix sur W7 sans soucis. C'est bizarre. Tu as bien un compte admin sur ton pc ?

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 17:20
par klystron
oui bien sur
impossible de pouvoir changer la voix sur leur installation.
la narration est figé sur une voix anglaise.

il me semble avoir signaler ce probleme a Microsoft il y a quelque temps deja

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 17:22
par falsam
klystron a écrit :attends je regardes sur le tableau
la 4eme c'est virgine 16khz
c'est un bug de leur narration sur Windows 7...
Non non pas de bug :)

Vers la ligne 100 tu as

Code : Tout sélectionner

;Sélection du numéro de la voix : (0 première voix)
 SpeechObjectTokens\Item(1, @Token.ISpeechObjectToken)
Remplace 1 par 3 et essayes à nouveau

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 17:24
par klystron
ok j'y vais

j'ai mis 3 resultat anna
j'ai mis 4 resultat anna

tu as un pc avec Windows 7 ?
sur mon tableau ou il y a les voix, je ne peut pas changer une voix de la liste, toutes les boutons sont bloqués avec la voix en anglais .

si quelqu'un a un utilitaire pour aller voir sur mon pc ?
il verra sur piece :D

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 17:31
par falsam
Une fois la voix de virginie correctement installée et paramétrée dans le code Pure Basic. Voila une nouvelle démo avec table de multiplication. NE PAS OUBLIER DE PARAMETRER LE NUMERO DE LA VOIX SOUHAITE DANS CE CODE.

Code : Tout sélectionner

; Contributor : Traduction en Pure Basic du code de Sapero par Nico

;Installation de la voix française Virginie si celle d'origine ne fonctionne pas 
;http://s242132022.onlinehome.fr/Download/PureBasic/RSSolo4FrenchVirginie.zip
#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 ISpeechObjectToken Extends IDispatch
  get_Id( ObjectId)
  get_DataKey( ISpeechDataKey.l)
  get_Category( ISpeechObjectTokenCategory.l)
  GetDescription( Locale.l,Description)
  SetId( Id,CategoryID,CreateIfNotExist) 
  GetAttribute( AttributeName,*AttributeValue) 
  CreateInstance( pUnkOuter,SpeechTokenContext,Object)
  Remove( ObjectStorageCLSID)
  GetStorageFileName( ObjectStorageCLSID,KeyName,FileName,SpeechTokenShellFolder,*FilePath)
  RemoveStorageFileName( ObjectStorageCLSID,KeyName,DeleteFile)
  IsUISupported( TypeOfUI,*ExtraData,*Object,*Supported)
  DisplayUI( hWnd,Title,TypeOfUI,*ExtraData,*Object )
  MatchesAttributes( Attributes,*Matches)
EndInterface

Interface ISpeechObjectTokens Extends IDispatch
  get_Count(a.l)
  Item(Index.l,Token.ISpeechObjectToken)
  get__NewEnum(ppEnumVARIANT.IUnknown )
EndInterface

Interface ISpeechVoice Extends IDispatch
  get_Status(*ISpeechVoiceStatus .l)
  get_Voice(*ISpeechObjectToken)
  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)
  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"
*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       
                        
            SpeechVoice\GetVoices(0, 0, @SpeechObjectTokens.ISpeechObjectTokens)
            SpeechObjectTokens\get_Count(@Count)
                        
            ;Sélection du numéro de la voix : (0 voix par défaut configurée dans le panneau de configuration)
            SpeechObjectTokens\Item(0, @Token.ISpeechObjectToken)
            
            ;Vitesse d'éxécution (0 Normal. Une valeur négative réduit la vitesse. Une valeur positive augmentge la vitesse ) 
            speechvoice\put_Rate(0)
            
            ;Paramétrage du volume (0 à 100)
            speechvoice\put_Volume(50)
            
            ;Fin du paramétrage
            SpeechVoice\put_Voice(Token)   
            SpeechObjectTokens\Release()   
            
            ;Il est temps de dire quelques chose en français.
            ;Une table de multiplication
            Texte3.s="Bonjour Klystron. Je m'appelle Virginie."+#CRLF$
            Texte3 + "Je serais votre assistante virtuelle."+#CRLF$
            Texte3 + "Nous allons voir aujourd'hui, la table de multiplication par deux."+#CRLF$
            texte3 + "Commençons." + #CRLF$
            
            For n=0 To 10
              texte3 + Str(n) + " fois 2 =" + Str(n*2) + #CRLF$
            Next
            
            Texte3 + #CRLF$
            Texte3 + "J'espére que j'ai pu vous aider."+#CRLF$
            Texte3 + "A bientôt."+#CRLF$
            
            *Tampon3=AllocateMemory((Len(Texte3)+1)*2)
            PokeS(*Tampon3,Texte3,-1,#PB_Unicode)
           
            temp=#SVSFDefault
            bstrText = SysAllocString_(*Tampon3)
            SpeechVoice\Speak(bstrText, 0, @temp)
            SysFreeString_(bstrText)
              
            FreeMemory(*Tampon3)
              
           SpeechVoice\Release() 
        EndIf
       
        CoUninitialize_()
    EndIf
  EndIf
  
  FreeMemory(*Tampon1)
  FreeMemory(*Tampon2)
End

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 17:41
par klystron
je suis désolé mais je viens de lancer ton programme code, en changeant les numero de la liste a savoir :
mis 1 anna
mis 2 anna
mis 3 anna
mis 4 anna
et meme j'ai 0 anna toutes en anglais.

8O

pourtant la voix de virginie 16khz est bien dans la liste

je ne comprend pas , car je mets les mises a jour Windows régulièrement

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 17:43
par falsam
Montre la ligne de code que tu as modifiée.

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 17:47
par klystron
;Sélection du numéro de la voix : (0 prémiere voix)
SpeechObjectTokens\Item(4, @Token.ISpeechObjectToken)

je mets a jour Windows régulièrement pourtant .

je ne sais pas ce qu'il se passe ?, je crois leur avoir signaler ce probleme .mais ils s'en foute

il me semble avoir vu ce probleme sur un forum il y a longtemps ...

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 17:52
par falsam
klystron a écrit :;Sélection du numéro de la voix : (0 prémiere voix)
SpeechObjectTokens\Item(4, @Token.ISpeechObjectToken)
Le numéro de la voix commençant à 0, remplace 4 par 3. Mais tu as fais le test et ça ne fonctionne pas apparemment.

Si je reviens sur ce code qui exécute la panneau de configuation des voix.

Code : Tout sélectionner

RunProgram("C:\Windows\SysWOW64\Speech\SpeechUX\sapi.cpl")
la voix de Virgine fonctionne correctement quand tu la sélectionne ?

Re: peut-on lire a haute voix un texte en Français d'un fich

Publié : dim. 14/déc./2014 17:54
par klystron
oui sur le tableau la voix de virginie est tres claire, elle fonctionne bien sur le tableau .
il me semble qu'il y a une astuce , mais je ne l'a connais pas.
peut-être avec un forum a ce sujet là ?...
si non en s'en passera 8O