ksasao/TTSController

弦巻マキ (英)が発話できない

nmori opened this issue · 4 comments

nmori commented

どうもAPI側の整合が取れていないようにもみえるのですが、
現状の取得方法では、ライセンスエラーがでて上手に発話できません。

[原因] Config からキャスト名をもってきますが、表記が英語であるため。
[仮対処] CeVIOAIEnumerator.cs に下記の細工をすると動くようになりました。

`

                    string name = doc.Attribute("Name").Value;
                    //フォローアップ
                    if (name.IndexOf("Tsurumaki Maki (EN)") >= 0)
                    {
                        name = "弦巻マキ (英)";
                    }

`

報告いただきありがとうございます。ご提示いただいた仮対処でエラーが出なくなることを確認しました。名前の取得方法については少し調べてみます。

@nmori
各種テキストファイルやレジストリも眺めてみたのですが、該当する文字列は見つけられませんでした。ハードコーディングされているのかもしれませんね。

現時点で コミット済み のものは、小春六花、弦巻マキ (英)、弦巻マキ (日)で動作することを確認しましたが、他のCeVIO AIライブラリで同様のエラーが発生する可能性があります。この Issue はクローズせずしばらく様子を見てみたいと思います。

naoさんに最初に問題をご報告した者です.
setting.cfg では確かに "Tsurumaki Maki (EN)","弦巻マキ (日)" と書かれているのですが,実際に CeVIO.Talk.RemoteService2 から呼び出すキャスト名はWindowsの表示言語に依存することが分かりました.

Windows言語設定によるキャスト名のテスト

実際に使えるキャスト名は Talker2.AvailableCasts()で取得できます(以下スクショではanoyetta/CeVIOAIProxyを使っています).

Windows(日本語設定) Windows(英語設定)
maki-jp maki-eng
マキ日本語 弦巻マキ (日) Tsurumaki Maki (JP)
マキ英語 弦巻マキ (英) Tsurumaki Maki (EN)

従って,「日本語版Windowsで弦巻マキ (英)を使いたいとき」以外に「英語版Windowsで弦巻マキ (日)を使いたいとき」にもsetting.cfg通りでは問題が起きそうです.
私は「小春六花」を所持していませんが,同様に英語版ではKoharu Rikkaのようになっている可能性があります.
なお,CeVIO AI自体の表示言語設定は日英どちらにしてもキャスト名に影響しませんでした.

考えられる対応

  • Talker2.AvailableCasts()からキャスト名称を取得する(この場合CeVIO AIを起動させておかなければなりません)
  • 現在および将来のCeVIO AIのキャスト名称をハードコーディングして,Windowsの表示言語によって切り替える
  • CeVIO AI本体がsetting.cfgを表示言語に則して書き換えてくれることに期待する

@kn1cht さん、検証ありがとうございます。

英語版Windowsへの小春六花のインストール

image
英語版Windowsに小春六花をインストールしてみたところ、英語表記になることを確認しました。

setting.cfg

こちらは日本語のままでした。
image

対応について

そこまで頻繁にTalkは発売されないと思われるので、当面は @nmori さん方式で都度対応することとし、setting.cfg が修正されることを期待しようと思います。

なお、ダウンロード版の弦巻マキ(日)(英)を英語版Windowsで実行した場合、インストーラー実行時に日本語ファイル名のフォルダに展開しようとしてインストールに失敗しました。