Skip to content

Lqm1/aquestalk-server

Repository files navigation

AquesTalk TTS API サーバー (OpenAI Compatible)

このリポジトリは、AquesTalk (旧ライセンス) の動的ライブラリ (DLL) を呼び出して、日本語音声合成を提供するHTTP APIサーバーを実装したものです。APIはOpenAIの音声合成APIに互換しており、主に「ゆっくりボイス」の音声を生成します。

特徴

  • 超軽量な日本語音声合成: AquesTalk (旧ライセンス) を利用した日本語音声合成。
  • 営利利用可: 旧ライセンス版を使用することで、営利事業であってもライセンス使用料を支払う必要はありません。
  • OpenAI互換API: OpenAIクライアントライブラリで利用可能な音声合成API。

使用上の注意

  • プラットフォーム制限: AquesTalkはWindowsプラットフォーム専用で、提供されるDLLおよび実行ファイルもWindows専用です。Wine等を用いて他のプラットフォームで使用することはライセンス違反となります。
  • ライセンス: 本プロジェクトはGPL 3.0ライセンスの下で提供されます。AquesTalkの使用にはAqLicense.txtを読み、ライセンスに従ってください。

インストール方法

  1. リリースからEXEをダウンロード
    リリースページからWindows用の実行ファイル (.exe) をダウンロードしてください。

  2. EXEを実行
    ダウンロードした実行ファイルを起動すると、APIサーバーがポート8080で起動します。

  3. APIの利用
    APIサーバーが起動したら、OpenAIクライアントライブラリを使用して音声合成APIを呼び出すことができます。

APIエンドポイント

  • POST /v1/audio/speech

    音声合成を行うエンドポイントです。

リクエスト例 (curl)

curl http://localhost:8080/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{
    "model": "tts-1",
    "input": "今日はいい天気ですね。",
    "voice": "f1",
    "response_format": "wav",
    "speed": 1.0
  }' \
  --output speech.wav

パラメータ

  • model (string): 固定値 tts-1tts-1-hd は使用できません。
  • voice (string): 使用する音声の種類。dvd, f1, f2, imd1, jgr, m1, m2, r1 のいずれか。
  • input (string): 合成するテキスト。
  • response_format (string): 固定値 wav。それ以外はエラーとなります。
  • speed (float): 音声の速度。0.5から3.0の間の値で指定します。

内部テキスト変換処理

AquesTalkは独自の音声記号列を入力として受け付ける仕様となっています。そのため、本APIでは、漢字、数字、英語が混在する通常の文章を、AquesTalkが認識可能な音声記号列に変換する処理を実装しています。具体的な変換手順は以下の通りです。

  1. 形態素解析
    入力テキストは、独自のKoeConvと呼ばれるライブラリを用いて解析されます。内部では、kagomeとUniDicを利用した形態素解析により、各単語の品詞や読みが抽出されます。

  2. 発音変換
    抽出された情報を基に、漢字、英語、数字などが適切な発音(読み)に変換されます。これにより、自然な発音が実現されます。

  3. AquesTalkタグの変換
    また、数字の桁読み等に対応するために、AquesTalk独自の音声記号列(タグ)を用いて数値を「ななせんななひゃくななじゅうなな」のように桁読みすることを可能とします。

この一連の処理により、ユーザーは通常の文章を入力するだけで、AquesTalkが要求する音声記号列へと自動変換され、スムーズな音声合成が可能となります。 句切記号は上記のテキスト処理変換をパスするため、通常通り使用可能です。

サンプルコード (Python)

以下のサンプルコードでは、OpenAIクライアントライブラリを使ってAPIを呼び出します。

from openai import OpenAI

client = OpenAI(api_key="a", base_url="http://localhost:8080/v1")
response = client.audio.speech.create(
    model="tts-1",
    voice="f1",
    input="吾輩は猫である。名前はまだ無い。\nどこで生れたかとんと見当がつかぬ。何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。吾輩はここで始めて人間というものを見た。しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。この書生というのは時々我々を捕えて煮て食うという話である。しかしその当時は何という考もなかったから別段恐しいとも思わなかった。ただ彼の掌に載せられてスーと持ち上げられた時何だかフワフワした感じがあったばかりである。掌の上で少し落ちついて書生の顔を見たのがいわゆる人間というものの見始であろう。この時妙なものだと思った感じが今でも残っている。第一毛をもって装飾されべきはずの顔がつるつるしてまるで薬缶だ。その後猫にもだいぶ逢ったがこんな片輪には一度も出会わした事がない。のみならず顔の真中があまりに突起している。そうしてその穴の中から時々ぷうぷうと煙を吹く。どうも咽せぽくて実に弱った。これが人間の飲む煙草というものである事はようやくこの頃知った。",
)

免責事項

  • 本プロジェクトは、AquesTalkのライセンスに基づき、Windowsプラットフォームでのみ使用可能です。他のプラットフォームで使用した場合、ライセンス違反となり、その責任はユーザーにあります。
  • 本リポジトリの開発者は、ライセンス違反に対して一切の責任を負いません。

ライセンス

本プロジェクトはGPL 3.0ライセンスの下で提供されています。AquesTalk (旧ライセンス版) を使用する際には、AqLicense.txtを必ず確認し、ライセンスに従ってください。

参考リンク

About

AquesTalk (旧ライセンス) を呼び出せるHTTP API

Resources

License

Stars

Watchers

Forks

Packages

No packages published