이 프로젝트는 macOS에서 동작하는 음성 인식 비서 애플리케이션입니다. Python을 사용하여 SFSpeechRecognizer 프레임워크와 연동하여 음성을 인식하고, 사용자의 명령어에 따라 다양한 작업을 수행합니다.
- 음성 인식 기반 제어: "여보게"라는 호출 명령어를 통해 활성화됩니다.
- 듀얼 TTS 엔진 지원: Edge TTS와 Typecast TTS 두 가지 음성 합성 엔진을 선택하여 사용할 수 있습니다.
- Edge TTS: Microsoft Edge의 무료 TTS (기본값,
ko-KR-SunHiNeural) - Typecast TTS: Typecast AI의 고품질 AI 음성 (API 키 필요, 무료 사용량 제공)
- Edge TTS: Microsoft Edge의 무료 TTS (기본값,
- 뉴스 제공: "오늘 뉴스"라고 말하면 Google 뉴스의 주요 기사를 Gemini AI로 요약하고, 서울의 현재 날씨 정보와 함께 음성으로 읽어줍니다.
- 시간 및 날짜 안내: "몇 시야" 또는 "몇일이야"와 같은 명령어로 현재 시간과 날짜를 음성으로 안내합니다.
- 운영체제: macOS 10.15 Catalina 이상
- Python: 3.13 이상
uv: 프로젝트 의존성 관리를 위해uv가 필요합니다.curl -LsSf https://astral.sh/uv/install.sh | sh- Gemini API 키: 뉴스 요약 기능을 사용하려면 Google Gemini API 키가 필요합니다. 프로그램 첫 실행 시 API 키를 입력하라는 메시지가 표시되며, 여기에서 발급받을 수 있습니다.
- Typecast API 키 (선택): Typecast TTS를 사용하려면 Typecast Developer에서 API 키를 발급받아야 합니다.
프로젝트에 필요한 의존성을 설치하려면 아래 명령어를 실행하세요.
make syncmake runmake run-edgemake run-typecast최초 Typecast TTS 실행 시 API 키와 Voice ID를 입력하는 과정이 진행됩니다. 한번 입력하면 ~/.listener.json에 저장되어 다음부터 자동으로 사용됩니다.
make list-voices# Edge TTS로 실행
uv run python listener.py --tts edge
# Typecast TTS로 실행
uv run python listener.py --tts typecast
# 특정 Typecast 보이스 및 모델 지정
uv run python listener.py --tts typecast --typecast-voice tc_672c5f5ce59fac2a48faeaee --typecast-model ssfm-v30
# 보이스 목록 보기
uv run python listener.py --list-voicesTTS 엔진 설정은 아래 우선순위로 적용됩니다:
- CLI 인자:
--tts edge또는--tts typecast - 환경변수:
TTS_ENGINE=edge또는TTS_ENGINE=typecast - 설정 파일:
~/.listener.json의tts_engine필드 - 기본값:
edge
| 변수 | 설명 | 기본값 |
|---|---|---|
TTS_ENGINE |
TTS 엔진 선택 (edge 또는 typecast) |
edge |
TYPECAST_API_KEY |
Typecast API 키 | - |
TYPECAST_VOICE_ID |
Typecast Voice ID | - |
TYPECAST_MODEL |
Typecast 모델 (ssfm-v21 또는 ssfm-v30) |
ssfm-v30 |
GEMINI_API_KEY |
Gemini API 키 (뉴스 요약용) | - |
{
"gemini_api_key": "your-gemini-api-key",
"tts_engine": "typecast",
"typecast_api_key": "your-typecast-api-key",
"typecast_voice_id": "tc_672c5f5ce59fac2a48faeaee",
"typecast_model": "ssfm-v30"
}| 명령어 | 설명 |
|---|---|
| "여보게" | 기본 12초인 듣기 시간을 30초로 연장합니다. |
| "오늘 뉴스" | 최신 뉴스를 요약하고 날씨를 알려줍니다. |
| "몇 시야" | 현재 시간을 알려줍니다. |
| "몇일이야" | 오늘 날짜를 알려줍니다. |
| "오늘 날씨" / "몇 도야" | 서울의 현재 날씨와 6시간 후 예보를 알려줍니다. |
| "...해줘" (예: "종료해줘") | 프로그램 실행을 종료합니다. |
Ctrl + C |
터미널에서 직접 프로그램을 종료합니다. |