Notepad++とNppExec(※メニュー>プラグイン>PluginManager から簡単にインストールできます。)とNirCmd(※フリーのコマンドラインツールです)の組み合わせで、Windows10 では何も工夫しなくても日本語のテキストも読み上げてくれましたが、XP や Win7 ではデフォルトでは英語しかしゃべってくれなかったので、日本語を読み上げさせるためにしたことを書いておきます。(※一応、Notepad++ のプラグインにも speech というのが上がっていたのですが、自由度が低いので使いませんでした。)
先に落ちを書いておきますと、いろんな技法に手を出して回り道をして大変だったのにいざ出来てみるとしゃべって欲しいことなんて別にないわけで・・・・w
今のところPHP経由でしゃべるようにして制作中のサイトの読み込み時間を読み上げさせてページの重さを計ったり、Notepad++のNppExecでやらせた処理が終わったら声で報告するというしょーもない使い道しか思いついていません。
Microsoft Speechで文章を読み上げさせる手順
- Microsoft Speech Platform – Runtime (Version 11) icrosoftSpeechPlatformSDK.msi 32bit64bit両方をダウンロードしてインストール
- Microsoft Speech Platform – Runtibitbit,me Languages (Version 11) MSSpeech_TTS_ja-JP_Haruka.msi と MSSpeech_SR_ja-JP_TELE.msi をDLしてインストール
- speak.vbs(ページ内リンク参照) をコピペしてNotepad++のルートとかパスの通った場所に保存
- Notepad++のプラグインNppExec のF6を押してウインドウを開き、
cmd /c speak.vbs “日本語” “hello world” “こんにちは”
と書き込み準備完了。OKボタンを押すと日本語で読み上げてくれる。
少し応用してNotepad++のプラグインNppExecの変数$(CURRENT_WORD)で選択文字を渡してしゃべらせる場合は、
cmd /c speak.vbs $(CURRENT_WORD)
とする。
引数渡せるならなんでもいいので、始まりはNotepad++だったけれどもはや関係ない気がする。
注意点はバージョンを揃えるだけなので下記は読み飛ばしてOK.
Microsoft Speech Platform – Runtime (Version 11) でやること
Microsoft Speech Platform – Runtime Languages (Version 11) でやること
あとはDLしたものをクリックしててきとーにインストールなので省略。古いバージョンが既にあると怒られたら古いのをアンインストールして今回DLした新しいのを入れてバージョンを揃えればOKです。
Windows XP の Notepad++、NppExec&NirCmdの構成で「nircmd.exe speak text “abcあいうえお”」とやってみると、英語の部分しかしゃべらない。
うーん。UTF-8にしてもダメだった。Vista も Win7 でもダメだった。まったく準備なしでしゃべったWin10とこんなに違うとは・・・
何時間も格闘した末、古いWinではSAPIではなくSpeechじゃないと動かないのが原因だったので、NirCmd 経由で呼び出すのではなくバッチを書いたら動きました。
なまじっか Win10 で動いたものだから xml のパラメータで”jp-JP”や”411″と国を指定とか試していて酷い遠回りをしてしまいました。
観念して外部のVBSファイルを作ったのがこちら
|
|
出来上がった speak.vbs
にテキストファイルをドラッグ&ドロップするだけで読み上げてくれます。
Notepad++から読ませる場合はテキストを選択反転した状態で次の二行をNppExecで実行します。
SCI_SENDMSG SCI_COPY
cmd /c speak.vbs
PHPでしゃべらせるのはこの手順。
TTSのインストールまでは同じ。
X:\xampp(パスは勿論読み替えて~)\php\php.ini に下記を追加し、PHP から Windows の COM オブジェクトを使えるようにする設定を済ませます。
[PHP_COM_DOTNET]
extension=php_com_dotnet.dll
一応、PHP_COM_DOTNET で検索して、見つからなかったら場所は先頭でもかまわないので二行まるごとコピペでOK。
iniで設定して準備が済んだら、下記の内容でspeak.php を作って
X:\xampp\htdocs\scripts\speak.php
など適当な場所に設置して NppExecやコマンドラインから文字を標準入力で渡しながら呼び出します。
speak.php を作る |
|
Notepad++のプラグイン、NppExec から呼び出して反転している文字を読み上げる例です。 NppExec の Executeのテキストボックスに記述します。 パスは環境に合わせて書き換えてください。 |
// enable $(OUTPUT) variable NPE_CONSOLE v+ o2 i2 IF "$(CURRENT_WORD)"=="" GOTO CAUTION echo 選択箇所をMSのTTSで読み上げます // TTSで読みあげ X:\xampp\php\php.exe "X:\xampp\htdocs\scripts\speak.php" "$(CURRENT_WORD)" GOTO EXIT :CAUTION X:\xampp\php\php.exe "X:\xampp\htdocs\scripts\speak.php" "選択されていません" :EXIT NPE_CONSOLE v- o2 i2 |
時間があればCOM および .Net (Windows)
詳しいインストール事情については(COMの)インストール手順
SpVoice についてはヘルプを検索して XML TTS Tutorial あたりを読めばパラメータがわかる。
Npp のコアである scintilla については http://www.scintilla.org/ScintillaDoc.html を参考に Exec でいじれる。