- 共享引擎(app/src/main):GestureEngine 6 手势识别、AudioEngine 三层音频 (ExoPlayer BGM 交叉淡入 / 对白 ducking / SoundPool 低延迟)、Game/GameEngine 状态机接口、MainActivity 全屏封面 + TalkBack - 《声命线》storyline:末世互动广播剧,3 幕 8 抉择点 4 结局 - 《声东击西》reflex:听声辨位反应,12 波战斗 + BGM 三档 BPM 变速 - 《暗室》escape:3x3 网格密室逃脱,钥匙→铁柜→保险丝→电箱→大门谜题链 - 文档:setup(从零搭建)/ architecture(架构)/ engine-api(引擎 API)/ asset-pipeline(资产流水线)/ games/*(三款游戏设计文档) - 资产管线:Qwen3-TTS 对白 + 程序合成音效/BGM + Mureka BGM 的 gen 脚本与台账, 全部 ogg 资产入库可复现 - env.d 环境脚本:android/tts 入库;sfx/mureka 含密钥不入库,仅提交 .example.sh 模板
82 lines
3.0 KiB
YAML
82 lines
3.0 KiB
YAML
name: TFLite cross-platform
|
|
|
|
# The optimized/tflite release must run identically on macOS, Linux, and
|
|
# Windows. This checks, on every OS ai-edge-litert ships wheels for:
|
|
# byte-compilation of the scripts, LiteRT importability, the weights
|
|
# link-or-copy fallback (no symlink privilege needed on Windows), console
|
|
# encoding under the runner's native code page, and --play dispatch.
|
|
# NO model downloads happen in CI.
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- "optimized/tflite/**"
|
|
- ".github/workflows/tflite-cross-platform.yml"
|
|
pull_request:
|
|
paths:
|
|
- "optimized/tflite/**"
|
|
- ".github/workflows/tflite-cross-platform.yml"
|
|
|
|
jobs:
|
|
test:
|
|
strategy:
|
|
fail-fast: false
|
|
# Exactly the set ai-edge-litert has wheels for: manylinux x86_64 +
|
|
# aarch64, macosx_12_0_arm64, win_amd64. No macOS-Intel (macos-13) and
|
|
# no Windows-ARM runners — those combos have no wheel.
|
|
matrix:
|
|
os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-latest]
|
|
runs-on: ${{ matrix.os }}
|
|
defaults:
|
|
run:
|
|
shell: bash
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-python@v5
|
|
with:
|
|
python-version: "3.11"
|
|
|
|
- name: Install runtime requirements
|
|
run: python -m pip install -r optimized/tflite/requirements.txt
|
|
|
|
- name: Byte-compile all scripts
|
|
run: |
|
|
python -m py_compile \
|
|
optimized/tflite/scripts/sa3_tflite.py \
|
|
optimized/tflite/scripts/weights.py \
|
|
optimized/tflite/scripts/install.py \
|
|
optimized/tflite/scripts/examples.py \
|
|
optimized/tflite/scripts/test_windows_compat.py \
|
|
optimized/tflite/models/defs/tflite_pipeline.py
|
|
|
|
- name: LiteRT interpreter imports
|
|
run: python -c "from ai_edge_litert.interpreter import Interpreter"
|
|
|
|
- name: Windows-compat test suite
|
|
run: python optimized/tflite/scripts/test_windows_compat.py
|
|
|
|
- name: bootstrap.ps1 parses (PowerShell syntax check)
|
|
shell: pwsh
|
|
run: |
|
|
$errs = $null
|
|
[void][System.Management.Automation.Language.Parser]::ParseFile(
|
|
"optimized/tflite/bootstrap.ps1", [ref]$null, [ref]$errs)
|
|
if ($errs) { $errs | ForEach-Object { Write-Error $_.Message }; exit 1 }
|
|
[void][System.Management.Automation.Language.Parser]::ParseFile(
|
|
"optimized/tflite/sa3.ps1", [ref]$null, [ref]$errs)
|
|
if ($errs) { $errs | ForEach-Object { Write-Error $_.Message }; exit 1 }
|
|
|
|
- name: bootstrap.sh parses (bash syntax check)
|
|
if: runner.os != 'Windows'
|
|
run: bash -n optimized/tflite/bootstrap.sh
|
|
|
|
# Real install flow under the OS's bash (Git Bash on Windows — the
|
|
# environment a Windows user following the Unix instructions lands in;
|
|
# this exact path shipped broken once: .venv/Scripts vs .venv/bin).
|
|
- name: install.sh end-to-end + sa3 wrapper (bash on every OS)
|
|
run: |
|
|
cd optimized/tflite
|
|
./install.sh -y < /dev/null
|
|
./sa3 --help
|