3.0 KiB
Voice ultimate ARCO — Dylan
Status: pengguna memilih Dylan. File final arco-ultimate-dylan.mp3 sudah dipasang pada awal ultimate/cut-in ARCO. Holden dan Archie tetap disimpan sebagai kandidat arsip, tidak dimainkan oleh runtime.
Script Inggris yang sama untuk setiap kandidat:
Helios Squadron! Open fire!
Provider Higgsfield, model text2speech_v2, varian elevenlabs, voice_type: preset. Voice ID berasal dari daftar resmi Higgsfield dan ketiga voice dipilih pengguna untuk percobaan. Ini hasil generasi kalimat ultimate baru, bukan sampel preview bawaan voice.
| Kandidat | Voice ID | File |
|---|---|---|
| Dylan | b847bc29-f184-583a-8ad9-d1f1e16d1a60 | dylan.mp3 |
| Holden | 3c9d6053-6334-592c-8997-4e325286af3f | holden.mp3 |
| Archie | bd072316-f77c-588b-b6e5-e46b9b03d008 | archie.mp3 |
generation.json menyimpan pilihan final, prompt, parameter, job ID, URL sumber, file lokal, durasi hasil probe, checksum, dan hasil verifikasi decode. File runtime identik dengan kandidat Dylan: SHA-256 25ef0d218a87f53186f73363438dcea65dd5a065c103bee15fb9dd7e9d8aa249. Durasi container hasil ffprobe sekitar 2,273 s; browser melaporkan durasi playable 2,24 s.
Perilaku runtime
- Dylan dan Holden FENR dipreload pada HTMLAudioElement lokal terpisah tanpa autoplay, dengan satu voice aktif agar tidak bertumpuk. Tidak membutuhkan stream Higgsfield saat game dimainkan. Aturan prioritas voice pemain/AI: fenr-voice.md.
- Voice dimulai pada startSquadron setelah input pengguna yang valid. Tombol P yang ditolak cooldown tidak mengulang voice.
- Volume voice mengikuti slider game dengan pengali 1,25 (dibatasi 1); mute berlaku pada voice dan SFX. Gain SFX menjadi 38% selama voice sedang berjalan, lalu pulih setelah voice berakhir/berhenti.
- Pause dan pengaturan menjeda voice; resume melanjutkan posisi yang sama. Reset menghentikan dan mengembalikannya ke awal.
- Saat tab disembunyikan voice dijeda tanpa mengubah preferensi pause game. Voice yang sudah tidak relevan tidak diputar terlambat setelah summon selesai.
- Tidak ada perubahan pada cast 0,50 s, damage, cooldown, atau kebebasan bergerak. Audio tidak menahan karakter.
- Rejection autoplay/load ditangani tanpa merusak gameplay. Token tiap percobaan mencegah Promise play lama membatalkan voice baru setelah reset/pause/resume.
- Preview visual yang dipicu programmatically tanpa user gesture tidak mengeluarkan voice otomatis.
Verifikasi
41 tes gameplay tetap lulus, ditambah 9 tes pada node tests/ultimate-voice.test.cjs untuk preload/start, duplikasi cast, pause/settings, reset, volume/mute/ducking, visibility, dan race/error Promise play.
Browser nyata: readyState4, durasi2,24 s, voiceActive=true, paused=false, playback time bergerak, start counter1, dan error kosong. Pause cepat saat awal voice mempertahankan active state; resume melanjutkan playback dengan start counter tetap1. Bukti ini memverifikasi pemutaran browser dan perilaku kontrol, bukan volume speaker/OS atau penilaian timbre melalui tool.