.NETアセンブリとして利用


C#などによる.NETプログラム向けインターフェイスです。
専用APIで感情やコンディションを細かく制御することが可能です。

.NET Frameworkについて

.NET連携APIを利用するアプリの開発には、.NET Framework 4.8 SDKが必要です。Visual Studio 2019の場合、Visual Studio Installerの「変更」→「個別のコンポーネント」で「.NET Framework 4.8 SDK」と「.NET Framework 4.8 Targeting Pack」をインストールしておいてください。(この手順ができない環境では、マイクロソフト社のページから.NET Framework 4.8 Developer Packをダウンロードしてインストールしてください。)
Visual Studio 2019で新しいプロジェクトを作成する場合、名前に(.NET Framework)とあるテンプレートを選んで、フレームワークに「.NET Framework 4.8」を指定します。

DLLについて

.NET連携APIを利用するアプリの開発には、本ソフトのインストールフォルダにあるDLLが必要となります。
64bitアプリから利用する場合は「CeVIO CS7」の、32bitアプリから利用する場合は「CeVIO CS6」のインストールフォルダにある下記DLLを、開発環境に参照登録してください。
CeVIO.Talk.RemoteService.dll

上記DLLは本ソフトのインストール時にGACに登録されるため、インストール場所が異なる環境でも作成したプログラムは動作します。そのため、上記DLLを作成したプログラムと一緒に再頒布する必要はありません。
(許可なく本ソフトの一部または全部を再頒布することは禁止です。)

API仕様

.NET連携API仕様

// 外部ソフトにトーク機能を提供します。
class Talker
{
uint Volume { get; set; }
// 音の大きさ(0~100)を取得または設定します。

uint Speed { get; set; }
// 話す速さ(0~100)を取得または設定します。

uint Tone { get; set; }
// 音の高さ(0~100)を取得または設定します。

uint Alpha { get; set; }
// 声質(0~100)を取得または設定します。

uint ToneScale { get; set; }
// 抑揚(0~100)を取得または設定します。※バージョン4.0.7.0追加。

TalkerComponentCollection Components { get; }
// 現在のキャストの感情パラメータマップを取得します。
// 備考:
// 内容はCastによって変化します。
// ※製品版【CeVIO Creative Studio】のキャストの場合、以下の内容となります。
//  『さとうささら』 → "普通", "元気", "怒り", "哀しみ"
//  『すずきつづみ』 → "クール", "照れ"
//  『タカハシ』 → "普通", "元気", "へこみ"

string Cast { get; set; }
// キャストを取得または設定します。

static string[] AvailableCasts { get; }
// 利用可能なキャスト名を取得します。
// 備考:
// キャストの取り揃えは、インストールされている音源によります。

SpeakingState Speak(string text);
// 指定したセリフの再生を開始します。
// 引数:
// text - セリフ。
// 戻り値:
// 再生状態を表すオブジェクト。
// 備考:
// 再生終了を待たずに処理が戻ります。
// 再生終了を待つには戻り値(SpeakingState)のWaitを呼び出します。

bool Stop();
// 再生を停止します。
// 戻り値:
// 成功した場合はtrue。それ以外の場合はfalse。

double GetTextDuration(string text);
// 指定したセリフの長さを取得します。
// 引数:
// text - セリフ。
// 戻り値:
// 長さ。単位は秒。

PhonemeData[] GetPhonemes(string text);
// 指定したセリフの音素単位のデータを取得します。
// 引数:
// text - セリフ。
// 戻り値:
// 音素単位のデータ。
// 備考:
// リップシンク等に利用できます。

bool OutputWaveToFile(string text, string path);
// 指定したセリフをWAVファイルとして出力します。
// 引数:
// text - セリフ。
// path - 出力先パス。
// 戻り値:
// 成功した場合はtrue。それ以外の場合はfalse。
// 備考:
// 出力形式はサンプリングレート48kHz, ビットレート16bit, モノラルです。
}

