2019/03/27
Google翻訳のWebサイト仕様が変更されたので、このプログラムでは翻訳結果を受け取れなくなりました。そのため公開を中止します。
クリップボードの内容をGoogle翻訳してSeikaCenter経由でVOICEROID2/CeVIO/SAPI5に読み上げさせます。
akatrans20181030.zip 2018/10/30公開。クリップボードの英文をGoogle翻訳で翻訳してVOICEROID2/CeVIO/SAPIに喋らせる
2018/10/30
アーカイブには以下が含まれています。
ファイル | 説明 |
---|---|
akatrans.exe | プログラム本体です。 |
akatran.json | akatrans.exeが読み込む定義ファイルです。 |
SeikaCenterAPI.dll | SeikaCenterアクセス用DLLです。 |
作者は Windows 10 Pro 64bit版 + .NET Framework 4.6.1 の環境で動作確認しています。 Windows 8 以降であれば話者に SAPIの「Microsoft Haruka Desktop」が利用可能と聞いています。SAPI指定時に実行時エラーが出てしまう場合は以下のソフトウエアを導入する事で改善された旨の報告を受けています。
このプログラムは、編集メニューの「コピー(C)」やショートカットCTRL+C等でクリップボードにコピーされたテキストをGoogle翻訳で翻訳した結果をSeikaCenter経由で音声合成ソフトウエアに渡し再生します。
プログラム製作者は Windows10 Pro 64bit版上で、
での動作を確認しました。
akache-chan so cute!
https://translate.google.com/#en/ja/akache-chan so cute!
こちらのプロダクトをまずはこちらをご覧ください。
クリップボードを毎秒60回監視するという過酷な労働から琴葉茜ちゃんを解放するための挑戦をしてみました。
これは、echoseika版を手直ししてSeikaCenterを利用するように再構成したものです。
アーカイブに同梱された akatran.json を UTF-8(BOM無し)で編集可能なテキストエディタで開いてください。 akatran.jsonの“avatorConfigs”プロパティに使いたい話者のエントリを追加します。以下は話者を4人追加する例です。
{ "avatorConfigs": [ { "tkey": "英日", "cid": 1000, "alpha": 0.0, "intonation": 1.0, "pitch": 1.0, "speed": 0, "volume": 100 }, { "tkey": "英日", "cid": 2000, "alpha": 1.0, "intonation": 1.0, "pitch": 1.0, "speed":1.0, "volume": 100 }, { "tkey": "英日", "cid": 3000, "alpha": 50, "intonation": 50, "pitch": 50, "speed": 50, "volume": 100 }, { "tkey": "日英", "cid": 1005, "alpha": 0.0, "intonation": 1.3, "pitch": 1.0, "speed": 0, "volume": 100 } ], "urls": [ { "Key": "英日", "Value": "https://translate.google.com/#en/ja/{0}" }, { "Key": "日英", "Value": "https://translate.google.com/#ja/en/{0}" }, { "Key": "中日", "Value": "https://translate.google.com/#zh-CN/ja/{0}" }, { "Key": "日中", "Value": "https://translate.google.com/#ja/zh-CN/{0}" } ] }
tkey は翻訳方向を設定するプロパティです。“urls”プロパティで定義した翻訳のどれかになります。
cid はSeikaCenterで表示されている話者のcidです。
cid=1000 はMicrosoft Haruka Desktop、cid=2000 は琴葉茜、cid=3000 はさとうささら、cid=1005 はMicrosoft Zira Desktop、となります。
alpha, intonation, pitch, speed, volume, の各プロパティは音声効果パラメタです。
音声合成製品毎に範囲が異なりますので、オプションの説明をご確認ください。なおemotionパラメータは利用できません。
前提として、先に音声合成製品、SeikaCenter、が起動している必要があります。 その次にakatrans.exeを起動します。
この状態で例えばメモ帳で書いた英文をマウスで選択、ショートカットキー CTRL+Cでクリップボードにコピーします。するとウインドウにコピーしたテキストが表示されます。
再度ショートカットキー CTRL+Cで同じテキストをクリップボードにコピーすると、3秒ほどで英文が翻訳され読み上げが行われます。
話者を切り替えればその話者で翻訳結果を読み上げします。
Google翻訳サイトとの通信を行わず、クリップボード内容をそのまま読み上げします。このプログラムのコンセプトを否定してしまう機能です。
音声合成を抑止します。このプログラムのコンセプトを否定してしまう機能です。
チェックボックス「クリップボードを変換結果で置き換えする」をオンにしておくと、「変換テキスト」が翻訳されたタイミングでクリップボードの内容が翻訳結果に置き換わります。
ショートカットキー CTRL+Vやメモ帳等の「貼り付け」メニューで翻訳結果の貼り付けが可能です。
クリップボード監視を停止します。
このプログラムはGoogle本屋君の説明と同じように、IE(webBrowserコンポーネント)経由でクリップボードの内容をGoogle翻訳ページで翻訳し、その結果をSeikaCenter経由で指定の音声合成製品で読み上げさせます。
本家との違いは、
となります。
Windows Vista以降に実装されたAPI AddClipboardFormatListener() を利用しています。
このAPIでプログラムを登録すると、クリップボードに何らかの変化があった場合にOSが登録プログラムに対してウインドウメッセージ(WM_CLIPBOARDUPDATE)を送ってくれるので、ポーリングでクリップボードの監視をする必要がなくなります。
Web APIを使っているわけではなく、単純にGoogle翻訳のWebページへアクセスしています。以下のURLでテキストを渡しているだけです。
“en”を“de”に置き換えれば独日翻訳、“fr”に置き換えれば仏日翻訳です。
具体的なURLは akatran.json のurlsプロパティの定義を参照してください。
デフォルトの英日、中日、独日、仏日、日英、の5つが登録されています。この構造が理解できるなら、新たな翻訳を追加したり不要な翻訳を削除することができます。
最初に取得できるHTMLには翻訳結果は入っておらず、JavaScriptの実行により後から非同期に翻訳結果が返ってきます。
JavaScript実行とその結果生成されるDOMを操作する必要があるため、IEコンポーネントを利用しています。
ダサいロジックで翻訳終了を検知しているため、3秒ほどかかってしまいます。もう少しスマートな方法もありますが手間に見合わないのでこのままにしています。