june, 로컬에서 실행되는 음성 비서 (ollama w/ Llama-3 + OpenAI Whisper + Coqui TTS)

june, 로컬에서 실행되는 음성 비서(Voice Assistant)

june, 로컬에서 실행되는 음성 비서 (ollama w/ Llama3-8B + OpenAI Whisper + Coqui TTS)

소개

juneOllama와 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 라이센스로 공개 및 배포되고 있습니다.

:github: june GitHub 저장소

관련 프로젝트

ollama

OpenAI Whisper

Corqui TTS




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: