Skip to content

32bit バイナリでしか動かなかった旧ライセンス版 AquesTalk を外部プロセスで実行することで利用できるようにする

License

Notifications You must be signed in to change notification settings

Na-x4/aquestalk-proxy

Repository files navigation

AquesTalk-proxy

32bit バイナリでしか動かなかった旧ライセンス版 AquesTalk を外部プロセスで実行することで利用できるようにするプログラム。 インターフェースに標準入出力または TCP ソケットを使用することができる。

AquesTalk のライセンス変更については公式ブログを参照してください。

How To Use

Windows

リリースページから zip ファイルをダウンロードして解凍

> chcp 65001
> echo {"koe":"こんにちわ、せ'かい"} | aquestalk-proxy.exe
{"isSuccess":true,"response":{"type":"Wav","wav":"UklGRoxd...AA=="},"request":{"koe":"こんにちわ、せ'かい"}}

Protocol

AquesTalk-proxy はシンプルな JSON ストリーミングプロトコルです。 Request メッセージを送信すると、Response メッセージで応答します。 応答は改行 (\n: LF) 区切りで 1 行が 1 つのメッセージに対応します。

Response.willClosetrue ではない間、何度でも Request メッセージを送信できます。 リクエストの間に区切り文字は必要ありません。

Response.willClosetrue を返した場合は回復不能なエラーが発生しています。 TCP モードの場合はサーバー側の接続がクローズするため、再接続が必要になります。 標準入出力モードの場合にはプロセスが終了します。再度実行してください。

Message

TypeScript での定義

interface Request {
  type?: string; // 声種 デフォルト: f1
  koe: string; // 音声記号列
  speed?: number; // 発話速度[%] 50-300 の間で指定 デフォルト: 100 値を大きく設定するほど、速くなる
}

interface Response {
  isSuccess: boolean; // true -> リクエストの結果が成功
  willClose?: boolean; // true -> 続けて新たなリクエストを受付不可
  response:
    | {
        type: "Wav"; // -> WAV データ
        wav: string; // Base64 エンコードされた WAV データ
      }
    | {
        type: "AquestalkError"; // -> AquesTalk ライブラリ内エラー
        code?: number; // エラーコード (AquesTalk ライブラリ内でエラーが発生した場合)
        message: string; // エラーメッセージ
      }
    | {
        type: "JsonError"; // -> JSON 構文エラーまたは型エラー
        message: string; // エラーメッセージ
      }
    | {
        type: "IoError"; // -> 入出力エラー
        message: string; // エラーメッセージ
      };
  request?: any; // 対応するリクエスト (JSON 構文エラーまたは入出力エラーが発生しなかった場合)
}

Options

aquestalk-proxyd.exe [OPTIONS] [MODE]
オプション 説明 デフォルト
-p, --path PATH AquesTalk ライブラリのディレクトリパスを指定 -p カレントディレクトリ/aquestalk

AquesTalk ライブラリのディレクトリ構成は以下のようにする

aquestalk/
  +- [声種1]/
  |    +- AqLicense.txt
  |    +- AquesTalk.dll
  |    +- AquesTalkDa.dll
  +- [声種2]/
  |    +- AqLicense.txt
  |    +- AquesTalk.dll
  |    +- AquesTalkDa.dll
  ⋮
モード 説明
tcp TCP ソケットモード
stdio 標準入出力モード (デフォルト)

Standard IO Mode (標準入出力モード)

aquestalk-proxyd.exe stdio [OPTIONS]

オプションなし

TCP Socket Mode (TCP ソケットモード)

aquestalk-proxyd.exe tcp [OPTIONS]
オプション 説明 デフォルト
-l, --listen ADDR 待ち受けするアドレスとポートを指定する。複数指定可能。 -l 127.0.0.1:21569 -l [::1]:21569
-n, --threads NUM リクエストを処理するスレッド数を指定。同時に処理可能なリクエスト数となる。 -n 1
--timeout MILLIS タイムアウトするまでの時間 (ms) を指定する。前回の要求から指定した時間要求が無い場合接続をクローズする。 指定なし
--limit BYTES 1 回の接続で可能な要求の長さを指定する。 指定なし

Develop

i686-pc-windows-gnu をターゲットとしてビルドできるように Rust をセットアップする。

$ git clone https://github.com/Na-x4/aquestalk-proxy.git
$ cd aquestalk-proxy
$ ./scripts/extract-aqtk.sh
$ cargo run --target=i686-pc-windows-gnu -p aquestalk-proxyd --release -- tcp &
$ cargo test --target=i686-pc-windows-gnu

Licence

lib ディレクトリ以下のソースコードは MIT license と Apache License (Version 2.0) のデュアルライセンスの下で頒布されています。 それ以外のソースコードは GNU Affero General Public License の下で頒布されています。

本プログラムは、株式会社アクエストの規則音声合成ライブラリ「AquesTalk」を使用しています。 aquestalk ディレクトリ以下のファイル、及び aqtk_mv_20090609.zip ファイルの著作権は同社に帰属します。 詳細は AqLicense.txt をご覧ください。

aquestalk-proxyd で使用している OSS は以下の通りです。

Name License Author(s)
base64 0.22.1 Apache-2.0 OR MIT
cfg-if 1.0.0 Apache-2.0 OR MIT
encoding_rs 0.8.35 (Apache-2.0 OR MIT) AND BSD-3-Clause
  • Mozilla Foundation
getopts 0.2.21 Apache-2.0 OR MIT
  • The Rust Project Developers
hermit-abi 0.3.9 Apache-2.0 OR MIT
  • Stefan Lankes
itoa 1.0.14 Apache-2.0 OR MIT
libc 0.2.169 Apache-2.0 OR MIT
  • The Rust Project Developers
libloading 0.8.6 ISC
memchr 2.7.4 MIT OR Unlicense
num_cpus 1.16.0 Apache-2.0 OR MIT
optional_take 0.1.0 Apache-2.0 OR MIT
proc-macro2 1.0.93 Apache-2.0 OR MIT
quote 1.0.38 Apache-2.0 OR MIT
ryu 1.0.19 Apache-2.0 OR BSL-1.0
serde 1.0.217 Apache-2.0 OR MIT
serde_derive 1.0.217 Apache-2.0 OR MIT
serde_json 1.0.138 Apache-2.0 OR MIT
syn 2.0.98 Apache-2.0 OR MIT
threadpool 1.8.1 Apache-2.0 OR MIT
unicode-ident 1.0.16 (MIT OR Apache-2.0) AND Unicode-3.0
unicode-width 0.1.14 Apache-2.0 OR MIT
whatwg/encoding CC BY 4.0, BSD-3-Clause
  • WHATWG (Apple, Google, Mozilla, Microsoft)
windows-targets 0.52.6 Apache-2.0 OR MIT
  • Microsoft

About

32bit バイナリでしか動かなかった旧ライセンス版 AquesTalk を外部プロセスで実行することで利用できるようにする

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published