From 5a71fbceba868b07e3e178965d8cac34daba1891 Mon Sep 17 00:00:00 2001 From: Hermes Date: Tue, 15 Sep 2026 09:56:37 +0200 Subject: [PATCH] =?UTF-8?q?docs(ats):=20=D0=BE=D0=B1=D1=80=D0=B0=D0=B7?= =?UTF-8?q?=D1=86=D1=8B=20=D0=B7=D0=B2=D1=83=D1=87=D0=B0=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D1=81=D0=BE=D0=B1=D0=B8=D1=80=D0=B0=D1=8E=D1=82=D1=81=D1=8F?= =?UTF-8?q?=20=D0=B8=D0=B7=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA=D0=B0=20=D1=84?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=D0=BE=D0=B2=20AGI-=D1=85=D0=B0=D1=80=D0=BD?= =?UTF-8?q?=D0=B5=D1=81=D1=81=D0=B0=20+=20=D1=81=D0=BA=D1=80=D0=B8=D0=BF?= =?UTF-8?q?=D1=82=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA=D0=B8=20(=D0=B2=20?= =?UTF-8?q?=D1=80=D1=83=D1=87=D0=BD=D0=BE=D0=BC=20=D0=BE=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=B7=D1=86=D0=B5=20=C2=AB=D0=B2=20=D0=BF=D1=8F=D1=82=D0=BD?= =?UTF-8?q?=D0=B8=D1=86=D1=83=C2=BB=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE?= =?UTF-8?q?=20=C2=AB=D1=81=D0=B5=D0=B3=D0=BE=D0=B4=D0=BD=D1=8F=C2=BB)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/ats/make-samples.sh | 57 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 docs/ats/make-samples.sh 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"