Караоке-чарт для стрима
Локальный сервис на компе владельца: трек из Яндекс Музыки, замер попадания в ноты по сырому микрофону, карточка после песни, оценка стримера 1-10 в панели OBS, топ-чарт песен и исполнителей, голоса зрителей из чата Twitch.
В РАБОТЕS1 · С1 · Трек, оценка, база6/7
Цель: Песня из Яндекс Музыки и оценка стримера 1-10 сохраняются
готовS2 · С2 · Замер нот и карточка5/6
Цель: После каждой песни карточка с оценкой за пение
готовS3 · С3 · Чарт и «что спеть»5/5
Цель: Сцена топ-чарта и подсказка что спеть
готовS4 · С4 · Голоса зрителей6/6
Цель: !оценка N в чате Twitch = столбец зрителей в чарте
планS5 · Проверки по сроку0/1
Цель: Отложенные проверки на живом стриме
В РАБОТЕS6 · С5 · Мелодия оригинала7/10
Цель: Оценка = попадание в ноты певца; записи 12.10 = 80–85
Ворклог (места остановки)
23.10 (2): разбор цифры 5-20. Не железо: микрофон -23 дБ, звук трека верный. Совпадение владельца с певцом 0-0,14 (на записи 45 с 7,5%, по 12 тональностям максимум 19,5% при случайном 14-17%). Решение владельца: цифра на экране. Шкала под стрим calibration.live_anchor=0,0644 (середина 28 песен от 80 нот), недопетые честно ниже по просьбе владельца. Целиком спетые среднее 80 (55-90), недопетые 61. 55 старых цифр пересчитаны из raw (копия базы). Экзамены 51/51, регресс 36/36. Сервис перезапущен. Рубка закрыта, сторож выключен.
→ 1) Посмотреть цифры после стрима 23.10. 2) A5.5 под шкалой стрима не держится: решение владельца, критерий не правлен. 3) Ресерч мягкой оценки как в караоке-играх (нотами, а не кадрами 10 мс). 4) Закоммитить. 5) Автозапуск Karaoke Chart выключен.
23.10: ВК Музыка и YouTube Music. Причина, по которой караоке их не видело: открытая на паузе Яндекс Музыка всегда побеждала играющий плеер. Теперь играющий важнее паузы, при двух играющих первая Яндекс, плеер, игравший последним, держит свою паузу. Регресс ДругиеПлееры 6/6 (на старом коде 3 падают), экзамены 51/51, регресс 32/32 (тест видеокарты в общем прогоне упал по таймауту холодного старта, отдельно зелёный за 24 с). Сервис запущен руками (автозапуск выключен с отката 18.10), чат logonchekk подключён. Найдено по журналу: на стриме 19.10 оценка по мелодии давала 5-20 из 100. Не закоммичено.
→ 1) Владелец проверяет на стриме трек из ВК/YouTube Music, смотреть /api/state. 2) Разобрать оценку по мелодии на живом звуке (устройство loopback). 3) Решить, включать ли обратно автозапуск «Karaoke Chart». 4) Закоммитить sources.py, тесты, PROJECT.md.
17–18.10 первый живой стрим. Владелец попросил откатить правки OBS (фильтры голоса, панель Караоке, оверлей и сцену Топ-чарт) — откачены скриптом tools/obs_uninstall.py после закрытия OBS, автозапуск сервиса выключен. Потом владелец сам попросил запустить караоке фоном: сервис работал без OBS-встройки, оценки 1–10 и особые (11 «ОХУИТЕЛЬНО», 0 «КАЛ») и голоса чата писались (у «Рваные джинсы» 5 голосов). Добавлен прокручиваемый чарт /chart?all=1. Трансляция не стартовала из-за VPN tun2socks, не из-за правок. ПРОБЛЕМА: сравнение с мелодией на живых песнях даёт 1–12% совпадений (уровень случайности), цифры «Пение» 6–21, задержка часто упирается в край окна — голос с треком не сопоставляются.
→ 1) Разобрать живое сравнение: записать одну песню (мик + loopback REDMI) на диск в отладочном режиме, проверить выравнивание, задержку блютуса (>0,8 с?), громкость голоса. 2) Зрители в /chart?all=1 для всех песен (параметр limit в /api/chart). 3) Калибровка по записям 12.10 (нужны названия песен). 4) Что возвращать в OBS — только с владельцем и не перед эфиром.
Владелец дал канал Twitch logonchekk: вписан в data/config.json, сервис перезапущен, чат подключён анонимно, Twitch подтвердил вход (JOIN + 366). С4 закрыт.
→ Развилка оценки пения (A2.2, С2 заблокирован). Закрыть OBS, чтобы встройка установилась. Живой трек Яндекс Музыки для A1.1. Проверка по сроку 24.10.
Собран локальный сервис караоке-чарта (127.0.0.1:8765, автозапуск задачей «Karaoke Chart»): трек из медиа-сеанса Windows, замер нот по сырому микрофону при запущенном OBS, карточка после песни, док оценок 1–10, сцена топ-чарта, статистика, голоса из чата. Экзамены 41/42, регресс 16/16, ОТК 3 круга (около 40 находок, подтверждённые исправлены с тестами). Найдено: честный метод показывает, что цифра пения у владельца неотличима от случайной (A2.2 красный). Встройка в OBS ждёт закрытия OBS (фоновое ожидание). Коммиты b984fed, 21b4a38, bca011b.
→ 1) Владелец: имя канала Twitch -> data/config.json. 2) Владелец: развилка оценки пения (мелодия оригинала / составная / оставить), от неё A2.2. 3) Закрыть OBS -> tools/obs_install.py ставит док, оверлей, сцену. 4) Первый трек из Яндекс Музыки -> закрыть A1.1. 5) Проверка по сроку 24.10.