Improve: Variation of text-to-speech during testing

This commit is contained in:
tsukumi
2024-12-22 07:17:07 +09:00
parent 405c5deddd
commit 3c218c7087

View File

@@ -4,6 +4,7 @@ import pytest
from scipy.io import wavfile from scipy.io import wavfile
from style_bert_vits2.constants import BASE_DIR, Languages from style_bert_vits2.constants import BASE_DIR, Languages
from style_bert_vits2.logging import logger
from style_bert_vits2.tts_model import TTSModelHolder from style_bert_vits2.tts_model import TTSModelHolder
@@ -53,10 +54,22 @@ def synthesize(
# すべてのスタイルに対して音声合成を実行 # すべてのスタイルに対して音声合成を実行
for style in model_info.styles: for style in model_info.styles:
logger.info(f"Testing style: {style}")
# テストに使用するサンプルテキスト
sample_texts = [
"こんにちは、初めまして。あなたの名前はなんていうの?",
"桜の樹の下には屍体が埋まっている!これは信じていいことなんだよ。",
"あなたがいなくなって、私は一人になっちゃって、泣いちゃいそうなほど悲しい。",
"音声合成は、機械学習を活用して、テキストから人の声を再現する技術です。この技術は、言語の構造を解析し、それに基づいて音声を生成します。",
]
# 各サンプルテキストに対して音声合成を実行
for i, text in enumerate(sample_texts):
# 音声合成を実行 # 音声合成を実行
sample_rate, audio_data = model.infer( sample_rate, audio_data = model.infer(
"あらゆる現実を、すべて自分のほうへねじ曲げたのだ。", text,
# 言語 (JP, EN, ZH / JP-Extra モデルの場合は JP のみ) # 言語 (JP, EN, ZH / JP-Extra モデルの場合は JP のみ)
language=Languages.JP, language=Languages.JP,
# 話者 ID (音声合成モデルに複数の話者が含まれる場合のみ必須、単一話者のみの場合は 0) # 話者 ID (音声合成モデルに複数の話者が含まれる場合のみ必須、単一話者のみの場合は 0)
@@ -70,12 +83,8 @@ def synthesize(
) )
# 音声データを保存 # 音声データを保存
(BASE_DIR / f"tests/wavs/{model_info.name}").mkdir( (BASE_DIR / f"tests/wavs/{model_info.name}").mkdir(exist_ok=True, parents=True) # fmt: skip
exist_ok=True, parents=True wav_file_path = BASE_DIR / f"tests/wavs/{model_info.name}/{style}_{i+1:02d}.wav" # fmt: skip
)
wav_file_path = (
BASE_DIR / f"tests/wavs/{model_info.name}/{style}.wav"
)
with open(wav_file_path, "wb") as f: with open(wav_file_path, "wb") as f:
wavfile.write(f, sample_rate, audio_data) wavfile.write(f, sample_rate, audio_data)