努力したWiki

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

ユーザ用ツール

サイト用ツール


documents:voiceroid:assistantseika:assistantseika-000

AssistantSeika の説明

概要

VOICEROID2(32/64bit)、VOICEROID+EX、CeVIO(CS6.1/CS7)、CeVIO AI(8.1.5以降)、ガイノイドTalk、A.I.VOICE、SAPI等の音声合成製品を制御するプログラムAssistantSeikaを作りました。
AssistantSeikaで用意したWCF/HTTPのAPIを経由して音声合成製品の音声発声、音声保存が可能です。

標準で

  • コンソール用(コマンドプロンプト用)制御コマンド SeikaSay2.exe
  • HTTP機能利用版コンソール用制御コマンド SeikaSay2N.exe
  • 音声認識結果を発声させるサンプルアプリケーション Fakeささらさん

が同梱されています。自分のプログラムや他のプログラムからの制御をしたい場合の情報は制御インタフェースから確認してください。
AssistantSeika の使用例にいくつか使用例を挙げました。

以下は SeikaSay2.exe でVOICEROID2とA.I.VOICEを制御している例です。

demo.bat
@echo on
cls
 
SeikaSay2 -cid 2001 -async -vol 1.5 -emotion 喜び 2.0  -t "琴葉茜ですー!"
SeikaSay2 -cid 5201 -async -vol 1.5 -emotion 喜び 2.0  -t "琴葉茜ですー!"
SeikaSay2 -cid 2002 -async -vol 1.5                    -t "琴葉葵です!"
SeikaSay2 -cid 5203 -async -vol 1.5                    -t "琴葉葵です!"
SeikaSay2 -cid 2050 -sw 3 -speed 1.3 -t "ご視聴、誠にありがとうございます。"
SeikaSay2 -cid 2050 -speed 1.3 -t "A.I.VOICE発売と同時にAssistantSeikaも対応させてた製作者ですが"
SeikaSay2 -cid 2050 -speed 1.3 -t "非同期実行の不具合に色々気付いて修正しました。"
 
SeikaSay2 -cid 5202 -t "ロリ茜もちゃんとおるからな!"
SeikaSay2 -cid 5202 -t "兄ちゃん姉ちゃんたち、ちゃんと可愛がれよー"
SeikaSay2 -cid 5204 -t "何言ってるかよくわからないよお姉ちゃん!"
 
SeikaSay2 -cid 2002 -reset
SeikaSay2 -cid 2002 -async -emotion 喜び 2.0 -t "ナニこの子たち可愛い!"
SeikaSay2 -cid 5204 -speed 2.0 -speed 1.3 -t "お姉ちゃんなんか怖いよ!助けてぇー"
SeikaSay2 -cid 2001 -reset
SeikaSay2 -cid 2001 -async -emotion 喜び 1.5 -t "えっへっへっへっへっぐふふふふふふうふ"
SeikaSay2 -cid 5201 -reset
SeikaSay2 -cid 5201 -speed 1.5 -t "大丈夫、製品が違うから襲われることは無いで"
 
SeikaSay2 -cid 5203 -reset
SeikaSay2 -cid 5203 -t "危ないのはずん子さんだけじゃなかったのね…"
SeikaSay2 -cid 2053 -t "ずんだー?"
SeikaSay2 -cid 2010 -async -t "ウナは安全だよー えへへ!"
SeikaSay2 -cid 5203 -async -emotion 喜び 2.0 -t "やばい!ウナちゃん可愛いどうしようお姉ちゃん!"
SeikaSay2 -cid 5201 -async -speed 1.5 -t "葵も同類やった…"
 
SeikaSay2 -cid 2052 -sw 2 -t "以上で茶番を終わります。"
SeikaSay2 -cid 2052 -t "ご視聴、誠にありがとうございました。"


AssistantSeikaの使用例等はAssistantSeika の使用例を参照してください。
SeikaSay2コマンド、SeikaSay2Nコマンドの説明はSeikaSay2 の説明SeikaSay2N の説明を参照してください。
Webブラウザから利用可能なWebUIの説明はHTTP機能のWebUI説明を参照してください。
音声認識結果を発声させるサンプルアプリケーションの説明は音声認識結果を読み上げするアプリケーション を参照してください。

