#!/bin/bash
# 20話ぶん（2026-10-24）の声をまとめて作る。先に read -s ELEVENLABS_API_KEY && export ELEVENLABS_API_KEY
# 新しい声（中村・森田茂・森田久美子・ハコブ_イケボ）は、先に _制作ベース で voice_design.py design → save をすませる。
# まだ保存していない声の行は「とばしました」と出して先へ進む（あとでもう一度動かせば、できていない分だけ作る）
cd "$(dirname "$0")"
B=../_制作ベース
HK="gWJpc8whMBqnF7Y0kc9f"
id() { python3 -c "import json;print(json.load(open('../$B/声の一覧.json')).get('$1',''))"; }
mk() { # mk 人 本数 文
  local who="$1" n="$2" txt="$3" v
  if [ "$who" = "ハコブ" ]; then v=$HK
  elif [ "$who" = "中村" ]; then v="$(id 槙原)"      # 2026-10-24 自作の声が上限（10/10）のため、中村さんは槙原さんの声を借りる
  elif [ "$who" = "森田茂" ]; then v="$(id 田中)"    # 同じく、森田茂さんは田中先生の声を借りる（どちらも同じ話には出ない）
  else v="$(id "$who")"; fi
  if [ -z "$v" ]; then echo "  ！ $who の声がまだ保存されていないので、とばしました"; SKIP=1; return; fi
  [ -f "voice_eleven/$who/試し_$(printf %02d $n).mp3" ] && return
  python3 ../$B/tts_eleven.py --voice "$v" --name "$who" --try "$txt" || { echo "  ！ $who で止まりました"; SKIP=1; }
}
SKIP=0
echo "== 第7話_ピンポン"; mkdir -p "第7話_ピンポン"; cd "第7話_ピンポン"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "田中" 1 "残念ながら、検査の結果が、思わしくなく…。"
mk "ハコブ" 2 "ピンポンパンポーン！ 検便容器を、回収してまいりました！｜タスク、完了。"
cd ..
echo "== 第9話_外装"; mkdir -p "第9話_外装"; cd "第9話_外装"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "高杉" 1 "ハコブくん、今日もお疲れ様〜。寝てるかな？"
mk "槙原" 1 "あ、外装、外してるだけですよ。"
mk "ハコブ" 1 "タスク、完了。"
cd ..
echo "== 第17話_イケボ"; mkdir -p "第17話_イケボ"; cd "第17話_イケボ"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "寺島" 2 "連絡事項です。今日から、ハコブくんの音声ガイダンスが更新されました。｜メーカーいわく、親しみやすさを重視したアップデートだそうです。"
mk "大城" 3 "ハコブくん、ちょうどいいところに。こっちの検体、運んでくれる？｜ハコブくん、こっち来て！｜キャラが濃すぎるわ！ 仕事にならないから、前のカタコトに戻して！"
mk "ハコブ_イケボ" 3 "御意。｜ただいま参上つかまつった、姫君。｜……御意。姫君の、望むままに……。"
cd ..
echo "== 第23話_忍者"; mkdir -p "第23話_忍者"; cd "第23話_忍者"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "大城" 2 "ひっ！｜静かすぎて、心臓に悪いわ！ 少しは音を出して！"
mk "ハコブ" 1 "忍者モード、解除します。"
cd ..
echo "== 第46話_メニュー"; mkdir -p "第46話_メニュー"; cd "第46話_メニュー"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "大城" 3 "ハコブくんの音量、夜勤用に下げておきたい。｜…！｜もう、トップ画面に「よく使う設定」を、3つだけ出して！"
mk "ハコブ" 1 "同意します。深すぎました。"
cd ..
echo "== 第47話_8時間"; mkdir -p "第47話_8時間"; cd "第47話_8時間"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "寺島" 1 "あ、後でね。"
mk "大城" 2 "あら、なんか今日、変だと思ってた。｜ごめん、表示の仕方を変えよう。"
mk "ハコブ" 2 "右車輪の、メンテナンスを推奨します。｜8時間前から、告知しておりました。"
cd ..
echo "== 第51話_自己診断"; mkdir -p "第51話_自己診断"; cd "第51話_自己診断"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "大城" 2 "ハコブくん、目、悪くなった？｜私たちが、定期的に拭くわね。"
mk "ハコブ" 3 "自己診断結果、全機能、正常。｜視界不良を、検知できませんでした。｜自分の目は、自分で見えない。"
cd ..
echo "== 第52話_夜勤"; mkdir -p "第52話_夜勤"; cd "第52話_夜勤"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "ハコブ" 3 "大城様、今月の夜勤は、過去6カ月平均より、40パーセント多いです。｜シフト表を、閲覧しました。｜以後、参照する前に、告知します。"
mk "大城" 3 "ありがた…いけど、どこまで見るの？｜悪気はないのよね…。でも、線引きしようね。｜私のデータ見たら、見たって先に言って。"
cd ..
echo "== 第60話_再現しない"; mkdir -p "第60話_再現しない"; cd "第60話_再現しない"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "大城" 2 "白石さん、ハコブくんが、たまに急停止するの。週に2、3回。｜白石さーん！ 戻ってきて！"
mk "白石" 3 "再現条件、調べに来ました！｜…起きないですね。｜廊下のワイファイ、切り替えの時の挙動でした…。次回も録画、お願いします！"
mk "ハコブ" 1 "現場の目が、最強のセンサーです。"
cd ..
echo "== 第62話_確信度"; mkdir -p "第62話_確信度"; cd "第62話_確信度"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "大城" 3 "ノルバスクを、三番の保管庫まで、お願い。｜なんで最初に言わないの！ 二度手間よ！｜その方がいいの。迷ってるなら、迷ってる顔して。"
mk "ハコブ" 3 "了解しました。｜確認します。薬剤名を、もう一度。｜聞き取れました。確信度、低。"
cd ..
echo "== 第63話_通行止め"; mkdir -p "第63話_通行止め"; cd "第63話_通行止め"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "ハコブ" 3 "経路、再計算。｜経路、再計算。経路、再計算。｜掲示は、読めます。地図は、更新されていません。"
mk "高杉" 1 "そこ、昨日から壁なのよ。"
cd ..
echo "== 第65話_道案内"; mkdir -p "第65話_道案内"; cd "第65話_道案内"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "森田茂" 1 "すいません、304号室は、どっちですか。"
mk "ハコブ" 2 "職員認証が、必要です。｜権限を、機能ごとに分けます。"
mk "大城" 1 "道案内くらい、誰にでも答えていいと思うの。"
cd ..
echo "== 第71話_置いてけぼり"; mkdir -p "第71話_置いてけぼり"; cd "第71話_置いてけぼり"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "ハコブ" 3 "こちらです。｜経路は、最短です。｜合わせます。"
mk "森田久美子" 3 "あら、ロボットさんは？｜速いのよ、あなた。こっちは荷物持ってるんだから。｜そう、それでいいの。"
cd ..
echo "== 第72話_トイレ"; mkdir -p "第72話_トイレ"; cd "第72話_トイレ"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "ハコブ" 3 "目的地、405号室。案内中。｜経路を、継続します。｜経路を、継続します。"
mk "中村" 2 "ちょっと、トイレどこ？｜置いてかれるかと思った。"
mk "大城" 1 "案内中でも、寄り道は入るのよ。"
mk "白石" 1 "あ、トイレ…。盲点でした。"
cd ..
echo "== 第84話_プリン"; mkdir -p "第84話_プリン"; cd "第84話_プリン"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "田中" 3 "ハコブくん、プリンを持ってきてくれ。至急だ。｜頼んでない。｜…俺の声、そんなに似てたか？"
mk "ハコブ" 3 "田中先生の声と、一致。了解しました。｜ご注文の、プリンです。｜以後、声だけでは、受け付けません。"
mk "中村" 1 "けっこう、自信あります。"
cd ..
echo "== 第89話_お手すき"; mkdir -p "第89話_お手すき"; cd "第89話_お手すき"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "小芝" 3 "あの…もしお手すきでしたら、ルートのセットを…。あ、急がなくて大丈夫なんですけど…。｜お手すきの時でって…言っちゃいました…。｜…急ぎです。"
mk "ハコブ" 2 "了解しました。優先度、低で登録します。｜以後、言い方ではなく、「急ぎですか」と聞きます。"
mk "大城" 2 "先生、セットは！？｜急ぎなら、急ぎって言いなさい！"
cd ..
echo "== 第90話_伝言"; mkdir -p "第90話_伝言"; cd "第90話_伝言"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "小芝" 2 "田中先生に…見間違いかもしれないんですけど…お時間ある時にでも…と、伝えてもらえますか。｜は、はい…。"
mk "ハコブ" 3 "小芝先生より、伝言です。要約します。｜田中先生の指示に、誤りがあります。｜伝言は、要約せずに届けます。"
mk "田中" 1 "確かに、間違ってた。助かったよ。…次は、直接言いに来い。"
cd ..
echo "== 第91話_心拍数"; mkdir -p "第91話_心拍数"; cd "第91話_心拍数"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "小芝" 2 "チクッとしますね〜。｜し、してません！"
mk "ハコブ" 2 "小芝先生の心拍数、平常時の1.8倍です。｜以後、本人にだけ伝えます。"
mk "中村" 1 "先生、俺より緊張してません？"
mk "大城" 1 "そういうのは、本人にだけ、こっそり教えてあげて。"
cd ..
echo "== 第92話_なかったことに"; mkdir -p "第92話_なかったことに"; cd "第92話_なかったことに"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "小芝" 1 "ハコブくん…さっきの、なかったことに、できない？"
mk "ハコブ" 2 "記録は、消せません。｜ですが、報告は、一緒にできます。"
mk "大城" 1 "言いに来てくれて、助かるわ。怒らないから、次も言いに来てね。"
cd ..
echo "== 第98話_起こさない"; mkdir -p "第98話_起こさない"; cd "第98話_起こさない"
[ -f narration.py ] || printf "# ショート専用。声は --try で作る（_ショート専用/20話の声.sh）\nSEGS = []\n" > narration.py
mk "小芝" 3 "朝まで、絶対に起こさないでね。｜そういう時は、起こしてよ！｜…絶対は、取り消します。"
mk "ハコブ" 4 "了解しました。｜おはようございます。先生の承認待ちが、3件ありました。｜「絶対に」と、言われました。｜起こすべき時は、起こします。"
cd ..
[ $SKIP = 0 ] && echo できあがり || echo "とばした声があります。声を保存してから、もう一度 bash 20話の声.sh"
