Improve: Variation of text-to-speech during testing
This commit is contained in:
@@ -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,34 +54,42 @@ def synthesize(
|
|||||||
|
|
||||||
# すべてのスタイルに対して音声合成を実行
|
# すべてのスタイルに対して音声合成を実行
|
||||||
for style in model_info.styles:
|
for style in model_info.styles:
|
||||||
|
logger.info(f"Testing style: {style}")
|
||||||
|
|
||||||
# 音声合成を実行
|
# テストに使用するサンプルテキスト
|
||||||
sample_rate, audio_data = model.infer(
|
sample_texts = [
|
||||||
"あらゆる現実を、すべて自分のほうへねじ曲げたのだ。",
|
"こんにちは、初めまして。あなたの名前はなんていうの?",
|
||||||
# 言語 (JP, EN, ZH / JP-Extra モデルの場合は JP のみ)
|
"桜の樹の下には屍体が埋まっている!これは信じていいことなんだよ。",
|
||||||
language=Languages.JP,
|
"あなたがいなくなって、私は一人になっちゃって、泣いちゃいそうなほど悲しい。",
|
||||||
# 話者 ID (音声合成モデルに複数の話者が含まれる場合のみ必須、単一話者のみの場合は 0)
|
"音声合成は、機械学習を活用して、テキストから人の声を再現する技術です。この技術は、言語の構造を解析し、それに基づいて音声を生成します。",
|
||||||
speaker_id=0,
|
]
|
||||||
# テンポの緩急 (0.0 〜 1.0)
|
|
||||||
sdp_ratio=0.4,
|
|
||||||
# スタイル (Neutral, Happy など)
|
|
||||||
style=style,
|
|
||||||
# スタイルの強さ (0.0 〜 100.0)
|
|
||||||
style_weight=2.0,
|
|
||||||
)
|
|
||||||
|
|
||||||
# 音声データを保存
|
# 各サンプルテキストに対して音声合成を実行
|
||||||
(BASE_DIR / f"tests/wavs/{model_info.name}").mkdir(
|
for i, text in enumerate(sample_texts):
|
||||||
exist_ok=True, parents=True
|
|
||||||
)
|
|
||||||
wav_file_path = (
|
|
||||||
BASE_DIR / f"tests/wavs/{model_info.name}/{style}.wav"
|
|
||||||
)
|
|
||||||
with open(wav_file_path, "wb") as f:
|
|
||||||
wavfile.write(f, sample_rate, audio_data)
|
|
||||||
|
|
||||||
# 音声データが保存されたことを確認
|
# 音声合成を実行
|
||||||
assert wav_file_path.exists()
|
sample_rate, audio_data = model.infer(
|
||||||
|
text,
|
||||||
|
# 言語 (JP, EN, ZH / JP-Extra モデルの場合は JP のみ)
|
||||||
|
language=Languages.JP,
|
||||||
|
# 話者 ID (音声合成モデルに複数の話者が含まれる場合のみ必須、単一話者のみの場合は 0)
|
||||||
|
speaker_id=0,
|
||||||
|
# テンポの緩急 (0.0 〜 1.0)
|
||||||
|
sdp_ratio=0.4,
|
||||||
|
# スタイル (Neutral, Happy など)
|
||||||
|
style=style,
|
||||||
|
# スタイルの強さ (0.0 〜 100.0)
|
||||||
|
style_weight=2.0,
|
||||||
|
)
|
||||||
|
|
||||||
|
# 音声データを保存
|
||||||
|
(BASE_DIR / f"tests/wavs/{model_info.name}").mkdir(exist_ok=True, parents=True) # fmt: skip
|
||||||
|
wav_file_path = BASE_DIR / f"tests/wavs/{model_info.name}/{style}_{i+1:02d}.wav" # fmt: skip
|
||||||
|
with open(wav_file_path, "wb") as f:
|
||||||
|
wavfile.write(f, sample_rate, audio_data)
|
||||||
|
|
||||||
|
# 音声データが保存されたことを確認
|
||||||
|
assert wav_file_path.exists()
|
||||||
|
|
||||||
# モデルをアンロード
|
# モデルをアンロード
|
||||||
model.unload()
|
model.unload()
|
||||||
|
|||||||
Reference in New Issue
Block a user