努力したWiki

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

ユーザ用ツール

サイト用ツール


documents:voiceroid:voiceroid-010

VOICEROID+EX,CeVIOを制御するDLL

2018/02/07

  • CeVIO制御をサポートしました。

概要

起動しているVOICEROIDやCeVIOに発声させたり、音声データを保存させたり、ができます。
また、SAPIも利用可能となりました。

DLLダウンロード

echoSeikAPI.dll 2018/02/07公開。 CeVIOサポート。

注意

■公開しているDLLを利用する事自体は問題ありませんが、ご自身のアプリに同梱して配布するような事は許可しておりません。
同梱したい場合はその旨ご連絡を頂ければ確認後に回答させていただきます。

DLLの使用例

AvatorControllerクラスのインスタンスを作成し、操作対象の話者を登録します。登録された話者に対してアクションを指定します。

VOICEROID+EX操作例

以下は VOICEROID+京町セイカ EX を発声させる最少コードです。

sample.cs
using System;
using echoSeikaAPI;
 
namespace sample
{
    class Program
    {
        static void Main()
        {
            AvatorController control = new AvatorController();          // コントローラオブジェクト生成
            Avator cv = Avator.SEIKA;                                   // 話者は VOICEROID+京町セイカ EX
            if (control.Register(cv))                                   // 話者の登録ができた
            {
                control.PlaySync(cv, "寒い日が続きますね");             // VOICEROID+京町セイカ EX 発声
              //control.PlaySync(cv, "寒い日が続きますね",true);        // うまく読み上げされないようであればこちらをお試しください
            }
        }
    }
}

CeVIO操作例

以下は CeVIO-さとうささら を発声させる最少コードです。 このプログラムは32bitコードの必要があります。

sample.cs
using System;
using echoSeikaAPI;
 
namespace sample
{
    class Program
    {
        static void Main()
        {
            AvatorController control = new AvatorController();          // コントローラオブジェクト生成
            Avator cv = Avator.SASARA;                                  // 話者は CeVIO-さとうささら
            if (control.Register(cv))                                   // 話者の登録ができた
            {
                control.PlaySync(cv, "寒い日が続きますね");             // CeVIO-さとうささら 発声
            }
        }
    }
}

SAPI操作例

以下は SAPIの話者 “Microsoft Haruka Desktop”を発声させる最少コードです。

sample.cs
using System;
using echoSeikaAPI;
 
namespace sample
{
    class Program
    {
        static void Main()
        {
            AvatorController control = new AvatorController();          // コントローラオブジェクト生成
            Avator cv = Avator.SAPI;                                    // 話者は SAPI話者
            if (control.Register(cv))                                   // 話者の登録ができた
            {
                control.SetTalkerName(cv, "Microsoft Haruka Desktop");  // SAPI話者に "Microsoft Haruka Desktop" を指定
                control.PlaySync(cv, "寒い日が続きますね");             // "Microsoft Haruka Desktop" 発声
            }
        }
    }
}

DLLのエントリ説明

現在以下のエントリが公開されています。

