あさりのみそしるダイアリー

非常事態が日常です…そんな時こそ声を上げないと人生ジエンドにゃん(´・ω・`)

誰だって美少女ボイスになりたいよね?(´・ω・`) その7

前回・・・というか、前々回の続きです。

www.asarinomisosoup.com

 

ちなみに、前回はライセンスを購入しました。

www.asarinomisosoup.com

 

 

さて、今回はいよいよ、CeVIOをC#から制御してみます。

まぁ、メインのソフトウェアをろくにさわっていないわけではありますが、目的を達成することを優先します。

 

今回は、Visual Studio 2019 Community を使います。

.NET Frameworkを用いたプロジェクトを作れる環境にあることが前提です。

もしないようならば、パッケージを追加してね。ここでは詳しくは語りません。

 

夜も遅いですが、連載の途中でもやる気がなくなって放棄することがよくあるので、やる気のあるうちに進めてしまいます。

ちなみに、無料体験版でも以下の各種実装の動作を確認することができます(無料体験期間中のみ)。

 

かんたんな制御プログラムを書いてみよう

Visual Studio (以下、VS)を使って、C#でプログラムを書きます。

C#のプログラミングをVS上でおこなうことができるスキルを持っていることを前提とします。

 

f:id:asarinomisosoup:20200726025813p:plain

まずは、.NET Framework のコンソールアプリを作成するための新規プロジェクトを作ります。

 

f:id:asarinomisosoup:20200726030016p:plain

テキトーにプロジェクト名を指定します。ここでは、いっちょまえに「TalkAgent」としました。おはなし代行です。合ってるかな?(´・ω・`)←英語の自信なし

 

フレームワークは、ここでは「.NET Framework 4.7.2」を指定しています。

今どきの主流は.NET Core だと思いますが、その最新版 .NET Core 3.1 からは、.NET Framework のDLLを参照すると実行時にエラーが発生するので(つまり対応していない)、.NET Core は使用しないでください。

 

f:id:asarinomisosoup:20200726030443p:plain

CeVIOインストール先である

C:\Program Files\CeVIO\CeVIO Creative Studio (64bit)

以下に「CeVIO.Talk.RemoteService.dll」があるので、これを参照に追加します。

なお、参照してプログラムを作成するのは許可されていますが、CeVIOに含まれるどのインストールファイルも、それ自体の配布はNGなのでご注意ください。(たとえば、ビルド後にEXEと同じフォルダに出力される「CeVIO.Talk.RemoteService.dll」を配布してはいけないということです。)

 

32bit版はフォルダの場所が違います。

詳しくは・・・

guide2.project-cevio.com

 

f:id:asarinomisosoup:20200726031129p:plain

今回は64bit版のDLLを参照しているので、一応、対象プラットフォームをx64にしておきます。あまり意味ないですが。

 

f:id:asarinomisosoup:20200726031646p:plain

コーディングします。ざっと40行程度で済みます。

ろくなエラー&例外処理はしていませんが。

 

リファレンスページのサンプルでは

ServiceControl.StartHost(false);

ServiceControl.CloseHost();

がありますが、これらを実行するとCeVIOが起動したり終了したりするだけであって、その分、余計に時間がかかるので、ここでは省いています。

 

CeVIOを起動しっぱなしにしておけば、Start/CloseHost()を呼び出さなくても、キャラクターに任意のテキストを読み上げてもらうことができます。レスポンスもいいです。

それに、余計なダイアログも都度出てこなくて済むしね。

 

プロジェクトファイル一式は、以下の公開リポジトリに置きました。

参考にどうぞ。

dev.azure.com

 

 

制御プログラムを実行してみる

ビルドして実行してみます。

f:id:asarinomisosoup:20200726032252p:plain

TalkAgent.exe が生成されているので、これをコマンドプロンプトかPowerShell上で実行します。

 

f:id:asarinomisosoup:20200726032343p:plain

CeVIOを立ち上げた状態で、こんな具合に、引数に読み上げたいテキストを指定すると、さとうささらが読み上げてくれます。

 

元気マックスのパラメータでテキストを読み上げると・・・


CeVIOをC#から制御するサンプル

 

 

音声を調整してみる

Talkerのプロパティを調整することで、さとうささらの読み上げスピードなどを制御することができます。

 

f:id:asarinomisosoup:20200726032558p:plain

 

f:id:asarinomisosoup:20200726032651p:plain

Talkerが話者クラスです。

Castプロパティに、読み上げてほしいキャラクター名を指定します。

 

f:id:asarinomisosoup:20200726032739p:plain

これらは全キャスト共通で、アプリケーション画面上の

・大きさ

・速さ

・高さ

・声質

・抑揚

と対応しています。

数値のレンジは、プログラム上では0~100ですが、アプリケーション画面上はこれとは異なります。

たぶん、アプリケーション画面上の最小値 = 0 で、中間値 = 50、最大値 = 100 と対応していると思いますが、プログラム上ではアプリケーション画面上ほど細かく刻めません。

(まぁ、アプリケーション画面上の刻みの方がダミーなのかもしれませんが。)

 

f:id:asarinomisosoup:20200726033104p:plain

これらは「さとうささら」固有のパラメータです。

他のキャストを選択した場合は、これとは異なるプロパティ名に対して、値を設定することになります。

私は「さとうささら」しか使わないので、決め打ちにしていますが、存在しないプロパティに値をセットしようとするとエラーになるかもしれません。

 

これらのプロパティを調整して、読み上げ方を変えることになりますが、プログラム上でやろうとするとちょっと大変かもしれないので、アプリケーション画面上からパラメータを調整しつつ、自分好みの声色を探すといいと思います。

 

また、今回のプログラムは、引数で読み上げテキストのみ指定するようにしていますが、たとえばJSONファイルに読み上げパラメータを書いて、いくつかプリセットとしてファイルに保存しておき、TalkAgent.exe 実行時にパラメータ.jsonファイルを読み込むような引数を追加すれば、読み上げ方を柔軟に切り替えることができるでしょう。

 

さて、今回のプログラムにより、さとうささらさんというかわいい美少女のボイスで任意のテキストを読み上げることができるようになりました。

このEXEファイルに、音声認識したテキストファイルを渡してあげれば・・・どうでしょうか?

 

しかし、ブラウザからどうやってネイティブアプリを実行すればいいのか?という疑問が残りますよね。

しかも、CeVIOがインストールされた自分のPC上で、かつ繰り返しマイク使用許可を設定するような事態を回避すべくhttpsなウェブサーバーとして実行する必要があります。

 

課題はたくさんあるようで・・・実は少ないです。

と言うのも、C#とJavaScriptがなかよく共存できる、最近のフレームワークを使うことで課題を解決できる(はずな)わけですが、その名も・・・

 

つづく!

ちなみに、さとうささらのCVは水瀬いのりさんらしいです。

 

もしよかったら、チャンネル登録もお願いします!