SeikaSay2 Command Line I/F *WCF Client WCF Service PetitGate32 Your Application *WCF Client SeikaSay2N Command Line I/F *HTTP Client TinySeikaServer Your Application *HTTP Client PetitGate64 NAudio net.pipe://localhost/EchoSeika/CentralGate/ApiEntry AssistantSeika 32bit TTS Products .NET Framework 4.7.2 or Later * HTTP Access Port:7180 64bit TTS Products use CoreAudio interface(audio capture) AssistantSeika Server Service. SeikaSay2 CLI Client. SeikaSay2N CLI Client. TinySeikaServer HTTP Gateway. (REST API Access) PetitGate32 32bit Platform Gateway. PetitGate64 64bit Platform Gateway.

AssistantSeikaはWCF,HTTP,のいずれかで外部から指示を受け音声合成製品を操作します。 同梱されているSeikaSay2コマンドはWCF、SeikaSay2NコマンドはHTTP、に対応しています。

AssistantSeikaはWPFで作られています。スケーリングの問題でウインドウサイズがスクリーンによりまちまちとなってしまう問題はこれで避けられるかな、と思います。

製品制御プロセス2個、Web制御プロセス1個、の合計3プロセスを子プロセスとして立ち上げています。
32bit版製品制御担当プロセスと、64bit版製品制御担当プロセスを立ち上げ、このプロセスと通信をする事でプラットフォームの境界を越えています。CeVIO7(64bit版製品)を制御するために必要でした。
Web制御プロセス(TinySeikaServer)はSeikaCenterからの移植です。

利用しているサードパーティ製品

株式会社Codeer(コーディア)の提供する無償のライブラリFriendlyを利用しています。
CeVIOの提供する外部連携インターフェース(CeVIO CS)を利用しています。※製品を持っていないと使えません
CeVIOの提供する外部連携インターフェース(CeVIO AI)を利用しています。※製品を持っていないと使えません
.NETで音声を扱うライブラリNAudioを利用しています。
WPFアプリケーションをタスクトレイ(通知領域)へ格納する機能のためにHardcodet.NotifyIcon.Wpfを利用しています。
棒読みちゃんへ接続するために配布アーカイブに含まれるサンプルソースコードBouyomiChanClient.csを利用しています。

参考にしたサイト

また、以下のプロダクト製作者様が公開されているコードは非常に参考になりました。誠にありがとうございます。

  • TTSController 各種 Text-to-Speech エンジンを統一的に操作するライブラリです
  • VoiceRoid2.vb VOICEROID2を外部から読み上げさせる奴
  • VoiCeUtil The support tool for VOICEROID, CeVIO, etc…

対応OS

作者は Windows 10 Pro(20H2) 64bit で開発・確認を行っています。32bit版OSにはインストールできません。
Windows7, Windows8へのインストールはできません。 Windows8.1へはインストールできてしまいますが機能しません。

その他のOSについては、特に確認や検証をしているわけではありません。利用できるか否かはご自身でお試しください。

2021/06/18
Windows8.1の利用者より、インストールできた報告と、PetitGate32の起動問題が報告されました。
そのためWindows8.1も明示的に動作対象外とさせていただきます。

対応製品

利用できる音声合成製品は以下です。前製品のSeikaCenterで使えたものはAssistantSeikaでも利用可能です。
話者にはcidコードを割り当てしています。製品話者とcidの紐づけの説明で利用可能な話者の詳細を確認できます。

