目次

SeikaCenterAPI.dllの説明

SeikaCenterのサポートは終了いたしました。
この製品に修正や機能拡張は今後行われません。現時点での最新版のダウンロードは可能です。
後継プロダクト AssistantSeika をご利用ください。

概要

20190428/uでの説明です。

SeikaCenterAPI.dll は .NET Framework 4.7.2 環境で作成したDLLです。その使用例の説明をします。

IPCもしくはHTTPを使ってSeikaCenterへ接続し制御ができます。

DLLを利用した操作例

sample.cs
using System.Collections.Generic;
using SeikaCenter;
 
namespace a_test
{
    class Program
    {
        static void Main(string[] args)
        {
 
            SeikaCenterControl scc = new SeikaCenterControl();
 
            double len = 0.0;
 
            Dictionary<string, decimal> effects = new Dictionary<string, decimal>()
            {
                {"speed", 0.90m },
                {"pitch", 1.30m }
            };
            Dictionary<string, decimal> emotions = new Dictionary<string, decimal>()
            {
                {"喜び", 0.60m }
            };
 
            // 音声発声時
            len = scc.Talk(2000, "あー嬉しーなー", "", effects, emotions);
 
            // 音声保存時
            // len = scc.Talk(2000, "あー嬉しーなー", @"E:\seikacenter\ureshi.wav", effects, emotions);
        }
    }
}

接続モード

SeikaCenterAPI.dllを使ったプログラムは、プログラムのリコンパイルをすることなく接続モードを変更することができます。

通常モード(IPC接続モード)

SeikaCenterAPI.DLLでIPC接続を使う接続モードの事です。

リモート接続モード

SeikaCenterAPI.DLLでHTTP接続を行わせる状態を「リモート接続モード」と称します。
SeikaCenter稼働PCと異なるPCから制御したい場合、またはIPCが利用できない環境では、リモート接続モードが利用できます。

リモート接続モードはHTTPを利用するので、SeikaCenterの設定「HTTP機能」を有効にする必要があります。

利用するSeikaCenterAPI.DLLと同じディレクトリに名称 SeikaCenterAPI.json のJSONファイルを配置すると、DLL内部処理がリモート接続モードに切り替ります。
SeikaCenterAPI.DLLを利用する側はプログラムを変更する必要はありません。

SeikaCenterAPI.jsonに記述する4つのプロパティは必須プロパティです。

SeikaCenterAPI.json
{
  "HostAddr"   : "http://localhost:7180",
  "SampleRate" : 22050 ,
  "User"       : "ユーザ",
  "Password"   : "パスワード"
}
プロパティ 説明
HostAddr 接続先 SeikaCenterの待ち受けURIです
SampleRate 音声のサンプリングレートです。音声はモノラルで指定のサンプリングレート(この例では22.05kHz)に変換されます
User 接続先 SeikaCenter で定義されているユーザです
Password 接続先 SeikaCenter で定義されているパスワードです

メソッド/プロパティ

現時点では以下のDLLメソッド、プロパティが公開されています。接続モードに関係なく利用できます。

メソッド/プロパティ 説明
戻り値 名前
string DLLVersion DLLのバージョン。SeikaCenterのバージョンではありません。
Dictionary<int, string> AvatorList SeikaCenterで利用可能な話者の一覧を返します。
Dictionary<string,Dictionary<string,Dictionary<string, decimal> > > GetAvatorParams2(
  int cid
)
指定の話者のデフォルトパラメタ情報を返します。
Dictionary<string,Dictionary<string,Dictionary<string, decimal> > > GetAvatorParams_current2(
  int cid
)
指定の話者の現在パラメタ情報を返します。
double Talk(
  int cid,
  string talktext,
  string filepath,
  Dictionary<string, decimal> effects,
  Dictionary<string, decimal> emotions
)
指定の話者で指定テキストを発声/音声保存させます。
ファイルパスが空の時は音声再生、ファイルパスが設定されていれば音声保存が実行されます。
戻り値は
  発声時:発声にかかった時間
  保存時:保存した音声ファイルの音声長さ
単位はミリ秒です。エラー時はマイナスの数値になります。

エフェクトパラメタ

Talk()の引数effectsで指定できる名前。英小文字で記述。範囲はSeikaSayの説明を参照。

名前 対応するパラメタ VOICEROID+EX VOICEROID2 CeVIO ガイノイドTalk 棒読みちゃん SAPI SpeechPlatform
volume 音量 〇 〇 〇 〇 〇 〇 〇
speed 話速 〇 〇 〇 〇 〇 〇 〇
pitch 高さ(CeVIOではトーン) 〇 〇 〇 〇 〇
intonation 抑揚(CeVIOではトーンスケール) 〇 〇 〇 〇
alpha 声質 ※CeVIOでのみ有効 〇

感情パラメタ

Talk()の引数emotionsは話者により異なります。

感情パラメタ
話者 “喜び” “怒り” “悲しみ” “セクシー” “パワフル” “あたふた” “元気” “普通” “怒り” “哀しみ” “クール” “照れ” “へこみ” “High” “Mid” “MidLow” “Low”
VOICEROID2 ○ ○ ○
東北イタコ(VOICEROID2) ○ ○ ○
さとうささら ○ ○ ○ ○
すずきつづみ ○ ○
タカハシ ○ ○ ○
ONE ○ ○ ○ ○

再生時間

Talk()で返る時間/長さは、同じ文面を再生/保存させても毎回異なります。
これは、製品の機能を使わず発声の終了を自前で監視しているため、PCの状態やタイミング等の問題で変動します。 音声保存時は一度保存した音声ファイルから算出させています。

エラーがあった場合、時間/長さにマイナスの値が返ります。