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
    5 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 5 648
    Points : 14 574
    Points
    14 574
    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
    96
    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 : 96
    Points : 79
    Points
    79
    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 : 121
Taille : 261,4 Ko

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

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 5 648
    Points : 14 574
    Points
    14 574
    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
    96
    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 : 96
    Points : 79
    Points
    79
    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
    5 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 5 648
    Points : 14 574
    Points
    14 574
    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
    96
    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 : 96
    Points : 79
    Points
    79
    Par défaut
    Nom : VBS_1.jpg
Affichages : 110
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
    5 648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : décembre 2004
    Messages : 5 648
    Points : 14 574
    Points
    14 574
    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
    96
    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 : 96
    Points : 79
    Points
    79
    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 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : février 2006
    Messages : 1 276
    Points : 3 448
    Points
    3 448
    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
    96
    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 : 96
    Points : 79
    Points
    79
    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.

Discussions similaires

  1. Sapi.SpVoice avec cscript
    Par alixbasix dans le forum VBScript
    Réponses: 14
    Dernier message: 07/02/2008, 13h27
  2. Réponses: 4
    Dernier message: 01/01/2008, 12h28
  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, 14h39
  4. Réponses: 0
    Dernier message: 24/09/2007, 12h56
  5. Choisir un répertoire d'installation avec apt-get
    Par bisounux dans le forum Debian
    Réponses: 4
    Dernier message: 08/08/2007, 20h08

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