public string DLLVersion();                                            // 外部向けバージョンを返す
public bool Register(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 void SetTalkerName(Avator cv, string cvName);                   // SAPI用 話者名を登録する
public string[] GetAvailableTaker(Avator cv);                          // SAPI用 利用可能な話者の一覧を返す
 
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+ 鷹の爪 吉田くん EX Avator.YOSHIDA_EX
VOICEROID+ 月読アイ EX Avator.AI_EX
VOICEROID+ 月読ショウタ EX Avator.SHOUTA_EX
VOICEROID+ 水奈瀬コウ EX Avator.MINASE
VOICEROID+ 東北きりたん EX Avator.KIRITAN
VOICEROID+ 東北ずん子 Avator.ZUNKO
VOICEROID+ 東北ずん子 EX Avator.ZUNKO_EX
VOICEROID+ 民安ともえ EX Avator.TAMMY_EX
VOICEROID+ 結月ゆかり EX Avator.YUKARI_EX
VOICEROID+ 琴葉茜 Avator.AKANE
VOICEROID+ 琴葉葵 Avator.AOI
VOICEROID+ 民安ともえ Avator.TAMMY
VOICEROID+ 結月ゆかり Avator.YUKARI
VOICEROID+ 鷹の爪 吉田くん Avator.YOSHIDA
音街ウナTalk Ex Avator.UNA
Speech API 5 Avator.SAPI
CeVIOさとうささら Avator.SASARA
CeVIOすずきつづみ Avator.TSUZUMI
CeVIOタカハシ Avator.TAKAHASHI
CeVIO-ONE Avator.ONE
CeVIO-IA Avator.IA

登録、削除

話者をコントローラーに登録します。

control.Register(cv);                            // 登録成功時 true が返る
control.SetTalkerName(cv, "CeVIO-さとうささら"); // SAPI利用時は、話者名をこのメソッドで指定する
control.Remove(cv);                              // 削除成功時 true が返る

複数製品を同時制御したい場合は Register() を製品毎に実行します。Remove()は使う事はまずないと思いますが準備しました。
SAPI使用時は、SetTalkerName()で話者を明示します。

話者一覧取得

SAPI使用時、話者一覧を取得可能です。

control.Register(cv);                            // 登録成功時 true が返る
string[] list = control.GetAvailableTaker(cv);   // 話者一覧を取得する
control.SetTalkerName(cv, list[0]);              // 話者一覧最初の話者を指定する

音声効果設定

音量,話速,高さ,声質,イントネーション を設定します。

control.SetVoiceEffectParam(cv, VoiceEffectParam.volume,     volume);     // 音量(大きさ)
control.SetVoiceEffectParam(cv, VoiceEffectParam.speed,      speed);      // 話速(速さ)
control.SetVoiceEffectParam(cv, VoiceEffectParam.pitch,      pitch);      // 高さ
control.SetVoiceEffectParam(cv, VoiceEffectParam.alpha,      alpha);      // 声質
control.SetVoiceEffectParam(cv, VoiceEffectParam.intonation, intonation); // 抑揚

VOICEROIDには声質がないので指定しても無視されます。

製品によって指定できる範囲が異なります。

製品 VOICEROID+ VOICEROID+EX CeVIO SAPI
音量 0.00 ~ 2.00 (*1) 0.00 ~ 2.00 0 ~ 100 0 ~ 100
話速 0.5 ~ 2.0 (*2) 0.50 ~ 4.00 0 ~ 100 -10 ~ 10
高さ 0.5 ~ 2.0 (*2) 0.50 ~ 2.00 0 ~ 100 -
声質 - - 0 ~ 100 -
抑揚 - 0.00 ~ 2.00 0 ~ 100 -

(*1)0.05単位で指定 (*2)0.1単位で指定

VOICEROID+/VOICEROID+EXで音声効果を使う場合は、あらかじめ音声効果ウインドウ(音声効果タブ)を表示しておきます。
大丈夫な設定

以下の画面のままだと、コマンドラインで指定した音声効果パラメタが反映されません。
駄目な設定

VOICERID+ 結月ゆかり、民安ともえ、鷹の爪吉田君 (VOICEROID+ EXではないもの) はこのように音声効果ウインドウを表示させておきます。 この時、キーボード(キーボードショートカット)で音声効果パラメタを操作しないでください。やってしまうとおそらく制御不能になります。

この画面は、キーボード(キーボードショートカット)で音声効果を操作してしまい、ピッチにフォーカスが当たったままになっている例です。 画面を閉じて、再度音声効果のウインドウを開き直してください。

感情パラメタ設定

現時点では CeVIO話者のみ有効です。

control.SetVoiceEmotionParam(cv, "元気",   100); // 感情パラメタ "元気"   に 100 を指定
control.SetVoiceEmotionParam(cv, "哀しみ",   0); // 感情パラメタ "哀しみ" に 0 を指定

範囲は 0 ~ 100 です。感情のパラメタは話者毎に異なるので、CeVIOのエディタで確認してください。“元気”のパラメタを持たない話者に“元気”を指定しても反映されません。


このように異なります。

感情パラメタ
“元気” “普通” “怒り” “哀しみ” “クール” “照れ” “へこみ”
さとうささら
すずきつづみ
タカハシ  

音声再生

同期/非同期 をメソッドで別けてあります。

control.PlaySync(cv,  "寒い日が続きますね");  // 同期再生
control.PlayAsync(cv, "寒い日が続きますね");  // 非同期再生

以下のコードは、3人のVOICEROIDが同時にしゃべりだします。PlayAsync()をPlaySync()に置き換えてみるとはっきり違いが判るでしょう。

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, "カエルの歌がー、聞こえてくるよー");
            Console.ReadKey();
        }
    }
}

音声保存

WAVファイルの保存ができます。ファイルはフルパスで指定してください。
※VOICEROIDは過去に開いたフォルダを覚えているので、相対パス指定だと何処に保存されたかわからなくなります。

control.Save(cv, "寒い日が続きますね",  @"H:\echoseika\samui.wav");

CeVIO使用時の注意

このDLLでCeVIO話者を使うアプリケーションは、32bitアプリケーションでなければいけません。
CeVIO(とCeVIOの外部連携インターフェース)が32bitアプリケーションであることを要求します。

コメント

コメントを入力. Wiki文法が有効です:
画像の文字が読めなければ、文字を読んだ.wavファイルをダウンロードして下さい。
 
documents/voiceroid/voiceroid-010.txt · 最終更新: 2018/02/10 19:14 by k896951

ページ用ツール