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

VBScript Discussion :

vbScript (et JavaScript) obsolete ?


Sujet :

VBScript

  1. #1
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut vbScript (et JavaScript) obsolete ?
    Cela fait +20 ans que les fichiers .vbs (et .js) sont directement executables sous windows, et ça fonctionne toujours très bien !
    C'est simple et rapide d'écrire des petits utilitaires en accédant directement à plein d'objets COM souvent de grande utilité, c'est aussi très lisible (la technologie COM a +25 ans, et je la trouve toujours aussi géniale).
    Un simple éditeur genre notepad et hop, c'est fait

    Je viens par exemple d'écrire un petit utilitaire qui me convertit du texte en fichier audio (.wav) avec SAPI.SpFileStream et SAPI.SpVoice.

    Mais voilà, SAPI a l'air d'être figé depuis Windows 7 et ne semble pas être utilisée par les fonctionnalités de dictée et de narration intégrée à Windows 10. Il semble y avoir une autre technologie.
    En bref, comment aurais-je pu faire mon script en utilisant nativement la techno de Windows 10 ?

  2. #2
    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 186
    Points
    17 186
    Par défaut
    Salut
    Citation Envoyé par camboui Voir le message
    Cela fait +20 ans que ...
    Mais voilà, SAPI a l'air d'être figé depuis Windows 7 ...
    ...faire mon script en utilisant nativement la techno de Windows 10 ?
    Je viens de vérifier un petit programme, en VB6 se servant de l'API Sapi, il fonctionne très bien sous windows 10 64bits.
    Le programme permet de choisir le narrateur, lit du text écrit dans un TextBox ou depuis un fichier .txt, on peut régler le volume et la vitesse de diction.

    Si tu veux, je peux mettre le code, à toi de le transcrire en VbScript, je pourrais éventuellement t'aider dans cette tâche.
    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 ← ← 👈

  3. #3
    Membre éprouvé
    Inscrit en
    Avril 2005
    Messages
    1 110
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 1 110
    Points : 937
    Points
    937
    Par défaut
    Merci !
    Mais le script est fait, ce n'est pas là le problème (voir ci-dessous).
    Je fais des script et des batchs depuis +25 ans

    Mais on me prend pour un ringard, alors je me demandais s'il n'y avais pas "mieux", plus moderne et qui permet d'accéder à "tout" ce que l'OS propose (sans l'usine à gaz .net).

    Ici, en l'occurrence, bien que SAPI fonctionne toujours bien, ce n'est pas utilisé nativement par Windows 10.
    D'ailleurs j'ai eu un petit soucis pour utiliser les voix installées sur mon système avec SAPI qui ne les "voyait" pas toutes. On en voit plus via les "paramètres" que via le "panneau de control". J'ai ainsi dû chipoter dans la base de registre et copier quelques voix de [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech_OneCore] vers [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech].

    En gros, la question serait:
    Quelles sont les alternatives aux .vbs et .js tout en étant aussi simple mais plus complet.
    Ou alors, pour mon exemple, comment accéder à l'API de narration de Windows 10 (manifestement c'est une autre API que SAPI)

    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
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    ' text to speech script
    '    that outputs audio in a wav file
    ' usage : script.vbs input.txt [output.wav]
     
    dim scrFName, clArgs
    scrFName = Wscript.ScriptFullName
    set clArgs = Wscript.Arguments
     
    Set fso = CreateObject("Scripting.FileSystemObject")
     
    dim intxt, outwav
    if clArgs.Count > 1 then
      intxt = clArgs(0)
      outwav = clArgs(1)
    elseif  clArgs.Count > 0 then
      intxt = clArgs(0)
      outwav = ""
    else
      Wscript.Echo "usage : " _
       & fso.GetFileName(scrFName) _
       & " input.txt [output.wav]" & vbCrLf
      Wscript.quit
    end if
     
    if fso.FileExists(intxt) then
      if fso.GetParentFolderName(intxt) = "" then
        intxt = fso.GetAbsolutePathName(intxt)
      end if
      if outwav = "" then
        outwav = fso.GetParentFolderName(intxt) & "\" _
        & fso.GetBaseName(intxt) & ".wav"
      end if
    else
      Wscript.Echo "Input file not found: " & intxt
      Wscript.quit
    end if
     
    dim intxtcontent
    set f = fso.OpenTextFile(intxt, 1)
    intxtcontent = f.ReadAll
    f.close
    set f = nothing
     
    Const SAFT48kHz16BitStereo = 39
    Const SSFMCreateForWrite = 3
     
    set sapiFStream = CreateObject("SAPI.SpFileStream")
    sapiFStream.Format.Type = SAFT48kHz16BitStereo
    call sapiFStream.Open(outwav, SSFMCreateForWrite)
    set sapiVoice = CreateObject("SAPI.SpVoice")
    Set sapiVoice.AudioOutputStream = sapiFStream
    'sapiVoice.Rate = -2 ' from -10 to 10
    sapiVoice.Speak(intxtcontent)
    sapiFStream.Close
    set sapiVoice = nothing
    set sapiFStream = nothing
     
    set fso = nothing

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/12/2012, 16h47
  2. Réponses: 3
    Dernier message: 16/12/2009, 10h40
  3. Instr() de VBScript en Javascript ?
    Par jeyce dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/04/2006, 16h47
  4. Passer un tableau de VbScript vers Javascript
    Par Poussy-Puce dans le forum ASP
    Réponses: 1
    Dernier message: 03/03/2006, 12h07

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