로컬 음성 인식·합성

최종 업데이트

홈 어시스턴트 음성 알림: Piper 목소리로 집 안에 말 걸기

알림은 Assist의 답과 달라요. 원하는 스피커로 원하는 문장만 보내요.

Assist의 답은 말을 건 기기로 돌아오지만, 알림은 정해 둔 스피커로 보내요. tts1.speak에 합성 엔진과 스피커, 문장을 넣으면 Piper가 만든 목소리가 그 방에서 나와요. 방마다 스피커를 나누고 밤 시간 볼륨을 정하는 방법을 담았어요.

실행 조건과 핵심 내용
  • tts.speak에 합성 엔티티, 스피커, 문장을 넣으면 그 방에서 소리가 나요.
  • 알림은 Assist 응답과 달리 말을 건 기기로 돌아가지 않아요.
  • 방마다 스피커를 나누고 밤 시간에는 볼륨을 낮춰요.

대화 응답과 알림은 다르게 움직여요

Assist에 말을 걸면 답은 말을 건 기기나 휴대폰으로 돌아와요. 반대로 알림은 내가 정한 스피커로 가요. 그래서 '현관문이 열렸어요' 같은 문장은 말을 건 기기가 아니라 거실 스피커에서 나와요.

이 차이를 알고 나면 두 가지를 따로 설계하게 돼요. 대화는 말을 거는 기기 근처에서, 알림은 사람이 있는 방에서 나게 나누면 돼요.

창가 책상에 펼친 책과 작은 컴퓨터, 스피커가 놓여 있어요.
알림은 말을 건 기기가 아니라 정해 둔 스피커에서 나와요.

tts.speak로 문장을 보내요

자동화 동작에서 tts.speak를 고르고, 대상에 합성 엔티티(예: Piper로 만든 TTS)를, 데이터에 스피커와 문장을 넣어요. 스피커는 media_player 엔티티로 지정해요.

같은 문장을 반복하면 캐시를 쓰게 되어 두 번째부터 빨라져요. 시각이나 온도처럼 매번 달라지는 값이 들어가면 캐시가 맞지 않으니, 고정 안내와 값이 들어가는 안내를 나눠 두세요.

방마다 스피커를 나눠요

스피커가 여러 개라면 방 이름을 붙여 두고, 알림이 생긴 위치에 따라 보낼 스피커를 골라요. 현관 센서는 거실로, 세탁기 알림은 세탁실 근처로 보내면 말이 사람을 따라가요.

모든 방에 동시에 말하려면 스피커 그룹을 만들어 한 번에 보내세요. 방마다 따로 보내면 문장이 조금씩 어긋나서 겹쳐 들려요.

마이크와 헤드폰, 음성 파형이 표시된 모니터가 보여요.
방마다 스피커를 나누면 소리가 사람이 있는 곳에서 나요.

밤에는 조용하게

밤 시간에는 볼륨을 낮추고, 급하지 않은 알림은 다음 날 아침으로 미뤄요. 문 열림이나 연기처럼 급한 것만 밤에도 소리로 알리세요.

볼륨은 스피커마다 따로 맞춰야 해요. 같은 값이라도 작은 스피커와 큰 스피커에서 들리는 크기가 달라서, 방마다 한 번씩 들어 보고 정하세요.

문장이 길 때 달라지는 것

긴 문장은 합성 시간도 늘고, 듣는 사람이 중간에 놓치기 쉬워요. 알림은 두 문장 안으로 줄이고, 자세한 내용은 휴대폰 알림이나 화면으로 넘기세요.

숫자는 '23'보다 '이십삼 도'처럼 읽는 대로 적으면 발음이 안정돼요. 기기 이름도 한글 발음으로 적어 두면 엉뚱하게 읽는 일이 줄어요.

노트북 옆 책상과 선반에 금속 장치 두 대가 놓여 있고 케이블이 앞쪽 스위치 상자에 연결되어 있다
밤에는 볼륨을 낮추고 급한 알림만 소리로 보내세요.

용어 각주

  1. 음성 합성 — 텍스트를 발음과 운율을 가진 음성 신호로 변환하는 기술입니다.

    본문으로 돌아가기

자주 묻는 질문

이 글에서 가장 먼저 확인할 것은 무엇인가요?
Assist의 답은 말을 건 기기로 돌아오지만, 알림은 정해 둔 스피커로 보내요. tts.speak에 합성 엔진과 스피커, 문장을 넣으면 Piper가 만든 목소리가 그 방에서 나와요. 방마다 스피커를 나누고 밤 시간 볼륨을 정하는 방법을 담았어요.