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

Vos Contributions VBScript Discussion :

Choisir la voix du narrateur avec SAPI.SpVoice


Sujet :

Vos Contributions VBScript

  1. #1
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut Choisir la voix du narrateur avec SAPI.SpVoice
    Salut

    Suite à cette discussion, voici 2 codes pour faire le choix du narrateur, un en VBScript direct et l'autre en VBScript dans un HTA/html.
    Code VBScript : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    	Option Explicit
     
    	Dim Voix, ChoixVoix(), NomNarrateur(), Msg
    	Set Voix = CreateObject("SAPI.SpVoice")
    		'------------------------------------------------------------------------------------------------------------------
    		Sub RempliVoix()
                            Dim T, arrVoices
    			T = 1
    			MsG = ""
    			For Each arrVoices In Voix.GetVoices
            			ReDim Preserve ChoixVoix(T)
            			Set ChoixVoix(T) = arrVoices
     				ReDim Preserve NomNarrateur(T)
    				NomNarrateur(T) = ExtratNom(arrVoices.GetDescription())
                                   If T = 1 Then
                                            MsG = T & "     " &  NomNarrateur(T)
                                            ELse
                                            MsG = MsG & vbcrlf  & T & "     " &  NomNarrateur(T)
                                    End If
            			T=T+1
    			Next
                    End Sub
    		'------------------------------------------------------------------------------------------------------------------
    		Function ExtratNom(InfosVoix)
    			Dim RegularExpressioN, ResulT, Match
    			Dim MeStr
    			MeStr = Cstr(InfosVoix)
    			Set RegularExpressioN = New RegExp
    			RegularExpressioN.Pattern = " ([A-Za-z]*)"
    			RegularExpressioN.Global = False
    			Set ResulT = RegularExpressioN.Execute(MeStr)
    			Set Match = ResulT(0)
    			ExtratNom = Match.Value
    		End Function
    		'------------------------------------------------------------------------------------------------------------------
     
     
            RempliVoix()' appel de la Sub pour récupérer les voix installées sur l'ordinateur
     
            Voix.Speak "A que coucou,, une fois,, avant le choix. La voix en cours est la voix de,," & NomNarrateur(1)
     
            Dim Rep
            Rep = Trim(InputBox(Msg,"N° de la langue de votre choix? "))
     
            If Len(Rep) <> 0 And IsNumeric(Rep) Then
                    If Rep <> 1 Then ' la voie N°1 est toujours celle en cours
                            Voix.Voice.Category.Default = ChoixVoix(Rep).Id
                            Voix.Speak "A que coucou, Vous avez choisi la voix de,, " & NomNarrateur(Rep)
                            Else
                            Voix.Speak "A que coucou, Vous n'avez pas choisi de modifié la voix"
                    End IF
            End If       		
     
            Set Voix = NotHing ' Nettoyage
    Code html : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    <HTML>
    	<HEAD lang="fr">
    		<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
    		<title>Choisir la voix du narrateur</title>
    		<HTA:APPLICATION
    			MAXIMIZEBUTTON="no"
    			SCROLL="no"
    			BorderStyle="thin"
    		>
    	</HEAD>
    	<SCRIPT language="VBScript" type="text/vbscript">
            '------------------------------------------------------------------------------------------------------------------
            Option Explicit
            Dim ChemSleep, T
            Dim Voix, ChoixVoix(), Nomnarrateur()
            Set Voix = CreateObject("SAPI.SpVoice")
            '------------------------------------------------------------------------------------------------------------------
            Sub Window_Onload()
                    ResizeTo 500,380 'redimensionne la page HTA (largeur,Hauteur)
                    RempliVoix()
            End Sub
            '------------------------------------------------------------------------------------------------------------------
            Sub Window_OnUnload()
                    Set Voix = NotHing
            End Sub
            '------------------------------------------------------------------------------------------------------------------
            </SCRIPT>
     
     
    	<body>
    		Votre choix du narrateur: <select id="ListVoix" onChange="ListVoix_Click"> </SELECT><br />
    		Entrez un texte à lire<br /><textarea id="TxtData"  Rows="12" Cols="54">
    Au clair de la Lune
    Mon ami Pierrot
    Prête-moi ta plume
    Pour écrire un mot
    Ma chandelle est morte
    Je n'ai plus de feu
    Ouvre-moi ta porte
    Pour l'amour de Dieu
    Au clair de la Lune
    Pierrot répondit
    Je n'ai pas de plume
    Je suis dans mon lit
    Va chez la voisine
    Je crois qu'elle y est
    Car dans sa cuisine
    On bat le briquet
    Au clair de la Lune
    On n'y voit qu'un peu
    On cherche la plume
    On cherche le feu
    En cherchant d'la sorte
    Je n'sais c'qu'on trouvera
    Mais je sais qu'la porte
    Sur eux se ferma</textarea><br />
    		<br />
    		<button id="BtGo" onclick="LireTexte"> Lire le texte </button><br />
     
    		<SCRIPT language="VBScript" type="text/vbscript">
                    '---------------------------------------------------------------------------------------------------------------
                    Sub RempliVoix()
                            Dim oOption
                            'recuperation des voix disponibles sur l'ordinateur
                            Dim arrVoices
                            T = -1
                            For Each arrVoices In Voix.GetVoices
                                    T = T + 1
                                    ReDim Preserve ChoixVoix(T)
                                    Set ChoixVoix(T) = arrVoices
                                    ReDim Preserve Nomnarrateur(T)
                                    Nomnarrateur(T) = ExtratNom(arrVoices.GetDescription())
                    Set oOption = window.Document.createElement("OPTION")
                    oOption.Text = Nomnarrateur(T)'arrVoices.GetDescription()
                    oOption.Value = arrVoices.GetDescription()
                    ListVoix.Add (oOption)
                            Next
                            If T > 0 Then ListVoix.style.visibility = "visible" Else ListVoix.style.visibility = "hidden"
                    End Sub
                    '------------------------------------------------------------------------------------------------------------------
                    Function ExtratNom(InfosVoix)
                            Dim RegularExpressioN, ResulT, Match
                            Dim MeStr
                            MeStr = Cstr(InfosVoix)
                            Set RegularExpressioN = New RegExp 
                            RegularExpressioN.Pattern = " ([A-Za-z]*)"
                            RegularExpressioN.Global = False
                            Set ResulT = RegularExpressioN.Execute(MeStr)
                            Set Match = ResulT(0)
                            ExtratNom = Match.Value
                    End Function
                    '------------------------------------------------------------------------------------------------------------------
                    Sub ListVoix_Click()
                            Dim Idx
                            For T = 0 to ListVoix.length - 1
                                    If ListVoix(T).Selected then Idx = T: Exit For
                            Next
                            Voix.Voice.Category.Default = ChoixVoix(Idx).Id
                    End Sub
                    '------------------------------------------------------------------------------------------------------------------
                    Sub LireTexte()
                            Voix.Speak Trim(TxtData.value)
                    End Sub
                    </SCRIPT>
    	</body> 
    </HTML>
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  2. #2
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    Bonjour ProgElect !

    un grand merci à vous. et donc je vous fais un petit retour
    en vbs toujour pareil rien y fait

    en revanche en HTA sa fonctionne impeccablement bien.

    Nom : HTA.jpg
