From 3c218c70878ec4ac4cf7d35646d3856e305f4048 Mon Sep 17 00:00:00 2001 From: tsukumi Date: Sun, 22 Dec 2024 07:17:07 +0900 Subject: [PATCH] Improve: Variation of text-to-speech during testing --- tests/test_main.py | 59 ++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 25 deletions(-) diff --git a/tests/test_main.py b/tests/test_main.py index 4740395..88c8a84 100644 --- a/tests/test_main.py +++ b/tests/test_main.py @@ -4,6 +4,7 @@ import pytest from scipy.io import wavfile from style_bert_vits2.constants import BASE_DIR, Languages +from style_bert_vits2.logging import logger from style_bert_vits2.tts_model import TTSModelHolder @@ -53,34 +54,42 @@ def synthesize( # すべてのスタイルに対して音声合成を実行 for style in model_info.styles: + logger.info(f"Testing style: {style}") - # 音声合成を実行 - sample_rate, audio_data = model.infer( - "あらゆる現実を、すべて自分のほうへねじ曲げたのだ。", - # 言語 (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, - ) + # テストに使用するサンプルテキスト + sample_texts = [ + "こんにちは、初めまして。あなたの名前はなんていうの?", + "桜の樹の下には屍体が埋まっている!これは信じていいことなんだよ。", + "あなたがいなくなって、私は一人になっちゃって、泣いちゃいそうなほど悲しい。", + "音声合成は、機械学習を活用して、テキストから人の声を再現する技術です。この技術は、言語の構造を解析し、それに基づいて音声を生成します。", + ] - # 音声データを保存 - (BASE_DIR / f"tests/wavs/{model_info.name}").mkdir( - 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) + # 各サンプルテキストに対して音声合成を実行 + for i, text in enumerate(sample_texts): - # 音声データが保存されたことを確認 - 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()