"""
Irodori-TTSを使用した音声合成のサンプルスクリプトです。

このスクリプトは、Irodori-TTSライブラリを用いて、指定されたテキストから音声を生成します。
コマンドライン引数に応じて、利用可能な音声のリスト表示、または参照音声ファイル（ref_wav）を用いた声質固定の音声生成が可能です。

- コマンドライン引数なし: 事前定義されたテキストの音声を生成し、`sample_irodori.wav` として出力します。
- `list` 引数指定時: Irodori-TTSで利用可能な音声オプションや、声質固定に関する情報が表示されます。
- 参照WAVファイル名指定時: 指定されたWAVファイルを参照音声として使用し、その声質を基準に音声を生成します。

使用例:
  - 基本的な音声合成::
      python sample_irodori_tts.py
  - 利用可能な音声と音声固定方法の表示::
      python sample_irodori_tts.py list
  - 参照音声ファイルを用いた音声合成::
      python sample_irodori_tts.py reference.wav

:doc:`sample_irodori_tts_usage`
"""
# sample_irodori_tts.py
#
# 使用例:
#   python sample_irodori_tts.py
#   python sample_irodori_tts.py list
#   python sample_irodori_tts.py reference.wav

import sys
import tktts_irodori


# ------------------------------------------------------------
# 利用可能な音声・音声固定方法を表示
# ------------------------------------------------------------
if len(sys.argv) >= 2 and sys.argv[1].lower() == "list":
    tktts_irodori.list_available_voices()

    print()
    print("=== Irodori-TTS の音声指定 ===")
    print("固定話者リストはありません。")
    print("caption を変更すると、話し方や雰囲気を調整できます。")
    print("プログラム例:")
    print("Python:")
    print("  tktts_irodori.speak(")
    print('      outfile="sample.wav",')
    print('      text="こんにちは。これは音声合成のテストです。",')
    print('      voice="default",')
    print('      caption="落ち着いた自然な声で、明瞭に読み上げる。",')
    print("      model=model,")
    print()
    print("声質を固定したい場合は、参照音声ファイル ref_wav を指定します。")
    print()
    print("使用例:")
    print("  python sample_irodori_tts.py reference.wav")
    print("プログラム例:")
    print('  ref_wav="reference.wav"')
    print()
    print("Python:")
    print("  tktts_irodori.speak(")
    print('      outfile="sample.wav",')
    print('      text="こんにちは。これは音声合成のテストです。",')
    print('      voice="default",')
    print('      caption="落ち着いた自然な声で、明瞭に読み上げる。",')
    print('      ref_wav="reference.wav",')
    print("      model=model,")
    print("  )")
    print()
    print("同じ ref_wav を使用することで、同じ声質を基準に音声を生成できます。")


    sys.exit()


    sys.exit()


# ------------------------------------------------------------
# 参照音声
# ------------------------------------------------------------
if len(sys.argv) >= 2:
    ref_wav = sys.argv[1]
else:
    ref_wav = None


# ------------------------------------------------------------
# モデルを読み込む
# ------------------------------------------------------------
model = tktts_irodori.load_model()


# ------------------------------------------------------------
# 読み上げる文章
# ------------------------------------------------------------
text = """
こんにちは。
これは Irodori TTS を使った音声合成のサンプルです。
ニューラルネットワークを使って、文章から音声を生成しています。
"""


# ------------------------------------------------------------
# 音声を生成
# ------------------------------------------------------------
tktts_irodori.speak(
    outfile="sample_irodori.wav",
    text=text,
    voice="default",
    caption="落ち着いた自然な声で、明瞭に読み上げる。",
    ref_wav=ref_wav,
    model=model,
)

print("sample_irodori.wav を作成しました。")