june, 로컬에서 실행되는 음성 비서(Voice Assistant)
소개
june
은 Ollama와 Whisper, Corqui TTS를 결합하여 사용자 컴퓨터(로컬, local)에서 실행되도록 구현한 음성 비서입니다. Ollama를 사용하여 사용자 컴퓨터에서 대규모 언어 모델(LLM)을 실행하고, 이 LLM을 중심으로 OpenAI의 Whisper는 사용자의 음성을 인식(STT, Speech-to-Text)하여 LLM에 전달합니다. LLM의 답변은 Coqui TTS Toolkit을 사용하여 음성으로 변환하여 출력합니다.
june
은 개인 정보 보호가 필요한 환경에서 음성 비서를 사용할 수 있는 유연한 솔루션을 제공합니다. 외부 서버에 데이터를 전송하지 않고 로컬에서 모든 작업을 처리하여 프라이버시를 보장합니다. 또한, 입/출력을 음성 대신 텍스트로 대체할 수 있어, 다양한 상호작용 모드를 지원하여 사용자의 편의성을 극대화합니다.
주요 특징
-
텍스트 입력/출력: 텍스트로 명령을 입력하고 텍스트로 응답을 받습니다.
-
음성 입력/텍스트 출력: 마이크를 사용해 음성으로 명령을 입력하고 텍스트로 응답을 받습니다.
-
텍스트 입력/오디오 출력: 텍스트로 명령을 입력하고 텍스트와 음성으로 응답을 받습니다.
-
음성 입력/오디오 출력(기본): 마이크로 음성을 입력하고 텍스트와 음성으로 응답을 받습니다.
기본 모델 구성 및 변경
기본 모델 구성 설정은 Ollama의 llama3:8b-instruct-q4_0 모델을 기본으로 사용하며, 음성 인식 모델은 openai/whisper-small.en을, 음성 합성 모델은 tts_models/en/ljspeech/glow-tts
을 사용합니다.
또한, JSON 파일을 사용해 아래와 같이 기본 모델 구성을 변경할 수도 있습니다. 이에 대한 자세한 내용은 README 문서의 Customization 섹션을 참고해주세요.
{
"llm": {
"disable_chat_history": false,
"model": "llama3:8b-instruct-q4_0"
},
"stt": {
"device": "torch device identifier (`cuda` if available; otherwise `cpu`",
"generation_args": {
"batch_size": 8
},
"model": "openai/whisper-small.en"
},
"tts": {
"device": "torch device identifier (`cuda` if available; otherwise `cpu`",
"model": "tts_models/en/ljspeech/glow-tts"
}
}
llm
- 언어 모델 구성
llm.device
: 모델이 할당될 장치(cpu
,cuda
,mps
등)llm.disable_chat_history
: 채팅 기록 비활성화 여부. 기록을 활성화하면 상호작용이 더 동적이 되지만 처리 성능이 더 많이 소모됩니다. 비활성화하면 상호작용이 덜 동적이지만 처리 성능이 덜 소모됩니다.llm.model
: Ollama에서 사용 가능한 언어 모델 태그.llm.system_prompt
: 모델에 제공할 시스템 프롬프트.
stt
- 음성 인식 모델 구성
tts.device
: 모델이 할당될 장치(cpu
,cuda
,mps
등)stt.generation_args
: Hugging Face 음성 인식 파이프라인에서 허용하는 생성 인자.stt.model
: Hugging Face에서 사용 가능한 음성 인식 모델 ID.
tts
- 텍스트-음성 변환 모델 구성
tts.device
: 모델이 할당될 장치(cpu
,cuda
,mps
등)tts.generation_args
: Coqui TTS API에서 허용하는 생성 인자.tts.model
: Coqui TTS Toolkit에서 지원하는 텍스트-음성 변환 모델 ID.
음성 변환
Coqui의 TTS Toolkit에서는 음성 클로닝을 지원하는 모델들(예. tts_models/multilingual/multi-dataset/xtts_v2
)이 있습니다. 이러한 모델을 사용하여 약 1분 정도의 음성 클립을 사용해 자신의 목소리 프로필을 만들 수 있습니다. 다음과 같은 사용자 정의 구성을 통해 사용할 수 있습니다.
{
"tts": {
"model": "tts_models/multilingual/multi-dataset/xtts_v2",
"generation_args": {
"language": "en",
"speaker_wav": "/path/to/your/target/voice.wav"
}
}
}
라이센스
june
프로젝트는 MIT 라이센스로 공개 및 배포되고 있습니다.
june GitHub 저장소
https://github.com/mezbaul-h/june
관련 프로젝트
ollama
https://github.com/ollama/ollama
OpenAI Whisper
https://github.com/openai/whisper
Corqui TTS
https://github.com/coqui-ai/TTS
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임
이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일
로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래
쪽에 좋아요
를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~