🗨️

AivisSpeech-Engine を使って音声合成してみた

2024/11/21に公開

しゃべらせるまでの作業ログ

AivisSpeech-Engine とは

https://aivis-project.com/

AivisSpeech Engine は、VOICEVOX ENGINE をベースにした、日本語音声合成エンジンです。
(README.md より)

プロジェクトリポジトリはこちら
https://github.com/Aivis-Project/AivisSpeech-Engine

ダウンロードして起動

プロジェクトリポジトリの releases から PC のアーキテクチャに合ったものをダウンロードして解凍して起動

PS> .\run.exe --host=0.0.0.0 --use_gpu

このあたりは VOICEVOX と同じなので、非常に簡単

起動するとデフォルトの音声モデルが含まれていないので自動ダウンロードされる(約 1.3GB)

[2024/11/21 08:26:12] INFO:     Started server process [34364]
[2024/11/21 08:26:12] INFO:     Waiting for application startup.
[2024/11/21 08:26:12] INFO:     Application startup complete.
[2024/11/21 08:26:12] INFO:     Uvicorn running on http://0.0.0.0:10101 (Press CTRL+C to quit)

uvicorn の listen 開始メッセージがログに出れば起動完了

承前

すでに VOICEVOX API でしゃべらせる部分を実装していたので

https://github.com/sharl/amedas/blob/af450eae03d13ce49a8dbb1367b8cb4191dca095/vvox.py

これをそのまま利用

呼び出しサンプル

sample.py
# -*- coding: utf-8 -*-
import sys
import io

from vvox import vvox


if __name__ == '__main__':
    sys.stdin = io.TextIOWrapper(sys.stdin.buffer, encoding='utf-8')

    if not sys.stdin.isatty():
        text = sys.stdin.read().strip()
    else:
        text = '\n'.join(sys.argv[1:])

    vvox(text)

しゃべらせる前に話者 ID を確認

VOICEVOX API と同様に確認できる

PS> curl -s localhost:10101/speakers | jq .
[
  {
    "name": "Anneli",
    "speaker_uuid": "e756b8e4-b606-4e15-99b1-3f9c6a1b2317",
    "styles": [
      {
        "name": "ノーマル",
        "id": 888753760,
        "type": "talk"
      },
      {
        "name": "通常",
        "id": 888753761,
        "type": "talk"
      },
      {
        "name": "テンション高め",
        "id": 888753762,
        "type": "talk"
      },
      {
        "name": "落ち着き",
        "id": 888753763,
        "type": "talk"
      },
      {
        "name": "上機嫌",
        "id": 888753764,
        "type": "talk"
      },
      {
        "name": "怒り・悲しみ",
        "id": 888753765,
        "type": "talk"
      }
    ],
    "version": "1.0.0",
    "supported_features": {
      "permitted_synthesis_morphing": "NOTHING"
    }
  }
]

サンプルコードにポートと話者IDを指定して実行

-    vvox(text)
+    vvox(text, port=10101, speaker=888753761)
PS> echo おはようなのだ | python sample.py

と、しゃべらせるだけなら非常に簡単 👍

Enjoy!!

Discussion