Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

エディタから起動したエンジンに対して localhost でアクセスすると遅延が発生する問題の解決方法 #1480

Open
Hiroshiba opened this issue Nov 13, 2024 · 0 comments
Labels
初心者歓迎タスク 初心者にも優しい簡単めなタスク 機能向上 状態:実装者募集 実装者を募集している状態

Comments

@Hiroshiba
Copy link
Member

Hiroshiba commented Nov 13, 2024

内容

エディタから VOICEVOX エンジンを起動すると、エンジンは --host 127.0.0.1 オプション付きで起動されます。
その結果、エンジンは IPv4 の 127.0.0.1 のみにバインドされ、IPv6 の ::1 にはバインドされません。

この状態でクライアントが localhost を使用して API にアクセスすると、localhost が IPv6 の ::1 と IPv4 の 127.0.0.1 の両方に解決されます。しかし、エンジンは IPv6 にバインドされていないため、最初の IPv6 接続がタイムアウトし、その後 IPv4 にフォールバックします。これにより、API の呼び出しに約4秒の遅延が発生します。

この問題はエディタからエンジンを起動した場合に発生し、エンジンを単体で起動した場合には発生しません。
どうやって対処するかが課題だと思います。

実現方法

解決策は2つありそうです。たぶん後者のほうが良さそう。

  1. エディタからエンジンを起動する際の --host オプションを 127.0.0.1 から localhost に変更する(こちらは大変そう)

単にlocalhostとすると、ボイボにとっては良いけどマルチエンジンでマルチエンジンが遅くなるので問題になるかも。
なのでエンジンマニフェスト側にダブルバインドできるかのを持たせて・・・みたいな感じになって大変。

  1. エディタのruntime-info.json を参照して、正しい接続先を取得するよう促す。

runtime-info.json内にどのエンジンで起動したかの情報があるので、それを参照してもらう形が一番正しいはず。
https://github.com/VOICEVOX/voicevox/blob/7043359bb53f7562c2a6e14a8509f7def5508bfd/docs/%E3%82%B5%E3%83%BC%E3%83%89%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E9%96%8B%E7%99%BA%E8%80%85%E3%81%AE%E6%96%B9%E3%81%B8.md#%E6%83%85%E5%A0%B1%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
でもエンジン側の一体どこで案内すれば・・・という気持ち。

結論としては2が良いのかなと思ってます。ポート番号の変更にも対応できるので。
READMEのユーザーガイドに、エディタのエンジンにアクセスする場合の記載を足せば良さそう!

VOICEVOXのバージョン

0.21.1

その他

関連リンク:

@Hiroshiba Hiroshiba added 機能向上 初心者歓迎タスク 初心者にも優しい簡単めなタスク 状態:実装者募集 実装者を募集している状態 labels Nov 13, 2024
tsukumijima added a commit to Aivis-Project/AivisSpeech-Engine that referenced this issue Nov 23, 2024
…でバインドされないことによる接続遅延を防ぐために、代わりに localhost を指定し IPv4 と IPv6 の両方でバインドする

ref: github.com/VOICEVOX/voicevox_engine/issues/1480
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
初心者歓迎タスク 初心者にも優しい簡単めなタスク 機能向上 状態:実装者募集 実装者を募集している状態
Projects
None yet
Development

No branches or pull requests

1 participant