음성으로 헤르메스 다루기 — 말로 지시하고 목소리로 듣는다
지금까지는 헤르메스에게 키보드로 일을 시켰습니다. 이번 가이드에서는 입력 수단을 음성으로 넓혀 봅니다. 키보드 앞에 앉지 않고 말로 지시하고, 답을 목소리로 듣는 흐름입니다.
음성을 쓰는 자리는 두 군데입니다. 하나는 헤르메스를 켜 둔 내 컴퓨터(CLI) 에서 손을 떼고 말로 대화하는 것이고, 다른 하나는 슬랙 같은 메신저에서 음성으로 묻고 음성으로 답을 받는 것입니다.
좋은 점은 기본 구성에 키가 하나도 필요 없다는 것입니다. 말을 글자로 바꾸는 일은 내 컴퓨터 안에서 처리하고, 답을 읽어 주는 목소리도 무료 음성을 씁니다. 더 좋은 목소리가 필요할 때만 외부 음성 서비스를 선택해서 얹습니다.
💡 사전 요구사항: 헤르메스 기본 LLM Wiki 가이드 이전 단계에서 헤르메스 CLI(TUI)를 띄우고 슬래시 명령을 써 보셨다면 이번 실습을 그대로 따라오실 수 있습니다.
음성, 두 표면 — 내 컴퓨터와 메신저
같은 음성 모드라도 표면마다 동작이 조금씩 다릅니다. 핵심 차이는 답이 소리로 바로 흘러나오는가 입니다.
- CLI(내 컴퓨터):
Ctrl+B로 손을 떼고 말하면, 답이 스피커로 바로 재생됩니다. 가장 즉각적인 핸즈프리 경험입니다. - 메신저(슬랙·텔레그램 등): 음성으로 묻고 음성으로 답을 받지만, 도착한 음성은 한 번 눌러서 듣습니다. 텔레그램은 음성 메시지로, 슬랙은 오디오 파일로 옵니다.
이번 실습은 즉각 재생이 되는 CLI 핸즈프리를 중심으로 익히고, 메신저(슬랙)는 "밖에서도 된다"를 확인하는 정도로 다룹니다.
1단계 · 음성 기능 설치
먼저 지금 음성을 쓸 준비가 됐는지 확인합니다. 헤르메스 TUI 입력줄에 슬래시 명령을 칩니다.
/voice status
설치 전에는 아래처럼 두 항목이 MISSING 으로 뜹니다. 마이크로 소리를 잡는 부분과, 말을 글자로 바꾸는 부분이 아직 비어 있다는 뜻입니다.
Voice Mode Status
Mode: OFF
TTS: OFF
Requirements:
Audio capture: MISSING (pip install sounddevice numpy)
STT provider: MISSING
Environment: Audio libraries not installed
이제 음성 의존성을 설치합니다. 한 가지 주의할 점이 있습니다. 헤르메스는 자기만의 격리된 공간인 가상환경 안에서 돕니다. 이 가상환경을 먼저 켜고 설치해야 엉뚱한 곳에 깔리지 않습니다. 그래서 두 줄을 함께 실행합니다.
source ~/.hermes/hermes-agent/venv/bin/activate
cd ~/.hermes/hermes-agent
uv pip install -e ".[voice]"
⚠️ 맨 위의
source줄을 빼먹고 바로 설치하면 다른 환경에 잘못 깔릴 수 있습니다. 설치 중 프롬프트 앞에(venv)표시가 떠 있어야 가상환경이 제대로 켜진 것입니다. 이 표시가 안 보이면source줄부터 다시 실행하세요.
설치되는 것은 세 가지입니다. 말을 글자로 바꾸는 엔진(로컬 STT)과 마이크 입력 두 개이고, 전부 키 없이 무료로 깔립니다.
설치가 끝나면 헤르메스를 껐다 켭니다. 돌고 있던 프로그램은 방금 깐 패키지를 아직 모르기 때문에, 재시작을 해야 인식합니다. 다시 상태를 확인하면 항목이 전부 OK 로 바뀝니다.
Voice Mode Status
Mode: OFF
TTS: OFF
Requirements:
Audio capture: OK
STT provider: OK (local faster-whisper)
✅
STT provider: OK (local faster-whisper)가 보이면 성공입니다. 말을 글자로 바꾸는 일을 내 컴퓨터 안에서 키 없이 처리한다는 뜻입니다. 다만Mode와TTS는 아직 OFF이니, 다음 단계에서 따로 켭니다.
Windows · WSL 사용자 — 오디오 브리지 (한 단계 더)
WSL은 사운드 장치가 따로 없습니다. 그래서 위에서 Audio capture: OK 가 떠도, /voice status 끝에 아래 안내가 함께 뜰 수 있습니다.
Environment: Running in WSL -- audio requires PulseAudio bridge.
마이크와 스피커를 Windows 오디오에 연결하는 PulseAudio 브리지가 한 번 더 필요하다는 뜻입니다. WSLg가 /mnt/wslg/PulseServer 로 이미 브리지를 제공하니, 환경변수와 ALSA 설정만 잡으면 됩니다.
echo 'export PULSE_SERVER=unix:/mnt/wslg/PulseServer' >> ~/.bashrc
source ~/.bashrc
printf 'pcm.!default pulse\nctl.!default pulse\n' > ~/.asoundrc
sudo apt install -y alsa-utils libasound2-plugins
arecord -d 3 /tmp/test.wav
aplay /tmp/test.wav
⚠️
alsa-utils만 깔면arecord에서Unknown PCM pulse오류가 납니다. ALSA를 PulseAudio로 잇는 플러그인libasound2-plugins가 함께 있어야pulse장치가 인식됩니다(위 명령에 포함).
3초 녹음한 소리가 다시 들리면 브리지가 잡힌 것입니다. 그다음 헤르메스를 그 셸에서 다시 띄우면 /voice status 의 WSL 경고가 사라집니다.
⚠️ 원격(SSH)으로만 접속한 서버에는 물리 마이크가 없어 음성 입력이 잡히지 않습니다. CLI 핸즈프리(마이크) 실습은 마이크가 달린 본인 PC의 WSL에서 하세요. 맥과 네이티브 리눅스는 이 브리지가 필요 없습니다.
2단계 · 손을 떼고 대화하기 (CLI 핸즈프리)
음성 모드를 켭니다.
/voice on
켜지면 화면 아래쪽에 마이크 표시와 함께 Ctrl+B 로 녹음하라는 안내가 뜹니다. 이제 키보드를 만지지 않아도 됩니다. Ctrl+B 를 한 번 누르고 말하면, 말이 글자로 바뀌어 들어가고 헤르메스가 답합니다.
Ctrl+B 사용법을 정확히 짚고 갑니다. 많이 헷갈리는 부분입니다.
- 한 번 눌렀다 뗍니다. 길게 누르고 있는 게 아닙니다. 한 번 누르면 녹음이 시작됩니다.
- 말을 멈추고 3초쯤 기다리면 저절로 녹음이 끝나고 글자로 바뀝니다.
- 연속 모드입니다. 한 번 답을 받으면 자동으로 다시 녹음이 시작됩니다.
⚠️ 한 번만 말했는데 이후의 혼잣말이나 주변 소리까지 자꾸 입력으로 들어간다면, 고장이 아니라 연속 모드 때문입니다. 녹음이 자동으로 다시 켜져 있는 것입니다. 한 번만 말하고 끝내려면, 답을 받은 다음
Ctrl+B를 다시 한 번 눌러 녹음을 끕니다. 또는 몇 초 조용히 있으면 자동으로 멈춥니다.
정리하면 이렇습니다. Ctrl+B 로 시작하고, 말하고, 다 됐으면 Ctrl+B 로 다시 끕니다. 이것이 손을 떼고 헤르메스와 대화하는 기본 흐름입니다.
3단계 · 답을 목소리로 듣기, 그리고 한국어로
지금까지는 답이 글자로만 나왔습니다. 답도 목소리로 읽어 주게 켭니다. 여기서 꼭 구분할 것이 있습니다. 듣는 스위치와 말해 주는 스위치는 별개입니다.
/voice on은 내 말을 알아듣는 스위치입니다(STT)./voice tts는 답을 소리 내어 읽어 주는 스위치입니다(TTS).
그래서 둘을 각각 켭니다.
/voice tts
켜고 답을 들어 보면, 한국어 답인데 발음이 어색합니다. 기본 목소리가 영어용으로 잡혀 있기 때문입니다. 한국어 목소리로 바꿔 줘야 자연스럽게 읽습니다.
한국어 무료 목소리는 세 개입니다. 여자 목소리 하나, 남자 목소리 둘인데, 그중 하나가 한국어와 영어를 섞어서 잘 읽는 다국어 남성 목소리입니다.
| 목소리 | 성별 | 특징 |
|---|---|---|
ko-KR-SunHiNeural | 여 | 표준 한국어 |
ko-KR-InJoonNeural | 남 | 표준 한국어 |
ko-KR-HyunsuMultilingualNeural | 남 | 한국어와 영어 혼용에 강함 |
이번 가이드에서는 비서 소피가 여성 캐릭터라, 표준 한국어를 또렷하고 차분하게 읽는 여성 목소리 ko-KR-SunHiNeural 을 씁니다. 남성 목소리가 좋으면 둘 중에 고르면 되고, 답변에 Codex, MCP 같은 영어 단어가 많이 섞인다면 한국어와 영어를 함께 잘 읽는 다국어 남성 ko-KR-HyunsuMultilingualNeural 도 좋은 선택입니다.
바꾸는 곳은 설정 파일 한 곳입니다. 여기에 함정이 하나 있습니다. 설정이 두 군데 있는데, 지금 실행 중인 프로필의 설정이 우선합니다. 그래서 내가 쓰는 프로필의 config.yaml 을 고쳐야 실제로 바뀝니다. (아래 경로의 sophie 자리에 본인 프로필 이름을 넣으세요.)
# ~/.hermes/profiles/sophie/config.yaml
tts:
provider: edge
edge:
voice: ko-KR-SunHiNeural
⚠️ 설정을 바꾸면 항상 헤르메스를 껐다 켭니다. 재시작을 해야 새 목소리가 반영됩니다. 다시
/voice tts를 켜고 답이 자연스러운 한국어 목소리로 읽히는지 확인하세요.
✅ 여기까지가 내 컴퓨터에서 손을 떼고 음성으로 헤르메스를 다루는 전부입니다. 말로 시키고, 목소리로 답을 듣고, 키 하나 없이 됩니다.
4단계 · 메신저에서도 음성으로 (슬랙)
컴퓨터 앞에 없을 때는 슬랙이나 텔레그램으로 헤르메스를 부릴 수 있습니다. 여기서도 음성이 됩니다. 다만 표면마다 음성 전달 방식이 다릅니다.

