アプリケーション開発ポータルサイト
ServerNote.NET
Amazon.co.jpでPC関連商品タイムセール開催中!
カテゴリー【UbuntuHardwarePython
TSUKUMOのマルチGPUパソコンWA9J-X211/XTにUbuntu Server 22.04とVOICEVOX Engineを導入する
POSTED BY
2024-03-26

TSUKUMOのマルチGPUパソコンWA9J-X211/XTにUbuntu Server 20.04.2 LTSを導入する【1】
TSUKUMOのマルチGPUパソコンWA9J-X211/XTにUbuntu Server 20.04.2 LTSを導入する【2】

VOICEBOXはオープンソースの音声合成ソフトウェアであり、NVIDIAのGPUを積んでいるパソコンだとより早く動く(らしい)。
前回まででLinuxであるUbuntuをセットアップしてしまっているので、PythonからAPIを介して合成エンジンを呼びたいと思っていたところ、すでにLinux版が存在するので早速導入してみる。

https://github.com/VOICEVOX/voicevox_engine/releases/tag/0.18.0

上記のページから、Linux + GPU版= voicevox_engine-linux-nvidia-0.18.0.7z.001 を取得する。

wget https://github.com/VOICEVOX/voicevox_engine/releases/download/0.18.0/voicevox_engine-linux-nvidia-0.18.0.7z.001

使用するパッケージをインストール

sudo apt install p7zip-full libsndfile1

解凍

7z x voicevox_engine-linux-nvidia-0.18.0.7z.001

linux-nvidiaへ移動し、runを確認。

cd linux-nvidia
./run --help

起動する。WebからAPIテストをしたいので、cors_policy_modeをallとしている。

./run --host 0.0.0.0 --use_gpu --cors_policy_mode all

コンソールでちゃんと起動に成功し、Web APIのドキュメントにアクセスできればOK。このマシンのIPが172.21.16.39なら、ブラウザから

http://172.21.16.39:50021/docs

と打ってAPIのテストページが出ればOK。

PythonからAPIを呼ぶ

以下のようなコードを書く。

Pythonvoicevox_engine_api_test.pyGitHub Source
import requests
import json

URL = 'http://172.21.16.39:50021/'
TEXT = 'これはテストです。'
SPEAKER = 0
SAVED_FILE = './test.wav'

# make synthesis query

response = requests.post(URL + 'audio_query', params = {'text':TEXT, 'speaker':SPEAKER})
query_data = response.json()
print(query_data)

response = requests.post(URL + 'synthesis', params = {'speaker':SPEAKER, 'enable_interrogative_upspeak':'true'}, data = json.dumps(query_data))
print(response.status_code)
with open(SAVED_FILE, 'wb') as saved_file:
    saved_file.write(response.content)

audio_queryで合成用クエリを作成し、それをsynthesisに渡して合成実行、結果がバイナリWAVで帰るので、ファイルに保存。

python3 voicevox_engine_api_test.py

{'accent_phrases': [{'moras': [{'text': 'コ', 'consonant': 'k', 'consonant_length': 0.07232547551393509, 'vowel': 'o', 'vowel_length': 0.05971287190914154, 'pitch': 5.585086822509766}, {'text': 'レ', 'consonant': 'r', 'consonant_length': 0.03742808848619461, 'vowel': 'e', 'vowel_length': 0.0778321698307991, 'pitch': 5.685544967651367}, {'text': 'ワ', 'consonant': 'w', 'consonant_length': 0.052048780024051666, 'vowel': 'a', 'vowel_length': 0.0848769024014473, 'pitch': 5.816624641418457}], 'accent': 3, 'pause_mora': None, 'is_interrogative': False}, {'moras': [{'text': 'テ', 'consonant': 't', 'consonant_length': 0.061835877597332, 'vowel': 'e', 'vowel_length': 0.0792454406619072, 'pitch': 5.916571617126465}, {'text': 'ス', 'consonant': 's', 'consonant_length': 0.028420621529221535, 'vowel': 'U', 'vowel_length': 0.059678249061107635, 'pitch': 0.0}, {'text': 'ト', 'consonant': 't', 'consonant_length': 0.06472935527563095, 'vowel': 'o', 'vowel_length': 0.0627739205956459, 'pitch': 5.844776630401611}, {'text': 'デ', 'consonant': 'd', 'consonant_length': 0.05031651258468628, 'vowel': 'e', 'vowel_length': 0.0876912847161293, 'pitch': 5.58236837387085}, {'text': 'ス', 'consonant': 's', 'consonant_length': 0.07036545127630234, 'vowel': 'U', 'vowel_length': 0.11378927528858185, 'pitch': 0.0}], 'accent': 1, 'pause_mora': None, 'is_interrogative': False}], 'speedScale': 1.0, 'pitchScale': 0.0, 'intonationScale': 1.0, 'volumeScale': 1.0, 'prePhonemeLength': 0.1, 'postPhonemeLength': 0.1, 'outputSamplingRate': 24000, 'outputStereo': False, 'kana': "コレワ'/テ'_ストデ_ス"}
200

カレントにtest.wavができていて、つくよみちゃんの声で再生されれば成功。

※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
【WEBMASTER/管理人】
自営業プログラマーです。お仕事ください!
ご連絡は以下アドレスまでお願いします★

☆ServerNote.NETショッピング↓
ShoppingNote / Amazon.co.jp
☆お仲間ブログ↓
一人社長の不動産業務日誌
【キーワード検索】