努力したWiki

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

ユーザ用ツール

サイト用ツール


documents:tools:assistantseika:interface:wcf:wcf-005

WCFClient.DLL

AssistantSeika20220410/u より、今までソースコードで提供していたWCFClient.cs をDLLの形で公開することにしました。 WCFClient.DLLはAssistantSeikaのアーカイブに同梱されています。

このDLLは製作者の手元にある、あるがままを提供します。利用することで起こる各種問題について一切関知しません。
このDLLを有償無償にかかわらず再配布した場合、起こる問題の責任は再配布者が負うものとします。

IWCFClient.cs

WCFClient.DLLのインタフェース定義です。ここで定義されたインタフェースに従いAssistantSeikaへアクセスを行います。 ※20220410/u 以降

IWCFClient.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.ServiceModel;
using System.Threading;
 
namespace AssistantSeika
{
    public interface IWCFClient
    {
        /// <summary>
        /// AssistantSeikaバージョン取得
        /// </summary>
        /// <returns>バージョン文字列</returns>
        string Version();
 
        /// <summary>
        /// 製品スキャン
        /// </summary>
        void ProductScan();
 
        /// <summary>
        /// HTTP機能起動
        /// </summary>
        void BootHttpService();
 
        /// <summary>
        /// AssistantSeikaが認識している話者の一覧を取得
        /// </summary>
        /// <returns>話者一覧</returns>
        Dictionary<int, string> AvatorList();
 
        /// <summary>
        /// AssistantSeikaが認識している話者の少し詳しい一覧を取得
        /// </summary>
        /// <returns>話者一覧</returns>
        Dictionary<int, Dictionary<string, string>> AvatorList2();
 
        /// <summary>
        /// AssistantSeikaが認識している話者の詳しい一覧を取得
        /// </summary>
        /// <returns>話者一覧</returns>
        Dictionary<int, Dictionary<string, string>> AvatorListDetail2();
 
        /// <summary>
        /// 指定話者のデフォルトパラメタ取得
        /// </summary>
        /// <param name="cid">話者のcid</param>
        /// <returns>デフォルトパラメタの一覧</returns>
        Dictionary<string, Dictionary<string, Dictionary<string, decimal>>> GetDefaultParams2(int cid);
 
        /// <summary>
        /// 指定話者の現在の設定パラメタ取得
        /// </summary>
        /// <param name="cid">話者のcid</param>
        /// <returns>パラメタの一覧</returns>
        Dictionary<string, Dictionary<string, Dictionary<string, decimal>>> GetCurrentParams2(int cid);
 
        /// <summary>
        /// 指定話者で発声させる
        /// </summary>
        /// <param name="cid">話者のcid</param>
        /// <param name="talktext">発声させるテキスト</param>
        /// <param name="filepath">発声内容を保存するファイル名。""なら保存しない</param>
        /// <param name="effects">音声効果のパラメタ</param>
        /// <param name="emotions">感情のパラメタ</param>
        /// <returns>発声時間(ms)</returns>
        double Talk(int cid, string talktext, string filepath, Dictionary<string, decimal> effects, Dictionary<string, decimal> emotions);
 
        /// <summary>
        /// 指定話者で発声させる
        /// </summary>
        /// <param name="cid">話者のcid</param>
        /// <param name="talktext">発声させるテキスト</param>
        /// <param name="effects">音声効果のパラメタ</param>
        /// <param name="emotions">感情のパラメタ</param>
        /// <returns>発声時間(ms)</returns>
        double Talk(int cid, string talktext, Dictionary<string, decimal> effects, Dictionary<string, decimal> emotions);
 
        /// <summary>
        /// 指定話者で発声させる
        /// </summary>
        /// <param name="cid">話者のcid</param>
        /// <param name="talktexts">発声させるテキストの配列</param>
        /// <param name="filepath">発声内容を保存するファイル名。""なら保存しない</param>
        /// <param name="effects">音声効果のパラメタ</param>
        /// <param name="emotions">感情のパラメタ</param>
        /// <returns>発声時間(ms)</returns>
        double Talk(int cid, string[] talktexts, string filepath, Dictionary<string, decimal> effects, Dictionary<string, decimal> emotions);
 
        /// <summary>
        /// 指定話者で発声させる
        /// </summary>
        /// <param name="cid">話者のcid</param>
        /// <param name="talktexts">発声させるテキストの配列</param>
        /// <param name="effects">音声効果のパラメタ</param>
        /// <param name="emotions">感情のパラメタ</param>
        /// <returns>発声時間(ms)</returns>
        double Talk(int cid, string[] talktexts, Dictionary<string, decimal> effects, Dictionary<string, decimal> emotions);
 
        /// <summary>
        /// 指定話者で発声させる(非同期)
        /// </summary>
        /// <param name="cid">話者のcid</param>
        /// <param name="talktext">発声させるテキスト</param>
        /// <param name="effects">音声効果のパラメタ</param>
        /// <param name="emotions">感情のパラメタ</param>
        void TalkAsync(int cid, string talktext, Dictionary<string, decimal> effects, Dictionary<string, decimal> emotions);
 
        /// <summary>
        /// 指定話者で発声させる(非同期)
        /// </summary>
        /// <param name="cid">話者のcid</param>
        /// <param name="talktexts">発声させるテキストの配列</param>
        /// <param name="effects">音声効果のパラメタ</param>
        /// <param name="emotions">感情のパラメタ</param>
        void TalkAsync(int cid, string[] talktexts, Dictionary<string, decimal> effects, Dictionary<string, decimal> emotions);
    }
}

経緯

前身のSeikaCenterではDLLを提供していたのですが、GitHubで無断転載等々された為、AssistantSeikaではDLL提供を止めていました。
※替わりに参照用クライアントのソースコードを公開していました。

ですが、利用者より「Python.NETでpythonからDLL呼び出しできそうなので、DLL提供してもらえませんか」との問い合わせがありました。
確かに公開されているAssistantSeika利用ソフトウエアがほぼSeikaSay2コマンドのラップで実現されており、非効率的なのは否めません。
※ソースコードをコンパイルできる環境が無いならそうならざるを得ない…

どの程度の需要があるかはわかりませんが、

  • 利用することで起こる各種問題に関して制作者は一切関知しない
  • 有償無償にかかわらず再配布をした場合起きる問題の責任は再配布者が負う事

を条件にDLLを公開することにしました。

documents/tools/assistantseika/interface/wcf/wcf-005.txt · 最終更新: 2023/11/05 07:38 by k896951

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki