macOS companion app
Pemicu suara (macOS)
Aktivasi Suara & Tekan-untuk-Bicara
Persyaratan
Aktivasi Suara dan tekan-untuk-bicara memerlukan macOS 26 atau yang lebih baru. Pada macOS versi lama, kontrol disembunyikan dari halaman pengaturan Suara, yang sebagai gantinya menampilkan persyaratan macOS 26.
Mode
- Mode kata aktivasi (bawaan): pengenal Ucapan yang selalu aktif menunggu token pemicu (
swabbleTriggerWords). Saat cocok, pengenal mulai merekam, menampilkan overlay dengan teks sementara, dan mengirim secara otomatis setelah hening. - Tekan-untuk-bicara (tahan Option Kanan): tahan tombol Option kanan untuk langsung merekam tanpa memerlukan pemicu. Overlay muncul selama tombol ditahan; melepasnya menyelesaikan dan meneruskan rekaman setelah jeda singkat agar Anda dapat mengedit teks.
Perilaku runtime (kata aktivasi)
- Pengenal berada di
VoiceWakeRuntime. - Pemicu hanya aktif jika terdapat jeda yang bermakna antara kata aktivasi dan kata berikutnya (
triggerPauseWindow= 0.55s). Overlay/nada dapat dimulai saat jeda, bahkan sebelum perintah dimulai. - Rentang keheningan: 2.0 detik (
silenceWindow) saat ucapan mengalir, 5.0 detik (triggerOnlySilenceWindow) jika hanya pemicu yang terdengar. - Penghentian paksa: 120 detik (
captureHardStop) untuk mencegah sesi berjalan tanpa terkendali. - Debounce antarsesi: 350 milidetik (
debounceAfterSend) setelah pengiriman. - Overlay dikendalikan melalui
VoiceWakeOverlayController, dengan pewarnaan teks tetap/sementara. - Setelah pengiriman, pengenal dimulai ulang dengan bersih untuk mendengarkan pemicu berikutnya.
Invarian siklus hidup
- Jika Aktivasi Suara diaktifkan dan izin diberikan, pengenal kata aktivasi tetap mendengarkan, kecuali selama perekaman tekan-untuk-bicara aktif.
- Penutupan overlay, termasuk penutupan manual melalui tombol X, selalu melanjutkan pengenal:
VoiceSessionCoordinator.overlayDidDismissmemanggilVoiceWakeRuntime.refresh(state:)pada setiap jalur penutupan. Lihat Overlay suara untuk model sesi/token.
Detail tekan-untuk-bicara
- Deteksi tombol pintas menggunakan pemantau global
.flagsChangeduntuk Option kanan (keyCode 61+.option). Pemantau hanya mengamati peristiwa dan tidak pernah memblokirnya. - Perekaman berada di
VoicePushToTalk: langsung memulai Ucapan, mengalirkan hasil sementara ke overlay, dan memanggilVoiceWakeForwardersaat tombol dilepas. - Memulai tekan-untuk-bicara menjeda runtime kata aktivasi untuk menghindari perebutan akses audio; runtime dimulai ulang secara otomatis setelah tombol dilepas.
- Izin: memerlukan Mikrofon + Ucapan; menerima peristiwa tombol memerlukan persetujuan Accessibility/Input Monitoring.
- Papan ketik eksternal: beberapa tidak mengekspos Option kanan sebagaimana mestinya. Tawarkan pintasan alternatif jika pengguna melaporkan kegagalan deteksi.
Pengaturan yang terlihat oleh pengguna
- Tombol alih Aktivasi Suara: mengaktifkan runtime kata aktivasi.
- Tahan Option Kanan untuk berbicara: mengaktifkan pemantau tekan-untuk-bicara.
- Pemilih bahasa dan mikrofon, pengukur tingkat langsung, tabel kata pemicu, dan alat penguji (hanya lokal, tidak pernah meneruskan).
- Pemilih mikrofon mempertahankan pilihan terakhir jika perangkat terputus, menampilkan petunjuk terputus, dan untuk sementara beralih ke perangkat bawaan sistem hingga perangkat tersebut kembali.
- Suara: nada saat pemicu terdeteksi dan saat pengiriman, dengan suara sistem macOS "Glass" sebagai bawaan. Pilih berkas apa pun yang dapat dimuat oleh
NSSound(misalnya MP3/WAV/AIFF) untuk setiap peristiwa, atau pilih Tanpa Suara.
Perilaku penerusan
- Saat meneruskan,
VoiceWakeForwarder.selectedSessionOptionsmemilih kunci sesi WebChat aktif jika telah ditetapkan; jika tidak, kunci sesi utama Gateway. - Fungsi ini mencari sesi tersebut melalui
sessions.listdan memperoleh saluran serta target pengiriman dari konteks pengiriman sesi (dengan cadangan ke saluran/target terakhirnya, lalu ke kunci sesi yang diurai), dengan WebChat sebagai bawaan jika tidak ada yang dapat ditentukan. - Jika pengiriman gagal, galat dicatat (kategori
voicewake.forward) dan proses tetap terlihat melalui log WebChat/sesi.
Muatan penerusan
VoiceWakeForwarder.prefixedTranscript(_:)menambahkan baris petunjuk mesin (nama host yang ditentukan, dengan cadangan ke "Mac ini") sebelum transkrip, yang digunakan bersama oleh jalur kata aktivasi dan tekan-untuk-bicara.
Verifikasi cepat
- Aktifkan tekan-untuk-bicara, tahan Option Kanan, berbicara, lalu lepaskan: overlay seharusnya menampilkan hasil sementara, kemudian mengirimkannya.
- Selama tombol ditahan, ikon telinga di bilah menu seharusnya tetap membesar (
triggerVoiceEars(ttl: nil)); ikon mengecil setelah tombol dilepas.
Terkait
Was this useful?