# sample_voicevox.py
"""
VOICEVOX APIを使用してテキストを音声に変換するシンプルなスクリプト。

このスクリプトは、VOICEVOXエンジンを用いて指定されたテキストを音声ファイルに合成します。
コマンドライン引数によって、利用可能な話者の一覧表示や、特定の話者による音声合成を実行できます。

**使用例:**

*   デフォルトの話者（四国めたん）でテキストを読み上げ、`sample_voicevox.wav` を生成します::

    python sample_voicevox.py

*   利用可能なすべてのVOICEVOX音声話者の一覧を表示します::

    python sample_voicevox.py list

*   指定した話者（例: ずんだもん）でテキストを読み上げ、`sample_voicevox.wav` を生成します::

    python sample_voicevox.py ずんだもん

:doc:`sample_voicevox_usage`
"""

import sys
import tktts_voicevox


# ------------------------------------------------------------
# 利用可能な音声を表示
# ------------------------------------------------------------
if len(sys.argv) >= 2 and sys.argv[1].lower() == "list":
    tktts_voicevox.list_available_voices()
    sys.exit()


# ------------------------------------------------------------
# 話者を指定
# ------------------------------------------------------------
if len(sys.argv) >= 2:
    voice_name = sys.argv[1]
else:
    voice_name = "四国めたん"


# ------------------------------------------------------------
# 話者名からVOICEVOXのspeaker IDを取得
# ------------------------------------------------------------
voices, voice_id = tktts_voicevox.resolve_speaker_id(voice_name)

print(f"Voice: {voice_name}")
print(f"Speaker ID: {voice_id}")


# ------------------------------------------------------------
# 読み上げる文章
# ------------------------------------------------------------
text = """
こんにちは。
これはVOICEVOXを使った音声合成のサンプルです。
Pythonから簡単に自然な日本語音声を生成できます。
"""


# ------------------------------------------------------------
# 音声を生成
# ------------------------------------------------------------
tktts_voicevox.speak(
    outfile="sample_voicevox.wav",
    text=text,
    voice=voice_id,
    speak_rate=1.0,
    speak_pitch=0.0,
)

print("sample_voicevox.wav を作成しました。")