Команда OS X `say 'для Windows


23

sayКоманда, можливо , найбільш переконлива особливість OS X терміналу - він приймає текст у якості вхідних даних і каже через динаміку комп'ютера. Чи є еквівалентний інструмент командного рядка в Windows, вбудований або за допомогою сторонньої програми?



2
Що змушує мене замислитися, можливо, я мушу написати додаток, що змінює гучність командного рядка, якщо виникла ситуація.
nhinkle

Відповіді:


5

PTTS - це дуже проста програма командного рядка Microsoft Windows для перетворення тексту в мову. Якщо використовується Microsoft Text to Speech Engine та Microsoft Speech SDK. Text to Speech Engine встановлюється в Windows XP одним голосом дещо поганої якості. Програма встановлення Jampal включає два голосніші звуки. (цитується з веб-сайту)

Можна використовувати його, просто ввівши текст у програму шляхом перенаправлення або трубопроводу в тексті:

ptts < file.txt
echo Hello there|ptts

@bubu, схоже, це програмне забезпечення здатне говорити лише з файлу, якщо я не розумію документацію. Чи знаєте ви, чи є якийсь спосіб прийняти текст безпосередньо з командного рядка без необхідності створювати посередницький файл?
nhinkle

2
Нвм, зрозумів це. Ви повинні передавати його програмі. Напр echo Hello|ptts.exe. Я вважаю за краще, щоб текст був аргументом команди, але цього буде достатньо, якщо цього немає.
nhinkle

@nhinkle так, як читається зі stdin, один із способів - провести через нього
bubu

3

Я створив простий пакетний сценарій для цього. Ось вихідний код

@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

Збережіть цей скрипт у файлі під назвою "speak.bat" і перемістіть його до каталогу, на який посилається ваша змінна PATH.

Ця програма створює простий vbs з вашим входом, а потім промовляє його системним голосом. В кінці виконання сценарій буде видалений, щоб дати місце для іншого виконання.


Чи можете ви відредагувати свою публікацію, щоб пояснити, як це працює і як ним користуватися? Крім того, яку мету має переміщення файлу для цього рішення?
Cfinley

@Cfinley: Повідомлення відредаговано
Алессандро Масколо


1

У бібліотеці SDK є ця бібліотека, де ви, мабуть, могли докласти більш досконалу корисну програму, доклавши певних зусиль.

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

Хоча це, мабуть, найзручніший спосіб, оскільки він є вбудованим в систему, і це доступно через powerhell.

Викличте функцію з простору імен ( https://msdn.microsoft.com/en-us/library/gg145021(v=vs.110).aspx )

Add-Type -AssemblyName System.Speech

Ігноруйте об’єкт

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

Викличте функцію та введіть свої слова як аргумент.

 $synth.Speak('hey man')

0

Я втомився намагатися змусити застарілі інструменти працювати, тому я створив wsay.

Це працює як sayви, ви можете вибрати різні голоси, і ви можете легко вивести у файл хвилі.

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

Ура

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.