| 표면 | 음성 받기(STT) | 음성 답변 전달 | 즉각 재생 |
|---|---|---|---|
| CLI(내 컴퓨터) | 마이크 Ctrl+B | 스피커 자동 재생 | O |
| 텔레그램 | 음성 메시지 자동 전사 | 음성 메시지(탭 재생) | X |
| 슬랙 | 음성 메시지 자동 전사 | 오디오 파일 첨부 | X |
받는 방식은 어디서나 같습니다. 음성으로 보내면 자동으로 글자로 바꿔 알아듣습니다. 답할 때만 표면이 갈립니다. 슬랙은 답변에 오디오 파일을 첨부해서 보냅니다. 텍스트로 물어도 음성 답변 파일이 함께 오고, 음성 메시지로 물으면 전사되어 처리됩니다.
⚠️ 슬랙에서 음성이 안 된다는 이야기를 가끔 듣는데, 대부분 권한 하나가 빠져서 그렇습니다. 슬랙 봇에게 파일을 읽고 쓰는 권한(
files:read와files:write)이 있어야 음성 파일이 오갑니다. 이 권한이 없으면 에러도 없이 조용히 안 됩니다. 슬랙에서 음성이 안 되면 이 스코프부터 확인하고 앱을 다시 설치하세요.
5단계 · 더 좋은 목소리로 (외부 프로바이더, 선택)
기본 목소리도 충분히 쓸 만합니다. 다만 더 자연스럽고 좋은 목소리, 또는 원하는 특정 화자로 답을 듣고 싶을 때는 외부 음성 서비스를 붙입니다. 대표적인 것이 ElevenLabs입니다. 품질이 가장 좋지만 유료이고 키가 필요합니다. 안 해도 기본 목소리로 다 되니, 이 단계는 선택입니다.

붙이는 순서는 네 단계입니다.
1. 프로바이더 전환. 음성 서비스용 패키지를 하나 더 깔고, 키를 등록한 뒤, 설정에서 목소리 제공자를 바꿉니다.
source ~/.hermes/hermes-agent/venv/bin/activate
cd ~/.hermes/hermes-agent
uv pip install -e ".[tts-premium]"
키는 ElevenLabs에 가입하면 계정 프로필에서 발급받습니다. 그 키를 헤르메스 환경 파일에 한 줄 적습니다. (키 값은 화면에 노출하지 말고 본인 것만 붙여넣으세요.)
# ~/.hermes/.env
ELEVENLABS_API_KEY=본인_키
2. 보이스 검색. ElevenLabs 사이트의 보이스 라이브러리에서 한국어 목소리를 검색합니다. 마음에 드는 목소리를 고르면 각 목소리마다 고유한 voice ID 가 있습니다. 그 ID를 복사합니다.
3. 설정에 입력. 복사한 ID를 프로필 설정에 넣습니다. 3단계에서 본 같은 파일입니다. 이번에는 제공자를 elevenlabs 로 하고, voice ID와 한국어를 읽을 다국어 모델을 적습니다.
# ~/.hermes/profiles/sophie/config.yaml
tts:
provider: elevenlabs
elevenlabs:
voice_id: 복사한_보이스_ID
model_id: eleven_multilingual_v2
⚠️ voice ID는 손으로 치지 말고 꼭 복사해서 붙여넣으세요. 한 글자만 틀려도 소리가 안 납니다. 그리고
model_id에는 다국어 모델(eleven_multilingual_v2)을 적어야 한국어를 제대로 읽습니다.
4. 게이트웨이 재시작. 설정을 바꿨으니 다시 시작해야 반영됩니다.
hermes -p sophie gateway restart
⚠️ 바꿨는데 답이 글자로는 오지만 소리가 안 날 때가 있습니다. 그럴 때는 보통 두 가지입니다. 키가 빠졌거나, 그 목소리가 내 요금제로는 쓸 수 없는 등급이거나. 사이트 목록에 보인다고 해서 모두 API로 합성되는 것은 아닙니다. 일부 고급 목소리는 유료 등급이라야 실제로 읽어 줍니다. 소리가 안 나면 키와 목소리 등급, 이 두 가지를 확인하세요.
직접 보이스 만들기 — Voice Design (무료 계정도 사용 가능)
라이브러리에 마음에 드는 목소리가 없으면, 원하는 느낌을 글로 설명해 새 목소리를 직접 설계할 수 있습니다. ElevenLabs의 Voice Design 기능입니다. 회사 페르소나마다 다른 목소리를 줄 때도 이렇게 만듭니다.
💡 무료 계정도 됩니다. 웹에서 만드는 Voice Design은 무료로 쓸 수 있고, 이렇게 내 계정에서 만든 보이스는 무료 등급에서도 헤르메스가 API로 정상 합성합니다. (앞에서 본 라이브러리 공유 보이스나 전문 클론 보이스만 유료 등급이 필요합니다.) 무료 한도는 보이스 슬롯 세 개와 월 글자 수 정도라, 개인 실습에는 충분합니다.
만드는 순서는 이렇습니다.
- ElevenLabs 웹에서 Voices → Create Voice → Voice Design 을 엽니다.
- Voice description 에 원하는 음색을 적습니다. 성별·나이·톤은 영어로 적어야 정확하게 반영됩니다(한국어로만 적으면 성별이 약하게 전달됩니다).
- Preview text 에는 그 목소리가 읽을 한국어 문장을 넣습니다.
- Generate 로 생성한 뒤 후보 몇 개를 미리듣고, 마음에 드는 것을 골라 Save 로 이름을 붙여 저장합니다.
- 저장한 보이스에서 ⋮ → Copy Voice ID 로 ID를 복사해, 위 3번 설정의
voice_id에 붙여넣고 게이트웨이를 재시작합니다.
💡 직접 만든 보이스는 공유 목록(Library)이 아니라 내 보이스(My Voices) 에 저장됩니다. 라이브러리 검색에는 안 나오니, 내가 만든 건 My Voices 에서 찾으세요.
아래는 소피(차분한 30대 여성 비서) 보이스를 만드는 예시입니다. 그대로 넣어 보고, 원하는 느낌으로 단어만 바꿔 보세요.
[Voice description (영어로 입력)]
A calm, warm, and professional Korean woman in her early thirties.
She sounds like a trusted executive secretary: composed, clear, and
reassuring. Standard Seoul Korean pronunciation, medium pitch,
unhurried and articulate pace, clean studio sound, no background noise.
[Preview text (한국어로 입력)]
안녕하세요, 소피입니다. 오늘 일정과 메일부터 정리해 드릴게요.
급한 일이 있으면 먼저 처리하고, 나머지는 순서대로 안내해 드리겠습니다.
무엇부터 도와드릴까요? 편하게 말씀해 주세요.
복붙용 명령과 프롬프트
음성 모드는 헤르메스 TUI 입력줄에서 슬래시 명령으로 켜고 끕니다.
/voice status # 설치·상태 확인
/voice on # 음성으로 듣기(STT) 켜기
/voice tts # 답을 음성으로 읽기(TTS) 켜기
/voice off # 음성 모드 끄기
설치·설정에 쓰는 터미널 명령은 다음과 같습니다.
source ~/.hermes/hermes-agent/venv/bin/activate # 가상환경 켜기(설치 전 필수)
uv pip install -e ".[voice]" # 기본 음성(무키)
uv pip install -e ".[tts-premium]" # 외부 TTS(선택)
hermes -p sophie gateway restart # 설정 변경 후 재시작
자주 만나는 문제
⚠️ 설치했는데
/voice status가 그대로 MISSING입니다: 설치 후 헤르메스를 재시작하지 않은 경우입니다. 돌고 있던 프로세스는 새 패키지를 모르니, 껐다 켜고 다시 확인하세요.
⚠️ 엉뚱한 곳에 설치된 것 같습니다:
source로 가상환경을 켜지 않고 설치한 경우입니다. 프롬프트 앞(venv)표시를 확인하고, 안 보이면source ~/.hermes/hermes-agent/venv/bin/activate부터 다시 실행하세요.
⚠️ TTS를 켰는데 발음이 어색합니다: 목소리가 영어용으로 잡혀 있습니다. 프로필
config.yaml의tts.edge.voice를ko-KR-SunHiNeural(여성) 같은 한국어 보이스로 바꾸고 재시작하세요. 전체 설정이 아니라 실행 중인 프로필의 설정을 고쳐야 합니다.
⚠️ 외부 목소리로 바꿨는데 소리만 안 납니다: 텍스트 답은 정상인데 음성만 없다면, 키가 빠졌거나 그 목소리가 요금제에서 막힌 등급입니다. 키와 목소리 등급을 확인하세요.
⚠️ 슬랙에서 음성이 안 옵니다: 봇에
files:read와files:write스코프가 있는지 확인하고 앱을 다시 설치하세요.
마무리
이번에는 음성으로 헤르메스를 다루는 두 표면을 모두 익혔습니다. 내 컴퓨터에서는 Ctrl+B 로 손을 떼고 대화하고, 슬랙에서는 음성으로 묻고 음성 파일로 답을 받았습니다.
두 가지만 기억하면 음성은 어렵지 않습니다. 첫째, 듣는 스위치(/voice on)와 답하는 스위치(/voice tts)는 별개입니다. 둘째, 설정을 바꾸면 항상 껐다 켭니다. 기본은 키 없이 되고, 더 좋은 목소리가 필요할 때만 외부 프로바이더를 선택해서 얹습니다.
다음 가이드에서는 헤르메스가 정해진 시간에 스스로 보고를 보내게 만듭니다. 슬랙이나 이메일로 주간 보고를 정기적으로 받아 보는 흐름입니다. 음성으로 지시하는 단계를 넘어, 반복 업무를 예약하는 자리입니다.
