目次
01.アプリケーション説明
概要
VOICEROID2(64bit), VOICEROID+EX, CeVIO(CS6.1/CS7), CeVIO AI(8.1.5以降), ガイノイドTalk, A.I.VOICE, VOICEVOX, COEIROINK, LMROID, SHAREVOX, ITVOICE, SAPI等の音声合成製品を制御するプログラムAssistantSeikaを作りました。
AssistantSeikaで用意したWCF/HTTPのAPIを経由して音声合成製品の音声発声可能です。
標準で
- コンソール用(コマンドプロンプト用)制御コマンド SeikaSay2.exe
- HTTP機能利用版コンソール用制御コマンド SeikaSay2N.exe
- AssistantSeikaの制御コマンド SeikaCtl.exe
- .NET アセンブリ WCFClient.dll
が同梱されています。自分のプログラムや他のプログラムからの制御をしたい場合の情報は制御インタフェースから確認してください。
02.アプリケーション使用例にいくつか使用例を挙げました。
以下は 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の使用例等は02.アプリケーション使用例を参照してください。
SeikaSay2コマンド、SeikaSay2Nコマンドの説明はSeikaSay2 の説明、SeikaSay2N の説明を参照してください。
Webブラウザから利用可能なWebUIの説明はHTTP機能のWebUI説明を参照してください。
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を利用しています。
スプラッシュスクリーンの画像はコミPo!を使って作成しています。キャラクターは精華町が提供している「京町セイカ」3Dデータ公開の公開モデルを使っています。
参考にしたサイト
また、以下のプロダクト製作者様が公開されているコードは非常に参考になりました。誠にありがとうございます。
- TTSController 各種 Text-to-Speech エンジンを統一的に操作するライブラリです
- VoiceRoid2.vb VOICEROID2を外部から読み上げさせる奴
- VoiCeUtil The support tool for VOICEROID, CeVIO, etc…
ダウンロード
03.ダウンロードを参照してください。
対応OS
2021/06/18
Windows8.1の利用者より、インストールできてしまった報告と、PetitGate32の起動問題が報告されました。
そのためWindows8.1も明示的に動作対象外とさせていただきます。
32bit版OSにはインストールできません。
OS | 確認状況等 |
---|---|
Windows7 | インストールできません |
Windows8 | インストールできません |
Windows8.1 | インストールできてしまいますが機能しません |
Windows10 | 利用者がいらっしゃいます |
Windows11 | 利用者がいらっしゃいます |
その他OS | 特に確認や検証をしているわけではありません。 このような例があります。 * AssistantSeika が WindowsServer 2022で動作しました。参考に * 仮想環境:Parallels ARM Virtual Machine 仮想環境のOS:Windows 11 Home |
作者は Windows 11 Pro(22H2) 64bit で開発・確認を行っています。
対応製品
2024-10-16
現時点では AquesTalkPlayer のサポートは予定しておりません。
利用できる音声合成製品は以下です。前製品のSeikaCenterで使えたものはAssistantSeikaでも利用可能です。
話者にはcidコードを割り当てしています。04.cidの説明で利用可能な話者の詳細を確認できます。
製品 | AssistantSeika状況 | SeikaCenter状況 |
---|---|---|
VOICEROID+ 京町セイカ EX | 動作確認 | 動作確認 |
VOICEROID+ 東北ずん子 | VOICEROID+EXとして認識。未確認 | VOICEROID+EXとして認識。動作確認 |
VOICEROID+ 東北ずん子 EX | 動作確認 | 動作確認 |
VOICEROID+ 民安ともえ EX | 動作確認 | 動作確認 |
VOICEROID+ 結月ゆかり EX | 動作確認 | 動作確認 |
VOICEROID+ 琴葉 茜・葵 | 製品を持っていないので確認できていない | VOICEROID+EXとして認識。動作報告あり |
VOICEROID+ 東北きりたん EX | 製品を持っていないので確認できていない | 動作報告あり |
VOICEROID+ 鷹の爪 吉田くん EX | 2023/12/24 利用者様より動作した旨の情報提供あり | 製品を持っていないので確認できていない |
VOICEROID+ 月読アイ EX | 製品を持っていないので確認できていない | 製品を持っていないので確認できていない |
VOICEROID+ 月読ショウタ EX | 製品を持っていないので確認できていない | 製品を持っていないので確認できていない |
VOICEROID+ 水奈瀬コウ EX | 2023/12/24 利用者様より動作した旨の情報提供あり | 動作報告あり |
音街ウナTalk Ex | VOICEROID+EXとして認識。未確認 | VOICEROID+EXとして認識。動作報告あり |
ギャラ子Talk | VOICEROID+EXとして認識。未確認 | VOICEROID+EXとして認識。動作報告あり |
VOICEROID2(32bit版) | 20240610/cより32bit版サポート削除 | 32bit版で確認 |
VOICEROID2(64bit版) | 動作確認 | - |
ガイノイドTalk | 動作確認 | 動作確認 |
CeVIO CS | Creative Studio 6.1 / 7 で確認 | Creative Studio 6 / 6.1で確認 |
CeVIO AI | 動作確認 8.1.5.0以降 | - |
| | - |
A.I.VOICE(Editor API経由) | Ver 1.4.8.0 で動作確認 | - |
かんたん!AITalk3 | 2話者版、5話者版で動作確認。LITEは対象外。 | - |
かんたん!AITalk5 | 20240617/c より仮対応 | - |
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 で確認 | - |
VOICEVOX | GPUインストーラー版 ver 0.11.4 で確認 | - |
| | - |
COEIROINKv2 | GPU版 ver 2.0.1 で確認 | - |
LMROID | ver 1.1.0 で確認 | - |
SHAREVOX | GPU版 0.1.1 で確認 | - |
ITVOICE | ver 1.0.1 で確認 | - |
VOICEPEAK | Ver 1.2.1 で確認 ※ただし、読み上げまでのラグがあります。 配信等に使うなら事前に問題無いか確かめてください。 | - |
海外版A.I.VOICEの動作について
AssistantSeikaを海外版A.I.VOICE操作で利用しているユーザがいます。
説明によると、琴葉姉妹(English)をインストールしたけど話者の検出に失敗してしまう。日本語版の試用版を導入すると検出可能になったとのことです。
海外版A.I.VOICEで話者を検出できないを参照してください。
音声保存
音声保存に関しては、説明を見ないで使ってクレームを入れられる事が増えたので主たる機能として挙げるのを止めました。機能自体は残してあるので、必要な場合は説明を見て利用してください。
ネットワークアクセス
後から新しい話者を追加できる音声合成製品があります。
今までは新しい話者の追加があるとその話者の情報を追加したプログラムをバージョンアップ版として公開していました。
AssistantSeika20220227/uより、当配布サイトにアクセスして、更新された話者情報をダウンロードして利用するようになりました。
このことでアンチウイルス製品が警告等を発するかもしれません。
音声合成製品の設定
音声合成製品の設定を参照してください。
トラブルシューティング
トラブルシューティングを参照してください。
使用方法
AssistantSeikaの起動
通常の起動
インストール後、デスクトップにできたショートカットもしくはメニューの「AssistantSeika」をクリックしてAssistantSeikaを起動します。以下のようなウインドウが出てきます。
次にAssistantSeikaから制御したい音声合成製品を起動します。
起動出来たら、AssistantSeikaの使用製品タブにある使いたい製品のチェックボックスにチェックを入れ、「製品スキャン」ボタンを押します。話者一覧タブが表示され話者・製品が表示されたら、制御可能な状態です。
話者一覧にある “cid” が「話者」を指定するためのコードになります。
この環境だと、CeVIO7の“さとうささら”は3001、A.I.VOICEの“琴葉茜”は5201 となります。
AssistantSeika 20201123/u より、cidと話者の固定割り当てが行われます。04.cidの説明を参照してください。
バッチ処理から起動
AssistantSeika、なんかbatファイル使って起動すると製品スキャンできなくて落ちるっていうバグあるくさいけどなんだこれ
— 😊🌸🎤残酷なだれか⭐😈👏 (@eva01_yuki) August 20, 2023
バグじゃないし元々はそういう起動方法を最初から考慮していないので、単純にインストールフォルダのAssistantSeika.exeを起動しても動作しません。
こんばんわ。
— いぬいぬGames (@InuInuGames) March 15, 2023
CeVIO AIで試してみましたが、VRM_AI起動時に画像のようなエラーダイアログがでてAssistantSeikaが終了してしまい、音声も再生されません。
もう一度AssistantSeikaを起動するとセリフ再生に成功するようにはなりますが…。 pic.twitter.com/VyzX7KLgat
正規の方法ではなく無理やり終了させたために、子プロセスのいくつかがゾンビ状態になったのでしょう。
ただ、バッチファイルからの起動を試みる人も一定数いるし、自身のアプリ内から無理やりAssistantSeikaを起動・停止する例も確認したので、コマンドを用意しました。
SeikaCtl の説明を参照してください。
使用製品タブ
AssistantSeika起動時に選択されているタブです。制御する製品指定と制御を開始するために使います。
使用する製品
「製品スキャン」ボタンを押されたときに、チェックを入れた製品が起動プロセス中から検索されます。 検索後、話者一覧タブに各製品に登録されている話者が表示されます。
基本設定タブ
発声後、音声効果と感情パラメタを初期化する
チェックを入れると、音声合成製品での発声終了後、変更したパラメタをデフォルト値に戻します。
チェックを外すと、変更したパラメタがそのままになります。
毎回音声再生時に抑揚や感情などのパラメタの指定を行うのは大変です。チェックを外すと前回再生時に指定されたパラメタ設定が初期化されずそのまま残ります。
チェックを外して使用する場合は、利用者が音声効果パラメタ、感情パラメタを管理する必要があります。
音声キャプチャ(音声保存)
AssistantSeikaは音声保存機能を持っています。この機能は指定の再生デバイスで再生されている音声をキャプチャして(録音して)保存します。
ですが音声キャプチャができない環境があるようです。
SeikaSay2 の説明で説明しているSeikaSay2コマンドで音声保存が可能か確認してください。
音声保存ができない場合、振る舞いを許容できるなら「音声保存時に再生デバイスをキャプチャする」のチェックを外して音声合成製品の機能で音声保存を実行させます。
音声保存時に再生デバイスをキャプチャする
チェックを入れると、再生デバイスで再生している音声をキャプチャして保存します。これにより、音声合成製品の保存時のダイアログが表示されることはありません。
コンボボックスにはキャプチャ対象の再生デバイス一覧が表示されています。音声合成製品と同じ再生デバイスを選択してください。
チェックを外すと、音声合成製品自体の保存機能が利用されます。
- 推奨は「チェックを入れる」です。発声させると同時にその音声をキャプチャー(録音)して保存します。
音声合成製品自体の保存機能を使いませんのでダイアログがちらつくことはありません。デメリットとして他のアプリケーションで再生する音声までキャプチャしてしまいます。
キャプチャを行う再生デバイスを、音声合成製品に設定した出力(再生)デバイスに合わせます。あとからヘッドセットを繋いだりすると製品の設定が変わったりするので見直しすることを推奨します。
- 非推奨は「チェックを外す」です。音声合成製品自体の音声保存機能を使う設定です。音声保存時の発声をさせたくない場合に使います。
製品によってはメッセージ表示レベルを“冗長”にする必要があります。音声合成製品の設定を参照してください。
この設定で表示されるダイアログを音声データ出力終了の目印にしています。
また、音声保存を行う際にアンチウイルス製品により動作を中断させられてしまう場合もあります。許可を与えてください。以下はカスペルスキーにより警告が出た例です。
再生デバイス設定
製品のうち、以下の製品はAssistantSeika自身で再生デバイスを指定して制御する必要がありました。
- SAPI
- VOICEVOX
- COEIROINK
- LMROID
- SHAREVOX
- ITVOICE
- VOICEPEAK
上記製品に対してここで再生デバイスを指定します。
基本設定2タブ
まだ利用できません。
HTTP機能設定タブ
HTTP機能で使うパラメタの指定とHTTP機能有効化のために使います。
HTTP機能を利用する
チェックボックスを入れると、「起動する」ボタンが押下できるようになります。
待ち受けアドレス
HTTPのリクエストを受付するアドレスを指定します。
外部に公開しないのであれば localhost にするのが良いかと思います。
待ち受けポート
HTTPのリクエストを受付するポート番号を指定します。
デフォルトは 7180 です。他のアプリケーションと被る場合、ポート番号を変更することができます。
ワークフォルダ
HTTP機能が音声ファイルを加工する際に作業フォルダとして利用します。
ドキュメントルートフォルダ
HTTP機能は簡易Webサーバとしても動作します。
コンテンツは “ドキュメントルートフォルダ” に格納します。
HTMLファイルやJavaScriptファイル、画像、音声ファイルと言った静的コンテンツのみ利用可能です。CGIやスクリプトのサポートはありません。
favicon.icon は“ドキュメントルートフォルダ”の直下に配置してください。
利用するコンテンツのMIMETYPEを増やす場合には、“ドキュメントルートフォルダ”直下に mime.conf ファイルを配置します。このファイルにファイル拡張子とMIMETYPEを定義します。
以下はデフォルトの定義と同等の mime.conf ファイルです。※この例は20240610/c以降
- 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", ".vrma" : "application/octet-stream", ".7z" : "application/x-7z-compressed", ".fbx" : "application/fbx", ".rar" : "application/vnd.rar", ".ogg" : "application/ogg", ".azw" : "application/vnd.amazon.ebook", ".epub" : "application/epub+zip", ".svg" : "image/svg+xml", ".csv" : "text/csv; charset=utf-8", ".aac" : "audio/aac", ".oga" : "audio/ogg", ".ogv" : "video/ogg", ".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と話者の組み合わせが同じになります。04.cidの説明を参照してください。
一覧から話者を選択すると、その話者の利用可能なパラメータとその範囲が表示されます。