// キャストの感情パラメータマップを表すオブジェクト。
class TalkerComponentCollection
{
int Count { get; }
// 要素数を取得します。

TalkerComponent this[int index] { get; }
// 指定したインデックスの要素を取得します。
// 引数:
// index - インデックス。
// 戻り値:
// 要素。

TalkerComponent this[string name] { get; }
// 指定した名前の要素を取得します。
// 引数:
// name - 名前。
// 戻り値:
// 要素。
}

// 感情パラメータの単位オブジェクト。
class TalkerComponent
{
string Id { get; }
// 識別子を取得します。

string Name { get; }
// 感情の名前を取得します。

uint Value { get; set; }
// 感情の値(0~100)を取得または設定します。
}

// 再生状態を表すオブジェクト。
class SpeakingState
{
bool IsCompleted { get; }
// 再生が完了したかどうかを取得します。
// 完了した場合はtrue。(失敗を含む)それ以外の場合はfalse。

bool IsSucceeded { get; }
// 再生が成功したかどうかを取得します。
// 成功した場合はtrue。それ以外の場合はfalse。

void Wait();
// 再生終了を待ちます。

void Wait(double timeout);
// 再生終了を待ちます。
// 引数:
// timeout - 最大待機時間。単位は秒。(0未満は無制限)
}

// 音素データの単位オブジェクト。
class PhonemeData
{
string Phoneme { get; }
// 音素を取得します。

double StartTime { get; }
// 開始時間を取得します。単位は秒。

double EndTime { get; }
// 終了時間を取得します。単位は秒。
}

// 外部ソフトに【CeVIO Creative Studio】制御機能を提供します。
static class ServiceControl
{
static string HostVersion { get; }
// 【CeVIO Creative Studio】のバージョンを取得します。※バージョン4.0.7.0追加。

static bool IsHostStarted { get; }
// 【CeVIO Creative Studio】にアクセス可能かどうか取得します。

static HostStartResult StartHost(bool noWait);
// 【CeVIO Creative Studio】を起動します。起動済みなら何もしません。
// 引数:
// noWait - trueは起動のみ行います。アクセス可能かどうかはIsHostStartedで確認します。
// falseは起動後に外部からアクセス可能になるまで制御を戻しません。
// 戻り値:
// 結果コード。

static void CloseHost(HostCloseMode mode = HostCloseMode.Default);
// 【CeVIO Creative Studio】に終了を要求します。
// 引数:
// mode - 処理モード。
}

// StartHost() の結果コードを表します。
enum HostStartResult
{
Succeeded = 0,
// 成功。起動済みの場合も含みます。

NotRegistered = -1,
// インストール状態が不明。

FileNotFound = -2,
// 実行ファイルが見つからない。

StartingFailed = -3,
// プロセスの起動に失敗。

HostError = -4
// アプリケーション起動後、エラーにより終了。
}

// CloseHost() の処理モードを表します。
enum HostCloseMode
{
Default = 0
// 【CeVIO Creative Studio】が編集中の場合、保存や終了キャンセルが可能。
}


サンプルプログラム

.NET連携サンプル(C#)

using CeVIO.Talk.RemoteService;

namespace CeVIOCreativeStudioDotNetTest
{
class Program
{
static void Main(string[] args)
{
// 【CeVIO Creative Studio】起動
ServiceControl.StartHost(false);

// Talkerインスタンス生成
Talker talker = new Talker();

// キャスト設定
talker.Cast = "さとうささら";

// (例)音量設定
talker.Volume = 100;

// (例)抑揚設定
talker.ToneScale = 100;

// (例)再生
SpeakingState state = talker.Speak("こんにちは");
state.Wait();

// (例)音素データをトレース出力
PhonemeData[] phonemes = talker.GetPhonemes("はじめまして");
foreach (var phoneme in phonemes)
{
System.Diagnostics.Trace.WriteLine("" + phoneme.Phoneme + " " + phoneme.StartTime + " " + phoneme.EndTime);
}

// 【CeVIO Creative Studio】終了
ServiceControl.CloseHost();
}
}
}

CeVIO_CS7_DotNetTest(1.1.0).zip
※上記のサンプルプロジェクトです。解凍後、Visual Studio 2019以降でソリューションを読み込むと実行できます。


※.NETの仕様や開発方法については、MSDN等の関連ドキュメントをご参照ください。