NeuTTS Air: 3초 분량의 음성만으로 음성 복제가 가능한, On-Device TTS(Text-to-Speech) 모델

NeuTTS Air 소개

최근 인공지능 음성 합성(TTS, Text-to-Speech)은 클라우드 기반 API를 중심으로 발전해왔습니다. 하지만 이러한 접근 방식은 보안, 지연(latency), 비용 측면에서 한계를 가지고 있었습니다. 이런 문제를 해결하기 위해 등장한 것이 NeuTTS Air입니다. 이 프로젝트는 영국의 AI 오디오 전문 기업 Neuphonic에서 개발한 온디바이스 TTS 모델로, 클라우드 의존 없이 로컬 환경에서 자연스러운 음성을 생성할 수 있습니다.

NeuTTS Air는 단순히 텍스트를 읽어주는 수준을 넘어서, 즉시 음성 복제(Instant Voice Cloning) 기능을 지원합니다. 즉, 단 3초 분량의 음성만으로 사용자의 목소리 스타일을 학습해 비슷한 음색으로 말하는 모델을 생성할 수 있습니다. 이를 통해 음성 비서, 게임 캐릭터, 장난감, 혹은 프라이버시를 중시하는 기업용 챗봇 등에 적합한 새로운 형태의 로컬 음성 AI 생태계를 열고 있습니다.

모델의 기반은 Qwen 0.5B LLM 백본으로, 텍스트 이해 및 생성 능력이 뛰어나며 2,048토큰의 컨텍스트 윈도우를 지원합니다. 여기에 Neuphonic의 NeuCodec 오디오 코덱이 결합되어, 낮은 비트레이트에서도 고품질 오디오 출력을 제공합니다. 특히 이 모델은 GGML 포맷으로 배포되어, Raspberry Pi와 같은 저사양 장치에서도 실시간으로 동작합니다.

NeuTTS Air는 단순히 기술적 성과를 넘어, 음성 합성 기술을 누구나 사용할 수 있도록 경량화와 오픈소스화에 초점을 맞춘 프로젝트입니다. 클라우드 의존 없이도 고품질의 음성 합성이 가능하다는 점에서, AI 음성 기술의 민주화를 상징하는 프로젝트라 할 수 있습니다.

다른 음성 합성 기술과의 비교

기존의 TTS 모델은 대부분 OpenAI TTS, Google Cloud TTS, ElevenLabs와 같은 클라우드 서비스형 API를 기반으로 합니다. 이러한 서비스들은 강력하지만, 사용자가 자신의 음성을 로컬에서 직접 제어하기 어렵고, 개인 데이터가 외부 서버로 전송된다는 점에서 보안 우려가 존재했습니다.

반면 NeuTTS Air는 완전히 온디바이스(On-Device) 모델입니다. 이는 모델이 로컬 하드웨어에서 직접 실행되기 때문에 지연시간이 거의 없고, 개인정보가 외부로 전송되지 않습니다. 또한 모델 용량이 0.5B 파라미터로 작지만, Neuphonic의 NeuCodec 덕분에 음질 손실 없이 실시간 합성이 가능합니다.

ElevenLabs나 Meta의 TTS 모델이 수십억 파라미터를 사용하는 반면, NeuTTS Air는 효율성과 접근성을 강조하여 실용적인 크기의 모델로 고품질 합성을 실현합니다. 이로써 개발자와 연구자는 별도의 클라우드 구독료 없이도 강력한 음성 AI를 활용할 수 있습니다.

NeuTTS Air의 구성 요소

NeuTTS Air는 다음과 같은 **LLM(언어 모델)**과 오디오 코덱의 조합으로 구성됩니다:

  • 백본(Backbone): Qwen 0.5B LLM
  • 오디오 코덱: NeuCodec (50Hz 신경 오디오 코덱, 단일 코드북 구조)
  • 포맷: GGML (휴대기기 친화형 경량 포맷)
  • 지원 언어 : 영어

이 조합은 속도와 품질, 모델 크기 간의 균형을 최적화하여, 스마트폰이나 노트북에서도 실시간 음성 생성을 가능하게 합니다.

NeuTTS Air 설치 및 사용

NeuTTS Air를 설치하려면 다음과 같은 과정을 거칩니다:

git clone https://github.com/neuphonic/neutts-air.git
cd neutts-air
pip install -r requirements.txt

기본적으로 Python 3.11 이상이 필요하며, espeak 라이브러리를 설치해야 합니다. espeak 라이브러리는 Mac 사용자는 Homebrew를 사용(brew install espeak)하여, Ubuntu 사용자는 apt install espeak 명령어로 설치할 수 있습니다.

GGUF 모델을 사용할 경우, llama-cpp-python 패키지를 설치하여 GPU 가속(CUDA, MPS)도 가능합니다.


NeuTTS Air의 기본 사용 예시는 다음과 같습니다:

python -m examples.basic_example \
  --input_text "My name is Dave, and um, I'm from London" \
  --ref_audio samples/dave.wav \
  --ref_text samples/dave.txt

또는 Python 코드 내에서 직접 호출할 수도 있습니다:

from neuttsair.neutts import NeuTTSAir
import soundfile as sf

tts = NeuTTSAir(
   backbone_repo="neuphonic/neutts-air",
   codec_repo="neuphonic/neucodec"
)
ref_codes = tts.encode_reference("samples/dave.wav")
wav = tts.infer("Hello world!", ref_codes, "samples/dave.txt")
sf.write("output.wav", wav, 24000)


NeuTTS Air의 핵심 기능은 **즉시 음성 복제(Instant Voice Cloning)**입니다.

이를 위해 두 가지 입력이 필요합니다:

  1. 참조 음성 파일 (.wav)
  2. 참조 텍스트 (.txt)

모델은 이 두 데이터를 통해 사용자의 발음, 억양, 음색을 추정하고, 동일한 스타일로 새로운 문장을 합성합니다.

참조 음성은 3~15초 길이의 깨끗한 단일 채널 음성을 권장하며, 배경 잡음이 없는 것이 좋습니다.

사용 팁: 성능 최적화 및 지연 최소화

NeuTTS Air는 모바일 및 임베디드 환경에서 효율적으로 동작하도록 설계되었습니다.

지연을 줄이기 위한 권장 방법은 다음과 같습니다:

  • GGUF 백본 사용
  • 사전 인코딩된 음성 참조 활용
  • ONNX 디코더(neucodec-onnx-decoder) 사용

워터마킹 및 책임성

NeuTTS Air에서 생성된 모든 오디오는 Perth (Perceptual Threshold) Watermarker를 통해 워터마킹 처리됩니다.

이는 합성된 음성과 실제 음성을 구분할 수 있도록 하는 기술로, 악용 방지를 위한 책임성 메커니즘의 일환입니다.

라이선스

NeuTTS Air 프로젝트는 Apache License 2.0으로 공개되어 있으며, 상업적 사용과 수정이 허용됩니다. 단, 출처 명시는 필수입니다.

:house: NeuTTS Air 개발사 Neuphonic 홈페이지

:house: NeuTTS Air 프로젝트 홈페이지

:github: NeuTTS Air 프로젝트 GitHub 저장소

더 읽어보기




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

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

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