Unity
[ML-Agents] Audio Sensor – 소리를 듣는 에이전트 만들기
빈형임
2025. 5. 14. 02:24
Audio Sensor는 Unity ML-Agents에서 에이전트가 소리를 관찰할 수 있도록 해주는 센서입니다.
아직 실험적 기능으로 분류되며, 고급 시나리오나 특수 목적 학습에 적합합니다.
말하는 걸 이해하거나, 특정 소리를 감지해서 반응하는 AI를 만들고 싶다면?
언제 사용하나요?
- 음성 명령 인식이 필요한 에이전트
- 주변 소리를 듣고 반응하는 행동 훈련
- 소리 위치 추정(음향 위치 파악)
예: “청소 시작해!” 음성에 반응하는 로봇 청소기
주요 설정 항목
설정 항목 | 설명 |
Buffer Length | 관찰할 오디오 데이터의 시간 길이 |
Compression Type | PNG 압축 여부 (성능 최적화 가능) |
Signal Type | 모노 / 스테레오 채널 선택 |
Sample Type | 진폭(raw amplitude) vs 스펙트럼(FFT) |
FFT Resolution | 주파수 해상도 설정 (스펙트럼 사용 시) |
FFT Window | 푸리에 변환용 윈도우 함수 설정 |
Tip: 스펙트럼(주파수 기반) → 소리 종류 구분에 유리
진폭(시간 기반) → 단순한 이벤트 감지에 적합
구성 방법
- AudioSensorComponent를 Agent에 추가
- 오디오 소스와 연동해 데이터 수집
- 환경 내 오디오 리스너는 1개만 존재 가능 (주의!)
주의: 실시간 처리 기반이기 때문에 학습은 거의 항상 실시간으로 실행되어야 함
실전 예시: 청소기 음성 명령 감지
목표 | Audio Sensor 활용 방법 |
“청소 시작” 명령 반응 | 특정 주파수 대역에서의 스펙트럼 피크 감지 |
유출 소리 감지 | 지속적인 진폭 감시 → 보상 트리거 |
작업 중단 명령 | 신호가 일정 패턴에 도달하면 EndEpisode() 호출 |
제한 사항 및 주의사항
- 실시간 훈련 필수: Unity 에디터 기반 학습이 필요
- 멀티 에이전트 비적합: 오디오 리스너는 1개만 허용됨
- 환경 잡음 처리 필요: 필터링 또는 정규화 전략 필요
- 연산 비용: 오디오 분석은 CNN보다 덜하지만 지속적이므로 성능 고려 필요
훈련 최적화를 위한 전략
전략 | 목적 |
스펙트럼 기반 학습 | 말/음악/경보 구분 등 명확한 소리 구별 |
진폭 기반 학습 | 충돌 소리 감지, 음성 존재 여부 판단 |
정규화 | 데시벨 범위 축소 → 학습 안정성 증가 |
FFT Resolution 튜닝 | 적절한 주파수 해상도로 과적합 방지 |
요약
- Audio Sensor는 실험적이지만 가능성이 큰 센서입니다.
- 음성/소리 기반 이벤트 인식, 위치 추정, 명령 응답에 활용 가능
- 실시간 훈련 환경에서만 안정적으로 작동하며, 단일 에이전트 상황에 적합합니다.