🗨️
AivisSpeech-Engine を使って音声合成してみた
しゃべらせるまでの作業ログ
AivisSpeech-Engine とは
AivisSpeech Engine は、VOICEVOX ENGINE をベースにした、日本語音声合成エンジンです。
(README.md より)
プロジェクトリポジトリはこちら
ダウンロードして起動
プロジェクトリポジトリの 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 でしゃべらせる部分を実装していたので
これをそのまま利用
呼び出しサンプル
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
やってみました! 最初、めちゃくちゃ野太い声になったのでビックリしましたw 周波数を 24000 から 44100 にしたらそれっぽくなりました。
気づいていただけましたか
実際に手を動かしてもらえて、大変嬉しいです
AivisSpeechのデフォルトサンプリングレートは明記されていませんが
ソースを見ると 44100 Hz になっています
なので Anneli ちゃんの声にするためにはそこを変更する必要があったのです
本当にありがとうございます
メイドと会話できるチャットを作って見ました。こちらの記事が大変参考になりました!あらためて、ありがとうございました。