製品 AssistantSeika状況 SeikaCenter状況
VOICEROID+ 京町セイカ EX 動作確認 動作確認
VOICEROID+ 東北ずん子 VOICEROID+EXとして認識。未確認 VOICEROID+EXとして認識。動作確認
VOICEROID+ 東北ずん子 EX 動作確認 動作確認
VOICEROID+ 民安ともえ EX 動作確認 動作確認
VOICEROID+ 結月ゆかり EX 動作確認 動作確認
VOICEROID+ 琴葉 茜・葵 製品を持っていないので確認できていない VOICEROID+EXとして認識。動作報告あり
VOICEROID+ 東北きりたん EX 製品を持っていないので確認できていない 動作報告あり
VOICEROID+ 鷹の爪 吉田くん EX 製品を持っていないので確認できていない 製品を持っていないので確認できていない
VOICEROID+ 月読アイ EX 製品を持っていないので確認できていない 製品を持っていないので確認できていない
VOICEROID+ 月読ショウタ EX 製品を持っていないので確認できていない 製品を持っていないので確認できていない
VOICEROID+ 水奈瀬コウ EX 製品を持っていないので確認できていない 動作報告あり
音街ウナTalk Ex VOICEROID+EXとして認識。未確認 VOICEROID+EXとして認識。動作報告あり
ギャラ子Talk VOICEROID+EXとして認識。未確認 VOICEROID+EXとして認識。動作報告あり
VOICEROID2 32/64bit版で確認 32bit版で確認
ガイノイドTalk 動作確認 動作確認
CeVIO Creative Studio 6.1 / 7 で確認 Creative Studio 6 / 6.1で確認
CeVIO AI 動作確認 8.1.5.0以降 -
A.I.VOICE 動作確認 -
かんたん! AITalk3 2話者版、5話者版で動作確認 -
SAPI 32/64bit版で確認 32bit版で確認
棒読みちゃん Ver 0.1.10.0 で確認 Ver 0.1.10.0 で確認
棒読みちゃんβ版 Ver 0.1.11.0 beta21 で確認 -
SofTalk .NET版 Ver 1.93.47 で確認 -

音声合成製品の設定

音声合成製品の設定を参照してください。

使用方法

AssistantSeikaの起動

インストール後、デスクトップにできたショートカットもしくはメニューの「AssistantSeika」をクリックしてAssistantSeikaを起動します。以下のようなウインドウが出てきます。

次にAssistantSeikaから制御したい音声合成製品を起動します。
起動出来たら、AssistantSeikaの使用製品タブにある使いたい製品のチェックボックスにチェックを入れ、「製品スキャン」ボタンを押します。話者一覧タブが表示され話者・製品が表示されたら、制御可能な状態です。

話者一覧にある “cid” が「話者」を指定するためのコードになります。
この環境だと、CeVIO7の“さとうささら”は3001、A.I.VOICEの“琴葉茜”は5201 となります。

AssistantSeika 20201123/u より、cidと話者の固定割り当てが行われます。製品話者とcidの紐づけの説明を参照してください。

使用製品タブ

AssistantSeika起動時に選択されているタブです。制御する製品指定と制御を開始するために使います。

使用する製品

「製品スキャン」ボタンを押されたときに、チェックを入れた製品が起動プロセス中から検索されます。 検索後、話者一覧タブに各製品に登録されている話者が表示されます。

基本設定タブ

音声キャプチャ(音声保存)

AssistantSeikaは音声保存機能を持っています。この機能は指定の再生デバイスで再生されている音声をキャプチャして(録音して)保存します。
ですが音声キャプチャができない環境があるようです。

SeikaSay2 の説明で説明しているSeikaSay2コマンドで音声保存が可能か確認してください。
音声保存ができない場合、振る舞いを許容できるなら「音声保存時に再生デバイスをキャプチャする」のチェックを外して音声合成製品の機能で音声保存を実行させます。

音声保存時に再生デバイスをキャプチャする

チェックを入れると、再生デバイスで再生している音声をキャプチャして保存します。これにより、音声合成製品の保存時のダイアログが表示されることはありません。
コンボボックスにはキャプチャ対象の再生デバイス一覧が表示されています。音声合成製品と同じ再生デバイスを選択してください。

チェックを外すと、音声合成製品自体の保存機能が利用されます。

  • 推奨は「チェックを入れる」です。発声させると同時にその音声をキャプチャー(録音)して保存します。
    音声合成製品自体の保存機能を使いませんのでダイアログがちらつくことはありません。デメリットとして他のアプリケーションで再生する音声までキャプチャしてしまいます。
    キャプチャを行う再生デバイスを、音声合成製品に設定した出力(再生)デバイスに合わせます。あとからヘッドセットを繋いだりすると製品の設定が変わったりするので見直しすることを推奨します。

  • 非推奨は「チェックを外す」です。音声合成製品自体の音声保存機能を使う設定です。音声保存時の発声をさせたくない場合に使います。
    製品によってはメッセージ表示レベルを“冗長”にする必要があります。音声合成製品の設定を参照してください。
    この設定で表示されるダイアログを音声データ出力終了の目印にしています。

