web-dev-qa-db-ja.com

Windows用のOS X `say`コマンド

sayコマンドは、おそらくOS Xターミナルの最も魅力的な機能です。テキストを入力として受け取り、コンピューターのスピーカーを通してそれを話します。組み込みまたはサードパーティのプログラムを介して、Windowsに同等のコマンドラインツールはありますか?

24
nhinkle

[〜#〜] ptts [〜#〜] は、テキストを音声に変換する非常にシンプルなMicrosoft Windowsコマンドラインプログラムです。 Microsoft Text to Speech EngineおよびMicrosoft Speech SDKを使用する場合。 Text to Speech EngineはWindowsと共にインストールされますXP音質がやや劣る1つです。Jampalインストールプログラムには2つのより良い音の声が含まれています(ウェブサイトから引用)

リダイレクトまたはテキストをパイプすることにより、プログラムにテキストを入力するだけで使用できます。

ptts < file.txt
echo Hello there|ptts
5
bubu

これを行うための簡単なバッチスクリプトを作成しました。ここにソースコードがあります

@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を作成し、システム音声で話します。実行の最後に、スクリプトは削除され、別の実行のためのスペースが確保されます。

3

この質問はスタックオーバーフローで行われました。 VBSスクリプトでの回答 が好きです。

また、 espeak はWindowsとLinuxで利用可能で、OS Xに移植されています。組み込みのWindows TTSエンジンを使用しているとは思いません。

彼らはSDKにこのライブラリを持っています。おそらく、個人的な努力でより高度なユーティリティを作成できます。

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

これはシステムにネイティブに組み込まれており、Powershellからアクセスできるため、おそらく最も便利な方法です。

名前空間から関数を呼び出す( 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')
1
AEGIS

古いツールを機能させることに飽きたので、wsayを作成しました。

sayのように機能し、さまざまな声を選択でき、簡単にwaveファイルに出力できます。

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

乾杯

1
scx