로컬 음성 인식·합성
최종 업데이트
홈 어시스턴트 음성 알림: Piper 목소리로 집 안에 말 걸기
알림은 Assist의 답과 달라요. 원하는 스피커로 원하는 문장만 보내요.
Assist의 답은 말을 건 기기로 돌아오지만, 알림은 정해 둔 스피커로 보내요. tts1.speak에 합성 엔진과 스피커, 문장을 넣으면 Piper가 만든 목소리가 그 방에서 나와요. 방마다 스피커를 나누고 밤 시간 볼륨을 정하는 방법을 담았어요.
대화 응답과 알림은 다르게 움직여요
Assist에 말을 걸면 답은 말을 건 기기나 휴대폰으로 돌아와요. 반대로 알림은 내가 정한 스피커로 가요. 그래서 '현관문이 열렸어요' 같은 문장은 말을 건 기기가 아니라 거실 스피커에서 나와요.
이 차이를 알고 나면 두 가지를 따로 설계하게 돼요. 대화는 말을 거는 기기 근처에서, 알림은 사람이 있는 방에서 나게 나누면 돼요.

tts.speak로 문장을 보내요
자동화 동작에서 tts.speak를 고르고, 대상에 합성 엔티티(예: Piper로 만든 TTS)를, 데이터에 스피커와 문장을 넣어요. 스피커는 media_player 엔티티로 지정해요.
같은 문장을 반복하면 캐시를 쓰게 되어 두 번째부터 빨라져요. 시각이나 온도처럼 매번 달라지는 값이 들어가면 캐시가 맞지 않으니, 고정 안내와 값이 들어가는 안내를 나눠 두세요.
방마다 스피커를 나눠요
스피커가 여러 개라면 방 이름을 붙여 두고, 알림이 생긴 위치에 따라 보낼 스피커를 골라요. 현관 센서는 거실로, 세탁기 알림은 세탁실 근처로 보내면 말이 사람을 따라가요.
모든 방에 동시에 말하려면 스피커 그룹을 만들어 한 번에 보내세요. 방마다 따로 보내면 문장이 조금씩 어긋나서 겹쳐 들려요.

밤에는 조용하게
밤 시간에는 볼륨을 낮추고, 급하지 않은 알림은 다음 날 아침으로 미뤄요. 문 열림이나 연기처럼 급한 것만 밤에도 소리로 알리세요.
볼륨은 스피커마다 따로 맞춰야 해요. 같은 값이라도 작은 스피커와 큰 스피커에서 들리는 크기가 달라서, 방마다 한 번씩 들어 보고 정하세요.
문장이 길 때 달라지는 것
긴 문장은 합성 시간도 늘고, 듣는 사람이 중간에 놓치기 쉬워요. 알림은 두 문장 안으로 줄이고, 자세한 내용은 휴대폰 알림이나 화면으로 넘기세요.
숫자는 '23'보다 '이십삼 도'처럼 읽는 대로 적으면 발음이 안정돼요. 기기 이름도 한글 발음으로 적어 두면 엉뚱하게 읽는 일이 줄어요.

용어 각주
음성 합성 — 텍스트를 발음과 운율을 가진 음성 신호로 변환하는 기술입니다.
본문으로 돌아가기
자주 묻는 질문
- 이 글에서 가장 먼저 확인할 것은 무엇인가요?
- Assist의 답은 말을 건 기기로 돌아오지만, 알림은 정해 둔 스피커로 보내요. tts.speak에 합성 엔진과 스피커, 문장을 넣으면 Piper가 만든 목소리가 그 방에서 나와요. 방마다 스피커를 나누고 밤 시간 볼륨을 정하는 방법을 담았어요.
