目次
VOICEROID+EX/CeVIOに翻訳結果を読み上げさせる
2019/03/27
Google翻訳のWebサイト仕様が変更されたので、このプログラムでは翻訳結果を受け取れなくなりました。そのため公開を中止します。
2018/02/12
- 新DLLの公開に伴い再構築を行いました。VOICEROID+EX,CeVIO,SAPIで翻訳結果を再生する事が可能です。
- 定義ファイルをXMLからJSONに変更しました。
2017/11/22
- 「Google本屋君」に触発されて作成。
- 8-bridge.comで公開されている「ClipBoard Translator」をみてCTRL+C 2回連続で起動を実装する事に決めた。良いアイデアだと思う。
ダウンロード
akatran20180212.zip クリップボードの英文をGoogle翻訳で翻訳してVOICEROIDに喋らせる - 2018-02-12 公開。
アーカイブには以下が含まれています。
ファイル | 説明 |
---|---|
akatrans.exe | プログラム本体です。 |
akatran.json | akatrans.exeが読み込む定義ファイルです。 |
echoSeikAPI.dll | akatrans.exeで使用する音声制御DLLです。 |
作者は Windows 10 Pro 64bit版 + .NET Framework 4.6.1 の環境で動作確認しています。
Windows 8 以降であれば話者に SAPIの「Microsoft Haruka Desktop」が利用可能と聞いています。SAPI指定時に実行時エラーが出てしまう場合は以下のソフトウエアを導入する事で改善された旨の報告を受けています。
- Microsoft Speech Platform - Runtime Languages (Version 11) ※読み上げの言語を増やしたい時
概要
このプログラムは、編集メニューの「コピー(C)」やショートカットCTRL+C等でクリップボードにコピーされたテキストをGoogle翻訳で翻訳して音声合成ソフトウエアで再生します。
プログラム製作者は Windows10 Pro 64bit版上で、
- VOICEROID+、VOICEROID+EX
- CeVIO(CeVIO CS 6.0.28.3)
- SAPI(ASPI5)
での動作を確認しました。
注意
- VOICEROIDやCeVIOはこのプログラム実行前に起動しておく必要があります。
- このプログラムではGoogle翻訳のWebサイトへアクセスしています。あまりに過剰なアクセスがあった場合、Googleから接続を遮断されてしまうかもしれません。常識の範囲内での利用を推奨します。
- 英文でなくてもGoogle翻訳のWebサイトにクリップボードの内容が転送されるので、機密情報を扱うような作業時には利用しない事を推奨します。
- また、エラーに関しての考慮が決定的に欠けています。ご注意ください。
始まりは過酷な労働からの解放
まずはこちらをご覧ください。
クリップボードを毎秒60回監視するという過酷な労働から琴葉茜ちゃんを解放するための挑戦をしてみました。
プログラムの使い方と説明
設定
アーカイブに同梱された akatran.json を UTF-8(BOM無し)で編集可能なテキストエディタで開いてください。
SAPI話者を使う場合
akatran.jsonのRateプロパティ(話速)とVolumeプロパティ(音量)を変更することができます。全てのSAPI話者で共用されます。
msttsRateタグおよびmsttsVolumeタグが各々対応します。指定範囲は Volume:0 ~ 100、Rate:-10 ~ 10、 です。
"msttsRate": 1, "msttsVolume": 100
VOICEROID話者/CeVIO話者を使う場合
akatran.jsonの“avatorConfigs”プロパティに使いたい話者のエントリを追加します。同梱の akatran.json には東北ずん子EX、京町セイカEX、さとうささら、が登録されています。
alpha, intonation, pitch, speed, volume, の各プロパティは音声効果パラメタです。必要なら適宜修正してください。alphaプロパティは今のところCeVIOで有効です。intonationプロパティに0.0を指定すると、完全棒読みになります。
"avatorConfigs": [ { "avator": "SEIKA", "alpha": 0.0, "intonation": 1.0, "pitch": 1.0, "speed": 1.2, "volume": 1.0 }, { "avator": "ZUNKO_EX", "alpha": 0.0, "intonation": 1.3, "pitch": 1.0, "speed": 1.1, "volume": 1.0 }, { "avator": "SASARA", "alpha": 100, "intonation": 50, "pitch": 50, "speed": 50, "volume": 100 } ],
指定 | 話者 |
---|---|
SEIKA | VOICEROID+ 京町セイカ EX |
YOSHIDA_EX | VOICEROID+ 鷹の爪 吉田くん EX |
AI_EX | VOICEROID+ 月読アイ EX |
SHOUTA_EX | VOICEROID+ 月読ショウタ EX |
MINASE | VOICEROID+ 水奈瀬コウ EX |
KIRITAN | VOICEROID+ 東北きりたん EX |
ZUNKO | VOICEROID+ 東北ずん子 |
ZUNKO_EX | VOICEROID+ 東北ずん子 EX |
TAMMY_EX | VOICEROID+ 民安ともえ EX |
YUKARI_EX | VOICEROID+ 結月ゆかり EX |
AKANE | VOICEROID+ 琴葉茜 |
AOI | VOICEROID+ 琴葉葵 |
TAMMY | VOICEROID+ 民安ともえ |
YUKARI | VOICEROID+ 結月ゆかり |
YOSHIDA | VOICEROID+ 鷹の爪 吉田くん |
UNA | 音街ウナTalk Ex |
SASARA | CeVIO さとうささら |
TSUZUMI | CeVIO すずきつづみ |
TAKAHASHI | CeVIO タカハシ |
IA | CeVIO IA |
ONE | CeVIO ONE |
起動
VOICEROID、CeVIOを先に起動し、次にakatrans.exeを起動します。
基本機能
この状態で例えばメモ帳で書いた英文をマウスで選択、ショートカットキー CTRL+Cでクリップボードにコピーします。するとウインドウにコピーしたテキストが表示されます。
再度ショートカットキー CTRL+Cで同じテキストをクリップボードにコピーすると、3秒ほどで英文が翻訳され読み上げが行われます。
話者を切り替えればその話者で翻訳結果を読み上げします。
その他機能
翻訳対象言語の切り替え
「翻訳種類」で翻訳対象言語の切り替えができます。
デフォルトの akatran.json を使った場合、英日、中日、独日、仏日、日英、の5つが利用可能です。英語の話せない話者で英語を読み上げることはできないので注意してください。
翻訳しない
Google翻訳サイトとの通信を行わず、クリップボード内容をそのまま読み上げします。このプログラムのコンセプトを否定してしまう機能です。
音声を出力しない
音声合成を抑止します。このプログラムのコンセプトを否定してしまう機能です。
クリップボードを変換結果で置き換えする
チェックボックス「クリップボードを変換結果で置き換えする」をオンにしておくと、「変換テキスト」が翻訳されたタイミングでクリップボードの内容が翻訳結果に置き換わります。
ショートカットキー CTRL+Vやメモ帳等の「貼り付け」メニューで翻訳結果の貼り付けが可能です。
動作一時停止
クリップボード監視を停止します。
技術的な説明
このプログラムはGoogle本屋君の説明と同じように、IE(webBrowserコンポーネント)経由でクリップボードの内容をGoogle翻訳ページで翻訳し、その結果をVOICEROIDに読み上げさせる手法を使っています。
本家との差異
本家との違いは、
- 動作トリガーはショートカットキーCTRL+Cを連続2回押下。もしくはコピーを2回連続実行。
- VOICEROIDを変更できる。
- 翻訳結果を残さない(記録しない)。
- 英日以外の翻訳も可能。
- 毎秒60回の監視はしないのでPCに多少優しい。
となります。
Win API AddClipboardFormatListener()
Windows Vista以降に実装されたAPI AddClipboardFormatListener() を利用しています。
このAPIでプログラムを登録すると、クリップボードに何らかの変化があった場合にOSが登録プログラムに対してウインドウメッセージ(WM_CLIPBOARDUPDATE)を送ってくれるので、ポーリングでクリップボードの監視をする必要がなくなります。
Google翻訳呼び出しURL
Web APIを使っているわけではなく、単純にGoogle翻訳のWebページへアクセスしています。以下のURLでテキストを渡しているだけです。
“en”を“de”に置き換えれば独日翻訳、“fr”に置き換えれば仏日翻訳です。
具体的なURLは akatran.json のurlsプロパティの定義を参照してください。
デフォルトの英日、中日、独日、仏日、日英、の5つが登録されています。この構造が理解できるなら、新たな翻訳を追加したり不要な翻訳を削除することができます。
Google翻訳結果取り出し
最初に取得できるHTMLには翻訳結果は入っておらず、JavaScriptの実行により後から非同期に翻訳結果が返ってきます。
JavaScript実行とその結果生成されるDOMを操作する必要があるため、IEコンポーネントを利用しています。
ダサいロジックで翻訳終了を検知しているため、3秒ほどかかってしまいます。もう少しスマートな方法もありますが手間に見合わないのでこのままにしています。