Commande OS X `say` pour Windows


23

La saycommande est peut-être la fonctionnalité la plus convaincante du terminal OS X - elle prend le texte en entrée et le prononce via les haut-parleurs de l'ordinateur. Existe-t-il un outil de ligne de commande équivalent sous Windows, intégré ou via un programme tiers?



2
Ce qui me fait penser, je devrais peut-être écrire une application de changement de volume en ligne de commande, au cas où la situation se présenterait.
nhinkle

Réponses:


5

PTTS est un programme en ligne de commande Microsoft Windows très simple pour convertir du texte en parole. Si utilise le moteur de synthèse vocale Microsoft et le SDK Microsoft Speech. Le moteur de synthèse vocale est installé avec Windows XP avec une seule voix de mauvaise qualité. Le programme d'installation de Jampal comprend deux voix de meilleure qualité. (cité sur le site Web)

On peut l'utiliser en entrant simplement le texte dans le programme par redirection ou en canalisant du texte:

ptts < file.txt
echo Hello there|ptts

@bubu, il semble que ce logiciel ne soit capable de parler qu'à partir d'un fichier, à moins que je ne comprenne mal la documentation. Savez-vous s'il existe un moyen d'accepter du texte directement à partir de la ligne de commande sans avoir besoin de créer un fichier intermédiaire?
nhinkle

2
Nvm, l'a compris. Vous devez le diriger vers le programme. Par exemple echo Hello|ptts.exe. Je préférerais une façon d'avoir le texte comme argument de la commande, mais cela suffira s'il n'y a aucun moyen de le faire.
nhinkle

@nhinkle yes car il lit depuis stdin l'un des moyens est de le traverser
bubu

3

J'ai créé un simple script batch pour ce faire. Voici le code source

@echo off
echo Dim Speak >> %HOMEPATH%\speak.vbs
echo Set Speak=CreateObject("sapi.spvoice") >> %HOMEPATH%\speak.vbs
echo Speak.Speak "%*">> %HOMEPATH%\speak.vbs
%HOMEPATH%\speak.vbs
del %HOMEPATH%\speak.vbs

Enregistrez ce script dans un fichier appelé "speak.bat" et déplacez-le dans un répertoire référencé par votre variable PATH.

Ce programme crée un vbs simple avec votre entrée, puis le parle avec la voix du système. À la fin de l'exécution, le script sera supprimé pour laisser de la place à une autre exécution.


Pouvez-vous modifier votre article pour expliquer comment cela fonctionne et comment l'utiliser? De plus, à quoi sert le déplacement du fichier pour cette solution?
Cfinley

@Cfinley: Post édité
Alessandro Mascolo


1

Ils ont cette bibliothèque dans le SDK, où vous pourriez probablement faire un utilitaire plus avancé avec un effort personnel.

https://www.microsoft.com/en-us/download/details.aspx?id=27224

Bien que ce soit probablement le moyen le plus pratique car il est nativement intégré au système et accessible via PowerShell.

Appelez la fonction à partir de l'espace de noms ( https://msdn.microsoft.com/en-us/library/gg145021(v=vs.110).aspx )

Add-Type -AssemblyName System.Speech

Instancier l'objet

 $synth = New-Object -TypeName
 System.Speech.Synthesis.SpeechSynthesizer

Appelez la fonction et entrez vos mots comme argument.

 $synth.Speak('hey man')

0

J'étais fatigué d'essayer de faire fonctionner des outils obsolètes, alors j'ai créé wsay.

Cela fonctionne comme say, vous pouvez sélectionner différentes voix et vous pouvez facilement sortir vers un fichier wave.

https://github.com/p-groarke/wsay/releases

À votre santé

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.