Локальные AI-агенты, Git и DevOps/aka-gst

Эксперимент 8 · 4 мин

Эксперимент 8. Русский локальный voice baseline

Содержание раздела
  1. Что мы делаем и зачем
  2. Что должно быть готово
  3. Где выполнять
  4. Scope
  5. Команды PowerShell
  6. Как действовать при запросе разрешения
  7. Что должно получиться
  8. Типовые ошибки и действия
  9. Артефакты и доказательства
  10. Критерий завершения

Атомарная цель. Выбрать sherpa_onnx_asr и pyttsx3_tts, проверить русское распознавание и локальное воспроизведение без cloud API.

Что мы делаем и зачем

Голосовой цикл состоит из независимых частей: захват микрофона, VAD, ASR, LLM и TTS. Один успешный текстовый ответ не доказывает микрофон или звук. Поэтому сохраняются отдельные доказательства распознавания фразы с уникальным числом и слышимого ответа.

Что должно быть готово

  • Эксперимент 7 работает.
  • Микрофон разрешён браузеру на localhost.
  • В Windows установлен хотя бы один русский SAPI voice.

Где выполнять

Обычный PowerShell для списка voices и сервера; браузер для одного voice cycle.

Scope

РазрешеноТолько действия, прямо указанные в prompt и командах этого эксперимента.
ЗапрещеноСекреты, изменение main/upstream, расширение scope и скрытое исправление новых ошибок.
РезультатАртефакты и критерии на третьей странице эксперимента.

Откройте Codex из папки, указанной на предыдущей странице. Для независимого аудита обязательно создайте новую сессию. Скопируйте следующий prompt целиком, не вырезая ограничения.

PROMPT ДЛЯ CODEX - КОПИРОВАТЬ ЦЕЛИКОМ

Работай как инженер в режиме контролируемого агента.
Перед любым изменением покажи карту релевантной части репозитория, одну атомарную цель, файлы чтения и изменения, риски и команды проверки.
Сначала покажи план. Не меняй файлы до моего явного подтверждения.
Не используй sudo, force push, git reset --hard, git clean -fd и опасные команды удаления.
Не переключай и не изменяй main.
Не читай и не печатай .env, токены, SSH-ключи, cookies и keychain.
Не трогай файлы за пределами указанного scope.
Не скрывай ошибки и не подменяй тест словесным утверждением.
После изменения покажи краткий diff, реальный минимальный тест и git status --short.
Если нужен больший scope, остановись и запроси новый атомарный шаг.

Текущая задача: настроить только local voice baseline в conf.yaml. Не меняй source code, templates и dependencies. Не отправляй аудио в cloud API.

Сначала найди точные существующие ASR/TTS keys и Pydantic Literal-значения. Покажи план для character_config.asr_config.asr_model = sherpa_onnx_asr и character_config.tts_config.tts_model = pyttsx3_tts. Найди pyttsx3_tts.voice_name, если он поддерживается текущей схемой. После подтверждения измени только эти keys.

Затем выполни PowerShell-совместимый список pyttsx3 voices, запусти verbose server и проведи один microphone smoke test с фразой «Проверка локального распознавания 4827». В логах не показывай другое содержание речи. После одного ответа выключи микрофон и проверь отсутствие feedback loop.

Команды PowerShell

Команды ниже нужны либо для ручного выполнения, либо для сверки предложения Codex. Строки после комментария «после подтверждения» не запускаются заранее.

КОМАНДЫ - КОПИРОВАТЬ ПО ПОРЯДКУ

@'
import pyttsx3
engine = pyttsx3.init()
for voice in engine.getProperty("voices"):
    print(voice.id, voice.name, getattr(voice, "languages", []))
'@ | uv run python -

uv run run_server.py --verbose

Как действовать при запросе разрешения

Прочитайте команду и рабочую папку; сразу сверьте их со scope этого эксперимента.

Для одной безопасной команды выберите разовое Yes, proceed.

Если команда читает секреты, пишет за пределами scope или меняет main - нажмите Esc и объясните ограничение.

Что должно получиться

  • Список voices напечатан без персональных путей.
  • ASR transcript содержит смысл фразы и уникальное число 4827.
  • Пользователь слышит локальный TTS-ответ.
  • После выключения микрофона новых циклов нет.

Типовые ошибки и действия

  • pyttsx3 literal_error: использовать pyttsx3_tts, а не имя Python-класса.
  • TTS object has no attribute: это source/backend contract; не патчить source внутри config-only шага.
  • Русский voice отсутствует: установить Windows language/voice отдельно, не добавлять cloud TTS.
  • Feedback loop: снизить громкость, включить VAD/echo control и остановить capture после одного цикла.

Артефакты и доказательства

Критерий завершения

ГОТОВАЯ ЗАПИСЬ В ОТЧЁТ

Эксперимент 8: Русский локальный voice baseline | Статус: PASS / FAIL / NOT PROVEN
Доказательство: <минимальный обезличенный вывод> | Не доказано: <ограничение>
Source tree: unchanged / <известный diff> | Следующий шаг: Если эксперименты 1-8 уже выполнялись, пройти контрольную точку 8.5 вместо полного повтора.