用作 .NET 程序集
原文:CeVIO AI ユーザーズガイド ┃ .NETアセンブリとして利用
C# 等 .NET 程序的接口。
可以使用专用 API 精细地控制感情、状态等。
API 规范
// 提供语音功能。
class Talker2
{
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追加。
TalkerComponentCollection2 Components { get; }
// 获取当前角色的感情参数。
// 内容会随着角色变化。
// 例1『さとうささら』→ "普通", "元気", "怒り", "哀しみ"
// 例2『小春六花』→ "嬉しい", "普通", "怒り", "哀しみ", "落ち着き"
string Cast { get; set; }
// 获取或设置角色。
static string[] AvailableCasts { get; }
// 获取可以使用的角色名。
// 备注:
// 能获取到的角色取决于已安装的音源。
SpeakingState2 Speak(string text);
// 开始播放指定的台词。
// 参数:
// text - 台词。
// 返回值:
// 表示播放状态的对象。
// 备注:
// 该方法返回而不等待播放结束。
// 要等待播放结束,请调用返回值 (SpeakingState) 的 Wait。
bool Stop();
// 停止播放。
// 返回值:
// 成功时返回true。其他情况返回false。
double GetTextDuration(string text);
// 获取指定台词的长度。
// 参数:
// text - 台词。
// 返回值:
// 长度。单位是秒。
PhonemeData2[] GetPhonemes(string text);
// 获取指定台词的音素单位的数据。
// 参数:
// text - 台词。
// 返回值:
// 音素单位的数据。
// 备注:
// 可以用于对口型。
bool OutputWaveToFile(string text, string path);
// 将指定台词输出为 WAV 文件。
// 参数:
// text - 台词。
// path - 输出路径。
// 返回值:
// 成功时返回true。其他情况返回false。
// 备注:
// 输出格式为采样率 48kHz,比特率 16bit,单声道。
}
// 表示角色的感情参数图的对象。
class TalkerComponentCollection2
{
int Count { get; }
// 获取元素的数量。
TalkerComponent2 this[int index] { get; }
// 获取具有指定索引的元素。
// 参数:
// index - 索引。
// 返回值:
// 元素。
TalkerComponent2 this[string name] { get; }
// 获取具有指定名称的元素。
// 参数:
// name - 名字。
// 返回值:
// 元素。
}
// 感情参数的单位对象。
class TalkerComponent2
{
string Id { get; }
// 获取标识符。
string Name { get; }
// 获取感情的名字。
uint Value { get; set; }
// 获取或设置感情的值(0~100)。
}
// 表示播放状态的对象。
class SpeakingState2
{
bool IsCompleted { get; }
// 获取播放的状态(是否完成)。
// 完成的情况返回true。(包括失败在内)其他情况返回false。
bool IsSucceeded { get; }
// 获取播放的状态(是否成功)。
// 成功时返回true。其他情况返回false。
void Wait();
// 等待播放结束。
void Wait(double timeout);
// 等待播放结束。
// 参数:
// timeout - 最大等待时间。单位是秒。(0以下为无限)
}
// 表示音素数据单位的对象。
class PhonemeData2
{
string Phoneme { get; }
// 获取音素。
double StartTime { get; }
// 获取开始时间。单位是秒。
double EndTime { get; }
// 获取结束时间。单位是秒。
}
// 提供【CeVIO AI】的控制功能。
static class ServiceControl2
{
static string HostVersion { get; }
// 获取【CeVIO AI】的客户端版本。
static bool IsHostStarted { get; }
// 获取【CeVIO AI】的可访问情况。
static HostStartResult StartHost(bool noWait);
// 启动【CeVIO AI】。如果已启动则无效。
// 参数:
// noWait - true时仅启动。关于可访问情况,可以通过 IsHostStarted 确认。
// false时不会返回控制,直到启动后允许外部访问后。
// 返回值:
// 结果代码。
static void CloseHost(HostCloseMode mode = HostCloseMode.Default);
// 请求退出【CeVIO AI】。
// 参数:
// mode - 处理模式。
}
// 表示 StartHost() 的结果代码。
enum HostStartResult
{
Succeeded = 0,
// 成功。包括已启动的情况。
NotRegistered = -1,
// 无法确认安装状态。
FileNotFound = -2,
// 找不到可执行文件。
StartingFailed = -3,
// 无法启动进程。
HostError = -4
// 应用程序在启动后因错误而终止。
}
// 表示 CloseHost() 的处理代码。
enum HostCloseMode
{
Default = 0
// 如果【CeVIO AI】正在编辑,可以保存,取消退出等。
}
示例项目
using CeVIO.Talk.RemoteService2;
namespace CeVIOCreativeStudioDotNetTest
{
class Program
{
static void Main(string[] args)
{
// 启动【CeVIO AI】
ServiceControl2.StartHost(false);
// 生成Talker实例
Talker2 talker = new Talker2();
// 设定角色
talker.Cast = "さとうささら";
// (例)设定音量
talker.Volume = 100;
// (例)设定语调
talker.ToneScale = 100;
// (例)播放
SpeakingState2 state = talker.Speak("こんにちは");
state.Wait();
// (例)音素数据的跟踪输出
PhonemeData2[] phonemes = talker.GetPhonemes("はじめまして");
foreach (var phoneme in phonemes)
{
System.Diagnostics.Trace.WriteLine(
"" + phoneme.Phoneme +
" " + phoneme.StartTime +
" " + phoneme.EndTime);
}
// 关闭【CeVIO AI】
ServiceControl2.CloseHost();
}
}
}
CeVIO_AI_DotNetTest(1.1.0).zip
该压缩包内包含了上面的示例项目工程。解压后,请使用 Visual Studio 2019 或更高版本打开该项目。