LoginSignup
0
0

coeiroinkのengineとeditorを別のマシン上で動かす

Last updated at Posted at 2023-09-06

やりたいこと

・engineはGPU、またはハイエンドCPUを搭載したマシン上で動かしたい。
・しかしeditorはノートPCやタブレット上で動かしたい。
・この要件のためにRDP等、画面転送するような仕組みは使いたくない。(遅延も気になるし帯域も無駄)

問題となる仕様

問題になる仕様は2点です。
・engineは、127.0.0.0.1:50032でlistenする。そのためlocalhost以外からのアクセスを受け付けない。
・editorは127.0.0.1:50033に接続しようとする。そのためlocalhost以外に接続できない。

手法

オプションや設定ファイルの変更で、Listen設定、接続先を変更できないか調べてみましたが、情報が見つかりませんでした。

そこで、portproxyを使って転送します。
image.png

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側で登録した辞書のみが有効になってしまいます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0