diff --git a/docs/ats/make-samples.sh b/docs/ats/make-samples.sh new file mode 100644 index 0000000..c14b273 --- /dev/null +++ b/docs/ats/make-samples.sh @@ -0,0 +1,57 @@ +#!/bin/bash +# Образцы звучания робота для владельца: собираются ТОЛЬКО из тех файлов и в том +# порядке, который выводит AGI-харнесс (bash ss-dialog.agi с подставленными Setvar). +# +# Зачем правило: 15.09 образец собрали руками и в первый вариант (сегодняшний день) +# подставили «в пятницу» вместо «сегодня» — владелец решил, что робот называет день +# недели вместо «сегодня». Робот был прав, ошибочен был образец. +# +# Порядок фраз берём из вывода прогонов: +# python3 /tmp/check_today_wording.py (слово «сегодня» для сегодняшнего дня) +# python3 /tmp/agi_harness_dlv.py (сценарии доставки и самовывоза) +# там в строках «играет:» перечислены реальные файлы. +# +# Запуск: bash make-samples.sh → mp3 в /root/robot_samples/ (отправить владельцу в чат). +set -euo pipefail + +W=${W:-/root/ss_wavs} # копии озвучек с АТС (tar с /var/lib/asterisk/sounds/ru) +N=${N:-/tmp/dlv_frags} # новые фрагменты доставки +OUT=${OUT:-/root/robot_samples} +mkdir -p "$OUT" + +mix () { # $1=имя результата, дальше — список файлов + name=$1; shift + args=(); for f in "$@"; do args+=(-i "$f"); done + filt=""; for i in $(seq 0 $(($# - 1))); do filt="${filt}[$i:a]"; done + ffmpeg -v error -y "${args[@]}" -filter_complex "${filt}concat=n=$#:v=0:a=1[out]" \ + -map "[out]" -ar 8000 -ac 1 -b:a 64k "$OUT/$name.mp3" + printf "%-38s %5s КБ\n" "$name.mp3" "$(( $(stat -c%s "$OUT/$name.mp3") / 1024 ))" +} + +# 1. Самовывоз, звонок в пятницу по готовому заказу: сегодня / понедельник / вторник +mix samovyvoz_pyatnica_segodnya \ + "$W/ss_pkp_intro.wav" \ + "$W/ss_pkp_menu1.wav" "$W/ss_pkp_d_today.wav" \ + "$W/ss_pkp_menu2.wav" "$W/ss_pkp_d_1.wav" \ + "$W/ss_pkp_menu3.wav" "$W/ss_pkp_d_2.wav" \ + "$W/ss_half_pkp.wav" "$W/ss_ok_first.wav" "$W/ss_tail_pkp.wav" + +# 2. Доставка, заказ готов в пятницу: понедельник и вторник (в день готовности не возим) +mix dostavka_pyatnica_pon_vt \ + "$N/ss_dlv_intro.wav" \ + "$N/ss_dlv_menu1.wav" "$W/ss_pkp_d_1.wav" \ + "$N/ss_dlv_menu2.wav" "$W/ss_pkp_d_2.wav" \ + "$W/ss_half_dlv.wav" "$W/ss_ok_first.wav" "$W/ss_tail_dlv.wav" + +# 3. Доставка, заказ готов в четверг, звонок в пятницу: сегодня и понедельник +mix dostavka_segodnya_ponedelnik \ + "$N/ss_dlv_intro.wav" \ + "$N/ss_dlv_menu1.wav" "$W/ss_pkp_d_today.wav" \ + "$N/ss_dlv_menu2.wav" "$W/ss_pkp_d_1.wav" \ + "$W/ss_half_dlv.wav" "$W/ss_ok_first.wav" "$W/ss_tail_dlv.wav" + +# 4. Самовывоз, обычный день, окно подряд: сегодня / завтра / послезавтра +mix samovyvoz_obychnyy_den \ + "$W/ss_pkp_intro.wav" \ + "$W/ss_pkp_day3.wav" \ + "$W/ss_half_pkp.wav" "$W/ss_ok_first.wav" "$W/ss_tail_pkp.wav"