また、音声保存を行う際にアンチウイルス製品により動作を中断させられてしまう場合もあります。許可を与えてください。以下はカスペルスキーにより警告が出た例です。

発声後、音声効果と感情パラメタを初期化する

チェックを入れると、音声合成製品での発声終了後、変更したパラメタをデフォルト値に戻します。
チェックを外すと、変更したパラメタがそのままになります。

毎回音声再生時に抑揚や感情などのパラメタの指定を行うのは大変です。チェックを外すと前回再生時に指定されたパラメタ設定が初期化されずそのまま残ります。

チェックを外して使用する場合は、利用者が音声効果パラメタ、感情パラメタを管理する必要があります。

SAPI

SAPIを利用する際の再生デバイスを指定します。

HTTP機能設定タブ

HTTP機能で使うパラメタの指定とHTTP機能有効化のために使います。

HTTP機能を利用する

チェックボックスを入れると、「起動する」ボタンが押下できるようになります。

待ち受けアドレス

HTTPのリクエストを受付するアドレスを指定します。

外部に公開しないのであれば localhost にするのが良いかと思います。

待ち受けポート

HTTPのリクエストを受付するポート番号を指定します。

デフォルトは 7180 です。他のアプリケーションと被る場合、ポート番号を変更することができます。

ワークフォルダ

HTTP機能が音声ファイルを加工する際に作業フォルダとして利用します。

ドキュメントルートフォルダ

HTTP機能は簡易Webサーバとしても動作します。
コンテンツは “ドキュメントルートフォルダ” に格納します。 HTMLファイルやJavaScriptファイル、画像、音声ファイルと言った静的コンテンツのみ利用可能です。CGIやスクリプトのサポートはありません。
favicon.icon は“ドキュメントルートフォルダ”の直下に配置してください。

利用するコンテンツのMIMETYPEを増やす場合には、“ドキュメントルートフォルダ”直下に mime.conf ファイルを配置します。このファイルにファイル拡張子とMIMETYPEを定義します。
以下はデフォルトの定義と同等の mime.conf ファイルです。

mime.conf
{
  "Contents":{
    ".html" : "text/html; charset=utf-8",
    ".css"  : "text/css; charset=utf-8",
    ".js"   : "text/javascript; charset=utf-8",
    ".json" : "application/json; charset=utf-8",
    ".xml"  : "application/xml; charset=utf-8",
    ".jpg"  : "image/jpeg",
    ".png"  : "image/png",
    ".gif"  : "image/gif",
    ".wav"  : "audio/wav",
    ".mp3"  : "audio/mp3",
    ".mp4"  : "video/mp4",
    ".mpg"  : "video/mpeg",
    ".mpeg" : "video/mpeg",
    ".webm" : "video/webm",
    ".zip"  : "application/zip",
    ".vrm" : "application/vrm",
    ".ico"  : "image/x-icon"
  }
}

CORSヘッダ

WebブラウザのJavaScriptでHTTP機能にアクセスする際必要となるHTTPヘッダをレスポンスに含めます。

Access-Control-Allow-Origin

HTTP機能が接続を許可するホストのURLを設定します。Webブラウザからスクリプトで接続する場合はここで許可を与える必要があります。

Access-Control-Allow-Header

デフォルトのままでも問題ないかと思います。

ユーザID

HTTP機能では利用に際してBASIC認証を必要としています。BASIC認証で使うユーザIDを指定します。

パスワード

HTTP機能では利用に際してBASIC認証を必要としています。BASIC認証で使うパスワードを指定します。

話者一覧タブ

利用可能な(製品の)話者が表示されます。
話者には番号 cid が割り振られます。これは利用環境により異なります。

AssistantSeika 20201123/u より、cidの固定割り当てが実施され、利用環境が異なってもcidと話者の組み合わせが同じになります。製品話者とcidの紐づけの説明を参照してください。

一覧から話者を選択すると、その話者の利用可能なパラメータとその範囲が表示されます。


documents/voiceroid/assistantseika/assistantseika-000.txt · 最終更新: 2021/06/30 11:34 by k896951