-
Notifications
You must be signed in to change notification settings - Fork 128
Closed
Description
不具合の内容
エンジン側で発覚し、コアで測定した結果どうやらコアの時点で遅いっぽいことがわかりました。
現象・ログ
0.14.0のコア(wheel)で、CPU/GPUで2回ずつ計測
CPU
Total time: 8.854429006576538 seconds
GPU
Total time: 7.63310980796814 seconds
CPU
Total time: 11.323852300643921 seconds
GPU
Total time: 7.5207672119140625 seconds
0.13.3を用いた場合、(エンジン経由で)2秒で完了したのでおそらく0.14で遅くなったのかなと思っています。
再現手順
0.14.0のDirectML版で実行してみる
VOICEVOXのバージョン
0.14.0
OSの種類/ディストリ/バージョン
- Windows
- macOS
- Linux
その他
検証コード(wheel版をインストールしました)
import dataclasses
import json
import logging
import time
from argparse import ArgumentParser
from pathlib import Path
from typing import Tuple
import voicevox_core
from voicevox_core import AccelerationMode, AudioQuery, VoicevoxCore
SPEAKER_ID = 0
def tts(core, text: str):
audio_query = core.audio_query(text, SPEAKER_ID)
wav = core.synthesis(audio_query, SPEAKER_ID)
return wav
def main() -> None:
logging.basicConfig(
format="[%(levelname)s] %(filename)s: %(message)s", level="DEBUG"
)
logger = logging.getLogger(__name__)
(acceleration_mode, open_jtalk_dict_dir, text, out) = parse_args()
core = VoicevoxCore(
acceleration_mode=acceleration_mode, open_jtalk_dict_dir=open_jtalk_dict_dir
)
core.load_model(SPEAKER_ID)
tts(core, "テスト実行")
start_second = time.time()
for i in range(10):
wav = tts(core, text)
end_second = time.time()
logger.info("%s", f"Total time: {end_second - start_second} seconds")
def parse_args() -> Tuple[AccelerationMode, Path, str, Path]:
argparser = ArgumentParser()
argparser.add_argument(
"--mode",
default="AUTO",
type=AccelerationMode,
help='モード ("AUTO", "CPU", "GPU")',
)
argparser.add_argument(
"--open_jtalk_dict_dir",
type=Path,
default="voicevox_core/open_jtalk_dic_utf_8-1.11/",
help="Open JTalkの辞書ディレクトリ",
)
argparser.add_argument(
"text",
help="読み上げさせたい文章",
)
argparser.add_argument(
"--out",
type=Path,
help="出力wavファイルのパス",
default="/tmp/out.wav",
)
args = argparser.parse_args()
return (args.mode, args.open_jtalk_dict_dir, args.text, args.out)
def display_as_json(audio_query: AudioQuery) -> str:
return json.dumps(dataclasses.asdict(audio_query), ensure_ascii=False)
if __name__ == "__main__":
main()