doc-002
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| doc-002 [2023/04/11 20:09] – 削除 - 外部編集 (Unknown date) 127.0.0.1 | doc-002 [2025/03/30 02:01] (現在) – 外部編集 127.0.0.1 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | ====== echoseika API DLL 説明 ====== | ||
| + | |||
| + | 2018/ | ||
| + | 旧文書を再編集しました。以降メンテナンスされません。 | ||
| + | |||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | |||
| + | ===== DLLの使用例 ===== | ||
| + | |||
| + | AvatorControllerクラスのインスタンスを作成し、操作対象の話者を登録します。登録された話者に対してアクションを指定します。 | ||
| + | ==== VOICEROID+EX操作例 ==== | ||
| + | |||
| + | 以下は VOICEROID+京町セイカ EX を発声させる最少コードです。 | ||
| + | |||
| + | <code csharp sample.cs> | ||
| + | using System; | ||
| + | using echoSeikaAPI; | ||
| + | |||
| + | namespace sample | ||
| + | { | ||
| + | class Program | ||
| + | { | ||
| + | static void Main() | ||
| + | { | ||
| + | AvatorController control = new AvatorController(); | ||
| + | if (control.Register(Avator.SEIKA)) | ||
| + | { | ||
| + | control.PlaySync(Avator.SEIKA, | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== CeVIO操作例 ==== | ||
| + | |||
| + | 以下は CeVIO-さとうささら を発声させる最少コードです。 | ||
| + | このプログラムは32bitコードの必要があります。 | ||
| + | |||
| + | <code csharp sample.cs> | ||
| + | using System; | ||
| + | using echoSeikaAPI; | ||
| + | |||
| + | namespace sample | ||
| + | { | ||
| + | class Program | ||
| + | { | ||
| + | static void Main() | ||
| + | { | ||
| + | AvatorController control = new AvatorController(); | ||
| + | if (control.Register(Avator.SASARA)) | ||
| + | { | ||
| + | control.PlaySync(Avator.SASARA, | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== SAPI操作例 ==== | ||
| + | |||
| + | 以下は SAPIの話者 " | ||
| + | |||
| + | <code csharp sample.cs> | ||
| + | using System; | ||
| + | using echoSeikaAPI; | ||
| + | |||
| + | namespace sample | ||
| + | { | ||
| + | class Program | ||
| + | { | ||
| + | static void Main() | ||
| + | { | ||
| + | AvatorController control = new AvatorController(); | ||
| + | if (control.Register(Avator.SAPI)) | ||
| + | { | ||
| + | control.SetTalkerName(Avator.SAPI, | ||
| + | control.PlaySync(Avator.SAPI, | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ===== DLLのエントリ説明 ===== | ||
| + | |||
| + | 以下は 2018/04/14 公開のDLL( c)についての説明です。 | ||
| + | |||
| + | ==== エントリ ==== | ||
| + | |||
| + | 現在以下のエントリが公開されています。 | ||
| + | <code csharp> | ||
| + | public string DLLVersion(); | ||
| + | public bool Register(Avator cv); // 話者をコントローラに登録する(use_pm = true) | ||
| + | public bool Register(Avator cv, bool use_pm); | ||
| + | public bool isRegisted(Avator cv); // 話者が登録されているか確認する | ||
| + | public bool Remove(Avator cv); // 話者をコントローラの登録から外す | ||
| + | public void PlaySync(Avator cv, string talkText); | ||
| + | public void PlayAsync(Avator cv, string talkText); | ||
| + | public void Save(Avator cv, string talkText, string WavFilePath); | ||
| + | |||
| + | public string[] GetAvailableTaker(Avator cv); // SAPI用 利用可能な話者の一覧を返す | ||
| + | public void SetTalkerName(Avator cv, string cvName); | ||
| + | |||
| + | public void SetPostMessageWait(Avator cv, int wait); | ||
| + | public void SetVoiceEffectParam(Avator cv, VoiceEffectParam ve, decimal param); // 話者の音声効果を設定する | ||
| + | public bool SetVoiceEmotionParam(Avator cv, string ve, decimal param); | ||
| + | </ | ||
| + | |||
| + | ==== 話者 ==== | ||
| + | |||
| + | enum Avator には以下の話者が定義されています。 | ||
| + | |||
| + | ^ 製品 | ||
| + | | VOICEROID+ 京町セイカ EX | Avator.SEIKA | ||
| + | | VOICEROID+ 琴葉茜 | ||
| + | | VOICEROID+ 琴葉葵 | ||
| + | | VOICEROID+ 水奈瀬コウ EX | Avator.MINASE | ||
| + | | VOICEROID+ 東北きりたん EX | Avator.KIRITAN | ||
| + | | 音街ウナTalk Ex | Avator.UNA | ||
| + | | VOICEROID+ 民安ともえ | ||
| + | | VOICEROID+ 民安ともえ EX | Avator.TAMMY_EX | ||
| + | | VOICEROID+ 東北ずん子 | ||
| + | | VOICEROID+ 東北ずん子 EX | Avator.ZUNKO_EX | ||
| + | | VOICEROID+ 結月ゆかり | ||
| + | | VOICEROID+ 結月ゆかり EX | Avator.YUKARI_EX | ||
| + | | VOICEROID+ 鷹の爪 吉田くん | ||
| + | | VOICEROID+ 鷹の爪 吉田くん EX | Avator.YOSHIDA_EX | ||
| + | | VOICEROID+ 月読アイ EX | Avator.AI_EX | ||
| + | | VOICEROID+ 月読ショウタ EX | Avator.SHOUTA_EX | ||
| + | | CeVIOさとうささら | ||
| + | | CeVIOすずきつづみ | ||
| + | | CeVIOタカハシ | ||
| + | | CeVIO-ONE | ||
| + | | CeVIO-IA | ||
| + | | Speech API 5 | Avator.SAPI | ||
| + | |||
| + | |||
| + | ==== 登録、削除 ==== | ||
| + | |||
| + | 話者をコントローラーに登録します。 | ||
| + | |||
| + | <code csharp> | ||
| + | control.Register(Avator.SEIKA); | ||
| + | control.Remove(Avator.SEIKA); | ||
| + | </ | ||
| + | |||
| + | 複数製品を同時制御したい場合は Register() を製品毎に実行します。Remove() は登録話者製品の制御を終了します。 | ||
| + | |||
| + | SAPI使用時は Register() の後に SetTalkerName() で話者を明示します。 | ||
| + | |||
| + | <code csharp> | ||
| + | control.Register(Avator.SAPI); | ||
| + | control.SetTalkerName(Avator.SAPI, | ||
| + | control.Remove(Avator.SAPI); | ||
| + | </ | ||
| + | |||
| + | VOICEROID+/ | ||
| + | <code csharp> | ||
| + | control.Register(Avator.SEIKA, | ||
| + | </ | ||
| + | |||
| + | ==== 話者一覧取得 ==== | ||
| + | |||
| + | SAPI使用時、話者一覧を取得可能です。 | ||
| + | |||
| + | <code csharp> | ||
| + | control.Register(Avator.SAPI); | ||
| + | string[] list = control.GetAvailableTaker(Avator.SAPI); | ||
| + | control.SetTalkerName(Avator.SAPI, | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== 音声効果設定 ==== | ||
| + | |||
| + | 音量, | ||
| + | |||
| + | <code csharp> | ||
| + | control.SetVoiceEffectParam(Avator.SEIKA, | ||
| + | control.SetVoiceEffectParam(Avator.SEIKA, | ||
| + | control.SetVoiceEffectParam(Avator.SEIKA, | ||
| + | control.SetVoiceEffectParam(Avator.SEIKA, | ||
| + | control.SetVoiceEffectParam(Avator.SEIKA, | ||
| + | </ | ||
| + | |||
| + | VOICEROIDには効果に『声質』がないので指定しても無視されます。 | ||
| + | |||
| + | 製品によって指定できる範囲が異なります。 | ||
| + | |||
| + | ^ 製品 | ||
| + | ^ 音量 | ||
| + | ^ 話速 | ||
| + | ^ 高さ | ||
| + | ^ 声質 | ||
| + | ^ 抑揚 | ||
| + | |||
| + | (*1)0.05単位で指定 (*2)0.1単位で指定 | ||
| + | |||
| + | VOICEROID+/ | ||
| + | {{: | ||
| + | |||
| + | 以下の画面のままだと、コマンドラインで指定した音声効果パラメタが反映されません。\\ | ||
| + | {{: | ||
| + | |||
| + | VOICERID+ 結月ゆかり、民安ともえ、鷹の爪吉田君 (VOICEROID+ EXではないもの) はこのように音声効果ウインドウを表示させておきます。 | ||
| + | この時、キーボード(キーボードショートカット)で音声効果パラメタを操作しないでください。やってしまうとおそらく制御不能になります。 | ||
| + | |||
| + | この画面は、キーボード(キーボードショートカット)で音声効果を操作してしまい、ピッチにフォーカスが当たったままになっている例です。 | ||
| + | 画面を閉じて、再度音声効果のウインドウを開き直してください。 | ||
| + | |||
| + | {{: | ||
| + | |||
| + | ==== 感情パラメタ設定 ==== | ||
| + | |||
| + | このDLLでは CeVIO話者にのみ有効な設定です。 | ||
| + | |||
| + | <code csharp> | ||
| + | control.SetVoiceEmotionParam(Avator.SASARA, | ||
| + | control.SetVoiceEmotionParam(Avator.SASARA, | ||
| + | </ | ||
| + | |||
| + | 範囲は 0 ~ 100 です。感情のパラメタは話者毎に異なるので、CeVIOのエディタで確認してください。" | ||
| + | |||
| + | {{: | ||
| + | {{: | ||
| + | {{: | ||
| + | |||
| + | このように異なります。 | ||
| + | | ^ 感情パラメタ | ||
| + | |::: ^ " | ||
| + | ^ さとうささら | ○ | ||
| + | ^ すずきつづみ | | | | | ○ | ||
| + | ^ タカハシ | ○ | ||
| + | |||
| + | ==== 音声再生 ==== | ||
| + | |||
| + | <code csharp> | ||
| + | control.PlaySync(Avator.SEIKA, | ||
| + | control.PlayAsync(Avator.SEIKA, | ||
| + | </ | ||
| + | |||
| + | 残念ですが、VOICEROID+ では非同期実行ができなくなってしまいました。どちらのメソッドを使っても同期実行となります。 | ||
| + | |||
| + | 以下のコードは、3人のVOICEROIDが同時にしゃべりだします。PlayAsync()をPlaySync()に置き換えてみるとはっきり違いが判るでしょう。 | ||
| + | <code csharp> | ||
| + | using System; | ||
| + | using echoSeikaAPI; | ||
| + | |||
| + | namespace sample | ||
| + | { | ||
| + | class sample | ||
| + | { | ||
| + | static void Main() | ||
| + | { | ||
| + | AvatorController control = new AvatorController(); | ||
| + | |||
| + | control.Register(Avator.SEIKA); | ||
| + | control.Register(Avator.ZUNKO_EX); | ||
| + | control.Register(Avator.TAMMY_EX); | ||
| + | |||
| + | control.PlayAsync(Avator.SEIKA, | ||
| + | control.PlayAsync(Avator.ZUNKO_EX, | ||
| + | control.PlayAsync(Avator.TAMMY_EX, | ||
| + | |||
| + | // control.PlaySync(Avator.SEIKA, | ||
| + | // control.PlaySync(Avator.ZUNKO_EX, | ||
| + | // control.PlaySync(Avator.TAMMY_EX, | ||
| + | |||
| + | Console.ReadKey(); | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== 音声保存 ==== | ||
| + | |||
| + | WAVファイルの保存ができます。ファイルはフルパスで指定してください。\\ | ||
| + | VOICEROIDは過去に開いたフォルダを覚えているので、相対パス指定だと何処に保存されたかわからなくなります。 | ||
| + | |||
| + | <code csharp> | ||
| + | control.Save(Avator.SEIKA, | ||
| + | </ | ||
| + | |||
| + | VOICEROIDでWAVファイル保存を実行するとダイアログが表示されます。\\ | ||
| + | DLLは制御システム上、ダイアログが表示されてからダイアログ検出を始めます。ですが、ダイアログが表示されているか否かを判断することができません。そのため、指定時間を待ってその間にダイアログが表示されたものと仮定して検出を開始します。\\ | ||
| + | なおダイアログ検出に失敗すれば、保存ダイアログは表示されたままとなり、手動操作しなければなりません。 | ||
| + | |||
| + | 待ち時間のデフォルトは1000ミリ秒(1秒)です。\\ | ||
| + | もし実行環境が高性能/ | ||
| + | 以下は待ち時間を500ミリ秒(0.5秒)に変更した例です。 | ||
| + | |||
| + | <code csharp> | ||
| + | control.SetPostMessageWait(Avator.SEIKA, | ||
| + | control.Save(Avator.SEIKA, | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== CeVIO使用時の注意 ===== | ||
| + | |||
| + | このDLLでCeVIO話者を使うアプリケーションは、32bitアプリケーションでなければいけません。\\ | ||
| + | CeVIO(とCeVIOの外部連携インターフェース)が32bitアプリケーションであることを要求します。 | ||
| + | |||
| + | |||
| + | {{tag> 技術資料 Windows voiceroid tool}} | ||
