> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openclaw.kr/llms.txt
> Use this file to discover all available pages before exploring further.

# 음성 인식 호출

# 음성 인식 호출 (글로벌 호출어)

OpenClaw는 **음성 인식 호출어를 게이트웨이가 소유한 단일 글로벌 목록**으로 처리합니다.

* **노드별 사용자 정의 호출어는 없습니다.**
* **모든 노드/앱 UI에서** 목록을 편집할 수 있으며, 변경 사항은 게이트웨이에 의해 저장되고 모든 사용자에게 방송됩니다.
* macOS와 iOS는 로컬 **Voice Wake 활성화/비활성화** 토글을 유지합니다 (로컬 UX + 권한은 다를 수 있음).
* Android는 현재 Voice Wake를 비활성화하고 Voice 탭의 수동 마이크 플로우를 사용합니다.

## 저장소 (게이트웨이 호스트)

호출어는 게이트웨이 머신에 다음과 같이 저장됩니다:

* `~/.openclaw/settings/voicewake.json`

형식:

```json theme={"theme":{"light":"min-light","dark":"min-dark"}}
{ "triggers": ["openclaw", "claude", "computer"], "updatedAtMs": 1730000000000 }
```

## 프로토콜

### 메소드

* `voicewake.get` → `{ triggers: string[] }`
* `voicewake.set` with params `{ triggers: string[] }` → `{ triggers: string[] }`

주의사항:

* 트리거는 정규화됩니다 (공백 제거, 빈 항목 삭제). 빈 목록은 기본값으로 돌아갑니다.
* 안전을 위해 제한이 적용됩니다 (개수/길이 제한).

### 이벤트

* `voicewake.changed` payload `{ triggers: string[] }`

수신 대상:

* 모든 WebSocket 클라이언트 (macOS 앱, WebChat 등)
* 모든 연결된 노드 (iOS/Android), 또한 노드 연결 시 초기 "현재 상태" 푸시

## 클라이언트 동작

### macOS 앱

* `VoiceWakeRuntime` 트리거를 제어하기 위해 글로벌 목록을 사용합니다.
* 음성 인식 설정에서 "트리거 단어" 편집은 `voicewake.set`을 호출하고 다른 클라이언트와의 동기화를 위해 방송에 의존합니다.

### iOS 노드

* `VoiceWakeManager` 트리거 감지를 위해 글로벌 목록을 사용합니다.
* 설정에서 호출어 편집은 게이트웨이 WS를 통해 `voicewake.set`을 호출하고 로컬 호출어 감지를 반응형으로 유지합니다.

### Android 노드

* Android 런타임/설정에서 Voice Wake는 현재 비활성화되어 있습니다.
* Android 음성은 호출어 트리거 대신 Voice 탭의 수동 마이크 캡처를 사용합니다.
