努力したWiki

推敲の足りないメモ書き多数

ユーザ用ツール

サイト用ツール


documents:voiceroid:voiceroid-007

VOICEROID+EX/CeVIOに翻訳結果を読み上げさせる

2018/02/12

  • 新DLLの公開に伴い再構築を行いました。VOICEROID+EX,CeVIO,SAPIで翻訳結果を再生する事が可能です。
  • 定義ファイルをXMLからJSONに変更しました。

2017/11/22

  • 「Google本屋君」に触発されて作成。
  • 8-bridge.comで公開されている「ClipBoard Translator」をみてCTRL+C 2回連続で起動を実装する事に決めた。良いアイデアだと思う。

概要

このプログラムは、編集メニューの「コピー(C)」やショートカットCTRL+C等でクリップボードにコピーされたテキストをGoogle翻訳で翻訳して音声合成ソフトウエアで再生します。
プログラム製作者は Windows10 Pro 64bit版上で、

  • VOICEROID+、VOICEROID+EX
  • CeVIO(CeVIO CS 6.0.28.3)
  • SAPI(ASPI5)

での動作を確認しました。

使用例

ダウンロード

アーカイブには以下が含まれています。

ファイル 説明
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指定時に実行時エラーが出てしまう場合は以下のソフトウエアを導入する事で改善された旨の報告を受けています。

注意

  • 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でクリップボードにコピーします。するとウインドウにコピーしたテキストが表示されます。

1回目のコピー後

再度ショートカットキー CTRL+Cで同じテキストをクリップボードにコピーすると、3秒ほどで英文が翻訳され読み上げが行われます。

2回目のコピー後

話者を切り替えればその話者で翻訳結果を読み上げします。

その他機能

翻訳対象言語の切り替え

「翻訳種類」で翻訳対象言語の切り替えができます。
デフォルトの 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秒ほどかかってしまいます。もう少しスマートな方法もありますが手間に見合わないのでこのままにしています。

コメント

コメントを入力. Wiki文法が有効です:
画像の文字が読めなければ、文字を読んだ.wavファイルをダウンロードして下さい。
 
documents/voiceroid/voiceroid-007.txt · 最終更新: 2018/04/25 06:56 by k896951

ページ用ツール