Perintah OS X `say` untuk Windows

22

The sayperintah mungkin fitur yang paling menarik OS X terminal - dibutuhkan teks sebagai masukan dan berbicara melalui speaker komputer. Apakah ada alat baris perintah yang setara pada Windows, baik bawaan atau melalui program pihak ketiga?

nhinkle
sumber
2
Yang membuat saya berpikir, mungkin saya harus menulis aplikasi pengubahan volume baris perintah, kalau-kalau situasinya akan pernah muncul.
nhinkle

Jawaban:

5

PTTS adalah program baris perintah Microsoft Windows yang sangat sederhana untuk mengonversi teks menjadi ucapan. Jika menggunakan Microsoft Text to Speech Engine dan Microsoft Speech SDK. Mesin Text to Speech diinstal dengan Windows XP dengan satu suara dengan kualitas yang agak buruk. Program instalasi Jampal mencakup dua suara yang terdengar lebih baik. (dikutip dari situs web)

Satu dapat menggunakannya dengan hanya memasukkan teks ke dalam program dengan pengalihan atau dengan memipipkan teks:

ptts < file.txt
echo Hello there|ptts
bubu
sumber
@ Bubu, sepertinya perangkat lunak ini hanya mampu berbicara dari file, kecuali saya salah paham dokumentasi. Apakah Anda tahu jika ada cara untuk menerima teks langsung dari baris perintah tanpa perlu membuat file perantara?
nhinkle
2
Nvm, menemukan jawabannya. Anda harus menyalurkannya ke program. Misalnya echo Hello|ptts.exe. Saya lebih suka cara agar teks menjadi argumen dari perintah, tetapi ini sudah cukup jika tidak ada cara untuk melakukan itu.
nhinkle
@nhinkle ya seperti yang dibaca dari stdin salah satu caranya adalah menyalurkannya
bubu
3

Saya telah membuat Batch Script sederhana untuk melakukan ini. Ini kode sumbernya

@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

Simpan skrip ini dalam file yang disebut "speak.bat" dan pindahkan ke direktori yang dirujuk oleh variabel PATH Anda.

Program ini menciptakan vbs sederhana dengan input Anda, lalu mengucapkannya dengan suara sistem. Di akhir eksekusi, skrip akan dihapus untuk memberikan ruang bagi eksekusi lainnya.

Alessandro Mascolo
sumber
Bisakah Anda mengedit posting Anda untuk menjelaskan cara kerjanya dan bagaimana menggunakannya? Juga, apa tujuan memindahkan file untuk solusi ini?
Cfinley
@Cfinley: Posting diedit
Alessandro Mascolo
2

Pertanyaan ini ditanyakan pada Stack Overflow. Saya suka jawabannya dengan skrip VBS .

Juga, espeaktersedia untuk Windows dan Linux dan telah porting ke OS X. Saya tidak percaya itu menggunakan mesin TTS Windows bawaan.

Dijeda sampai pemberitahuan lebih lanjut.
sumber
1

Mereka memiliki pustaka ini di SDK, di mana Anda mungkin bisa membuat utilitas yang lebih canggih dengan upaya pribadi.

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

Meskipun ini mungkin cara yang paling nyaman karena secara bawaan dibangun ke dalam sistem, dan dapat diakses melalui PowerShell.

Panggil fungsi dari namespace ( https://msdn.microsoft.com/en-us/library/gg145021(v=vs.110).aspx )

Add-Type -AssemblyName System.Speech

Instantiate the Object

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

Panggil fungsi dan masukkan kata-kata Anda sebagai argumen.

 $synth.Speak('hey man')
PERLINDUNGAN
sumber