====== SeikaServer 説明 ======
2018/06/24\\
旧文書を再編集しました。以降メンテナンスされません。
===== 概要 =====
HTTPで発声用テキストを待ち受けし、VOICEROID/CeVIOに発声させるサーバプログラム。HTTPを使ったブリッジみたいなものです。\\
Windows版接続クライアントrechoseika.exeも同梱しています。
===== 注意 =====
このプログラムで公開するサービスは不特定多数に提供するものではありません。個人が利用する範囲内にとどめてください。\\
VOICEROID/CeVIO製品を持っていない人がこのプログラムで公開するサービスを通じてVOICEROID/CeVIOを使用するのはおそらく問題になるでしょう。\\
そのため、Webサーバのように複数リクエストを並列して受付できません。
===== 対応製品と実行例 =====
以下は、各製品毎に rechoseika.exe コマンドで SeikaServer が起動しているIPアドレス 192.168.1.100 のホストに接続し、"おはようございます。涼しい朝ですね。"の音声データを取得、再生しています。
^ VOICEROID ^ 起動方法(起動例) ^
| VOICEROID+ 京町セイカ EX | rechoseika.exe -s 192.68.1.100 おはようございます。涼しい朝ですね。 |
| VOICEROID+ 東北ずん子 | rechoseika.exe -s 192.68.1.100 -cv ZUNKO おはようございます。涼しい朝ですね。 |
| VOICEROID+ 東北ずん子 EX | rechoseika.exe -s 192.68.1.100 -cv ZUNKO_EX おはようございます。涼しい朝ですね。 |
| VOICEROID+ 民安ともえ | rechoseika.exe -s 192.68.1.100 -cv TAMMY おはようございます。涼しい朝ですね。 |
| VOICEROID+ 民安ともえ EX | rechoseika.exe -s 192.68.1.100 -cv TAMMY_EX おはようございます。涼しい朝ですね。 |
| VOICEROID+ 結月ゆかり | rechoseika.exe -s 192.68.1.100 -cv YUKARI おはようございます。涼しい朝ですね。 |
| VOICEROID+ 結月ゆかり EX | rechoseika.exe -s 192.68.1.100 -cv YUKARI_EX おはようございます。涼しい朝ですね。 |
| VOICEROID+ 鷹の爪吉田くん | rechoseika.exe -s 192.68.1.100 -cv YOSHIDA おはようございます。涼しい朝ですね。 |
| VOICEROID+ 琴葉 茜・葵 | rechoseika.exe -s 192.68.1.100 -cv AKANE おはようございます。涼しい朝ですね。 |
| ::: | rechoseika.exe -s 192.68.1.100 -cv AOI おはようございます。涼しい朝ですね。 |
| VOICEROID+ 東北きりたん EX | rechoseika.exe -s 192.68.1.100 -cv KIRITAN おはようございます。涼しい朝ですね。 |
| 音街ウナTalk Ex | rechoseika.exe -s 192.68.1.100 -cv UNA おはようございます。涼しい朝ですね。 |
| VOICEROID+ 鷹の爪 吉田くん EX | rechoseika.exe -s 192.68.1.100 -cv YOSHIDA_EX おはようございます。涼しい朝ですね。 |
| VOICEROID+ 月読アイ EX | rechoseika.exe -s 192.68.1.100 -cv AI_EX おはようございます。涼しい朝ですね。 |
| VOICEROID+ 月読ショウタ EX | rechoseika.exe -s 192.68.1.100 -cv SHOUTA_EX おはようございます。涼しい朝ですね。 |
| VOICEROID+ 水奈瀬コウ EX | rechoseika.exe -s 192.68.1.100 -cv MINASE おはようございます。涼しい朝ですね。 |
^ CeVIO ^ 起動方法(起動例) ^
| CeVIO さとうささら | rechoseika.exe -s 192.68.1.100 -cv SASARA おはようございます。涼しい朝ですね。 |
| CeVIO すずきつづみ | rechoseika.exe -s 192.68.1.100 -cv TSUZUMI おはようございます。涼しい朝ですね。 |
| CeVIO タカハシ | rechoseika.exe -s 192.68.1.100 -cv TAKAHASHI おはようございます。涼しい朝ですね。 |
| CeVIO IA | rechoseika.exe -s 192.68.1.100 -cv IA おはようございます。涼しい朝ですね。 |
| CeVIO ONE | rechoseika.exe -s 192.68.1.100 -cv ONE おはようございます。涼しい朝ですね。 |
^ SAPI ^ 起動方法(起動例) ^
| SAPI話者(最初に見つかった使用可能話者) | rechoseika.exe -s 192.68.1.100 -cv SAPI おはようございます。涼しい朝ですね。 |
===== 使い方 =====
==== seikaServerの起動 ====
先にVOICEROID/CeVIOを起動しておきます。次に、ダウンロードしたアーカイブにある、
* echoSeikAPI.dll
* seikaServer.exe
* index.html
* index.css
* index.js
を同じフォルダに配置ます。例えば E:\seikaserver にコピーします。\\
次に、ワークディレクトリを作成してください。自動作成はしません。例えば E:\SEIKASERVERWORK を作成します。\\
終わったら以下のコマンドを実行します。
E:\seikaserver>start seikaserver E:\SEIKASERVERWORK
コマンドプロンプトの画面が出て、“seikaserver listen start”のメッセージが出たら準備完了です。\\
==== Webブラウザから使う ====
SeikaServer.exe は簡易な操作UIを提供しており、Webブラウザから "http://localhost:7180" にアクセスする事で表示させることができます。
もし SeikaServer.exe を実行しているPCと異なるPCでWebブラウザ表示する場合は、"http://localhost:7180" のlocalhost を SeikaServer.exe を実行しているPCのIPアドレスに書き換えてください。
ACTIONを"発声"から"音声取得"に切り替えると、発声せず発声結果の音声ファイルのダウンロードが始まります。
抑揚、高さ、話速、音量、声質、が適用されないようであれば、製品再設定のため、ACTIONを"リセット"に切り替え初期化を実行してみてください。
音声が再生されるのは製品がインストールされているPCです。Webブラウザを実行しているPCではありません。ACTIONを"音声取得"にしてWAVファイルをダウンロードすることができるので、ダウンロード後にメディアプレイヤー等で再生してください。\\
{{pasted:20230411-190646.png?nolink|WebブラウザでUI表示}}
==== HTTPで制御する ====
HTTPが使えるならcurlコマンドやPerlで制御できます。
* SeikaServer.exe を実行しているPCのIPアドレスが 192.168.1.200 で、Unixを実行しているサーバのIPアドレスが 192.168.1.20 だった場合の例です。
* この例の環境では文字コードにEUC-JPを使っているのでその旨をcurlコマンドやPerlスクリプトへ伝えます。
* 指定するURLのパス最初が“/PLAY”の時は、発声させます。 “/SAVE”の時は、音声ファイルのダウンロードを実行します。
IPアドレスや製品の指定は適宜書き換えしてください。
^ ACTION ^ URL例 ^
^ 琴葉茜で発声 | http://localhost:7180/PLAY/AKANE |
^ 琴葉葵の音声取得 | http://localhost:7180/SAVE/AOI |
^ 京町セイカのリセット | http://localhost:7180/RESET/SEIKA |
=== curlコマンドの例 ===
{{pasted:20230411-190723.png?nolink|Unixコンソールから}}
=== Perlスクリプトの例 ===
発声させた音声データを保存するなら以下の様なコードになるかもしれません。
#!/usr/local/bin/perl
use Encode;
use HTTP::Request::Common;
use LWP;
my $uri = "http://192.168.1.200:7180/SAVE/SEIKA";
my $params = [ SPEED => 1.00, PITCH=> 1.00, VOLUME => 1.00, INTONATION => 1.00, TALKTEXT => decode('euc-jp',$ARGV[0]) ];
my $ua = LWP::UserAgent->new();
my $res = $ua->request( POST($uri, $params) );
print $res->content; # Wavファイルの中身が入っています
引数に発声させたいテキストを指定します。※手抜きです。必ず指定が要ります。
$ perl sample1.pl "駄目駄目な香りがします" > damedame.wav
"/SAVE"でリクエストを行ったので、レスポンスにはWav音声データが含まれています。必要なら引数で保存先ファイル名を指定し、そこに保存できるようにしてください。
すぐローカルで再生したいならこんなコードになるかもしれません。
#!/usr/local/bin/perl
use Encode;
use HTTP::Request::Common;
use LWP;
use Audio::Wav;
my $uri = "http://192.168.1.200:7180/SAVE/SEIKA";
my $params = [ SPEED => 1.00, PITCH=> 1.00, VOLUME => 1.00, INTONATION => 1.00, TALKTEXT => decode('euc-jp',$ARGV[0]) ];
my $ua = LWP::UserAgent->new();
my $res = $ua->request( POST($uri, $params) );
open(SNDDEV, ">/dev/dsp"); # Linux/Unix の環境で異なる
print SNDDEV $res->content;
close(SNDDEV);
引数に発声させたいテキストを指定します。※手抜きです。必ず指定が要ります。
$ perl sample2.pl "とっても駄目駄目な気がします"
直接再生デバイスファイルへWavファイルの内容を流し込んでいます。
Wavファイルのヘッダ部分は雑音になるかもしれません。必要ならヘッダ部分を取り除くコードを追加してください。
またWavファイルの形式に対応していないデバイスなら音声的に悲惨な事になるでしょう。適当な再生ツールにリダイレクトさせるのも方法です。
==== rechoseika.exeコマンドの例 ====
ネットワーク経由で別のPCからSeikaServer.exe を実行しているPCへ接続し、音声データを転送・再生することができます。
E:\seikaserver>rechoseika -h
usage: echoseika [-s host] [[[option1] option2] ... optionN] TalkText
options:
-s host : Hostname or IP address of seikaserver. default is localhost
-p place : place to play. place: remote or local. default is local
-wav wavefile : save voice to wavefile.wav
-cv voiceroid : use product name. default is SEIKA
-volume P : set volume parameter P
-speed P : set speed parameter P
-pitch P : set pitch parameter P
-intonation P : set intonation parameter P
-alpha P : set alpha parameter P
TalkText : text to vocalize
E:\seikaserver>
echoseika.exeとほぼ同じオプションです。異なるオプションの説明は以下になります。
^ オプション ^ 説明 ^
| -s ホスト名 | SeikaServerを実行しているPCのホスト名もしくはIPアドレスを指定します。未指定の場合は localhost を仮定します。 |
| -p 再生場所 | 音声の再生場所を指定します。"remote"はSeikaServerを実行しているPCでの再生、"local"はrechoseika.exeを実行しているPCでの再生です。未指定の場合はlocalを仮定します。 |
| -wav ファイル名 | -p オプションでlocalが指定されている時に有効となります。 |
以下は seikaserver.exe を実行しているPCのIPアドレスが 192.168.1.200 で、rechoseika.exe を実行したPCのIPアドレスが 192.168.1.208 だった場合の例です。
{{pasted:20230411-190831.png?nolink|rechoseika.exeから}}
===== SeikaServerで使用可能なURI =====
seikaserver.exe はポート 7180 でHTTPのPOSTメソッドによるリクエストを待ちます。
Firewallでポート7180番にガードがかかっていたりする場合もあるので注意してください。
音声効果のパラメタ、発声させるテキストはPOSTメソッドのBODYで指定します。"Content-Type: application/x-www-form-urlencoded"でエンコードされている必要があります。\\
※送られてきたデータ、パラメタの解析が面倒なので…
^ メソッド ^ URL(のパス) ^ 例 ^ 説明 ^
| GET | 全パターン | / | どの様なパスが指定されてもWebUIのindex.htmlを返す。 |
| POST | /PLAY/話者 | /PLAY/SEIKA | "/PLAY"でサーバ上での再生を指定。"/話者"で実行する製品の話者を指定。 |
| POST | /SAVE/話者 | /SAVE/TAMMY_EX | "/SAVE"で音声データをレスポンスに含める。"/話者"で音声保存する製品の話者を指定。 |