やりたいこと
・engineはGPU、またはハイエンドCPUを搭載したマシン上で動かしたい。
・しかしeditorはノートPCやタブレット上で動かしたい。
・この要件のためにRDP等、画面転送するような仕組みは使いたくない。(遅延も気になるし帯域も無駄)
問題となる仕様
問題になる仕様は2点です。
・engineは、127.0.0.0.1:50032でlistenする。そのためlocalhost以外からのアクセスを受け付けない。
・editorは127.0.0.1:50033に接続しようとする。そのためlocalhost以外に接続できない。
手法
オプションや設定ファイルの変更で、Listen設定、接続先を変更できないか調べてみましたが、情報が見つかりませんでした。
PC1側で実行
netsh interface portproxy add v4tov4 listenport=50032 listenaddr=0.0.0.0 connectport=50033 connectaddress=[PC2のIP]
PC2側で実行
netsh interface portproxy add v4tov4 listenport=50033 listenaddr=0.0.0.0 connectport=50032 connectaddress=127.0.0.1
先にPC#2側でengine.exeを実行しておきま、次にPC#1側でCOEIROINKv2.exeを実行します。
これで、軽いノートPC側ではeditorのみを起動し、実際の音声合成処理はリモートで処理することができました。
問題点1
ネットワークが不調だとPC#2側への接続に失敗し、ローカルで「engine.exe」を起動しようとしてしまいます。
PC#1側は「COEIROINKv2.exe」ファイル単体で動きますので、engine/speaker_infoディレクトリは削除しておきます。
問題点2
PC#1とPC#2のいずれでeditorを起動しても、一方で単語辞書に登録した内容は、他方の単語辞書画面には反映されません。engineとeditorの両方を再起動しても、各端末で登録した内容のみが表示されます。
どうやら辞書データは、editorを起動した端末のAppData\Roaming\coeiroink-v2\dictionaryStore.jsonで管理されているようです。
そしてeditorで「辞書登録」画面を開くと、editor側の辞書データ(dictionaryStore.json)でengine側の辞書データ(user.csv・user.dic)を上書きする仕組みのようです。
そのため、複数の端末で辞書を登録する場合は両端末のdictionaryStore.jsonをマージしないと、最後に「辞書登録」を開いたeditor側で登録した辞書のみが有効になってしまいます。