Affichages : 719
Taille : 261,4 Ko

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Salut

    Ton code VBScript tu le lances depuis un éditeur ou directement depuis le fichier .VBS ?

    Que se soit l'un ou l'autre, tu as peut être un problème de droit d’exécution sur les .VBS, si possible logue toi en session administrateur et vois si il y a une différence d'exécution.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    pour le vbs je clique directement dessus

    j'ai tout essayer rien a faire

  5. #5
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Re

    Une dernière suggestion, trouver un éditeur comme notepad++.exe (gratuit) tu lances l'éditeur en tant qu'administrateur, tu ouvres/charges le fichier .VBS, théoriquement le fichier .VBS lancé par l'éditeur va hérité du statut administrateur et donc avoir tout les droit nécessaire pour une exécution complétè sans restriction.
    Sinon une masse de 2.5 Kg dans le garage, si cela peut être utile ....
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    Nom : VBS_1.jpg
Affichages : 674
Taille : 230,6 Ko

    :=)

    Voici ce que sa donne en VBS
    Images attachées Images attachées  

  7. #7
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    c'est à devenir
    J'entrevoie une solution, un HTA qui ne serai jamais visible, si cela peut te dépanner, car pour ton VBScript, je ne trouve pas de parade.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    Bonjour ProgElect oui effectivement le levé et le coucher du soleil en VBS la voix est en anglais et en ( HTA ) sa serai avec Plaisir CDT

  9. #9
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    bonjour,

    @angelus1753
    si tu tournes sous w7 x64, il est vraisemblable que tu lances par défaut
    le moteur de vbscript dans sa version 64bits or la voix Virginie de Scansoft n'existe qu'en mode x86 (32bits)
    pour tester ce point il suffit de lancer en ligne de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    c:\windows\syswow64\wscript.exe <lenomduscriptdeprogelect.vbs>
    si l'appli hta fonctionne, c'est sans doute parce que l'extension .hta est associée à la version x86 de mshta.exe

    à partir de w8, la question ne se pose pas car windows est alors livré avec la voix Hortense qui est dispo aussi bien en x64 qu'en x86
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2020
    Messages : 114
    Points : 92
    Points
    92
    Par défaut
    Bonjour omen999,

    j'ai tout essayé sur windows 7 64 rien y fait,

    une erreur de l'os d'après ce que j'ai peu lire un peu partout.

    mais tu as raison, sur un windows 7 32 bits sa fonctionne c'est effectivement vrai.

    et en ( HTA ) je ne sais pour quel raison tout fonctionne très bien, et ceux malgré que je sois en windows 7 64 bits.

    en revanche le script de ( ProgElect ) sur le levé du soleil et son couché. Fonctionne très bien sur windwos 10 64 bits en FR, avec la voix de hortense.

    le script lui est parfait c'est le windwos 7 64 qui l'ai pas.

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Novembre 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2017
    Messages : 6
    Points : 7
    Points
    7
    Par défaut Comment faire pour que mon app sapi lise en arabe ?
    Bonjour à tous,

    J'ai fait une app avec sapi vbs qui est en français. Je veux savoir comment faire pour qu'il lise en arabe.


    Merci

  12. #12
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Salut

    Pour lire avec une voix quelconque, il faut déjà l’installer.
    Puis, dans l'application il faut se connecter à cette voix, se qui devrait donner un code du genre ...
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    Option Explicit
            Dim Voix
           	Set Voix = CreateObject("SAPI.SpVoice")
     
            Function ExtratNom(InfosVoix)
                    Dim RegularExpressioN, ResulT, Match
                    Dim MeStr
                    MeStr = Cstr(InfosVoix)
                    Set RegularExpressioN = New RegExp
                    RegularExpressioN.Pattern = " ([A-Za-z]*)"
                    RegularExpressioN.Global = False
                    Set ResulT = RegularExpressioN.Execute(MeStr)
                    Set Match = ResulT(0)
                    ExtratNom = Trim(Match.Value)
            End Function
     
            Sub ConnectVoix(NomNarrateur)
                    Dim T, arrVoices
                    T = 1
                    For Each arrVoices In Voix.GetVoices
                            If ExtratNom(arrVoices.GetDescription()) = NomNarrateur Then
                                    Voix.Voice.Category.Default = arrVoices.Id
                                    Exit FOr
                            End If
                            T=T+1
                     Next
               End Sub	
     
            ConnectVoix("Amed")' choix du nom de la voix, arabe dans ton cas
            '**************** pour le debug, a supprimer quand Ok ********************
    		Voix.Speak "A que coucou, Vous avez choisi la voix de,, ???"
     
    		'**************** A mettre en toute fin de programme au moment de quitter l'application *********************
            Voix.Voice.Category.Default = 1
             '**************** pour le debug, a supprimer quand Ok ********************
           Voix.Speak "On est revenu à la voix avant changement"
            Set Voix = NotHing ' Nettoyage
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

Discussions similaires

  1. Sapi.SpVoice avec cscript
    Par alixbasix dans le forum VBScript
    Réponses: 14
    Dernier message: 07/02/2008, 12h27
  2. Réponses: 4
    Dernier message: 01/01/2008, 11h28
  3. voix sur ip avec linux mandrake version 9.2
    Par afronegro dans le forum Réseau
    Réponses: 1
    Dernier message: 01/11/2007, 13h39
  4. Réponses: 0
    Dernier message: 24/09/2007, 11h56
  5. Choisir un répertoire d'installation avec apt-get
    Par bisounux dans le forum Debian
    Réponses: 4
    Dernier message: 08/08/2007, 19h08

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