OmniVoice: 600개 이상의 언어를 지원하는 제로샷 음성 복제 및 음성 디자인 TTS 모델

OmniVoice 소개

음성 합성(Text-to-Speech, TTS) 기술은 최근 몇 년간 눈부신 발전을 이루어 왔습니다만, 대부분의 모델은 영어 또는 소수의 고자원 언어에 집중되어 있어 전 세계 언어 다양성을 충분히 반영하지 못한다는 한계가 있었습니다. 또한 특정 화자의 목소리를 복제하거나 세밀하게 조절하는 기능은 대규모 학습 데이터와 복잡한 파이프라인을 필요로 했습니다.

이러한 맥락에서 k2-fsa 팀이 공개한 OmniVoice는 단순화된 확산 언어 모델(Diffusion Language Model) 아키텍처를 기반으로 600개 이상의 언어를 지원하며, 제로샷(zero-shot) 음성 복제와 음성 디자인을 동시에 제공하는 오픈소스 TTS 시스템입니다. OmniVoice는 현재 공개된 제로샷 TTS 모델 중 가장 광범위한 언어 커버리지를 목표로 설계되었으며, PyPI를 통해 손쉽게 설치하고 활용할 수 있다는 점에서 실용성이 높습니다.

OmniVoice의 가장 큰 특징 중 하나는 뛰어난 추론 속도입니다. 실시간 배율 지수(Real-Time Factor, RTF)가 0.025에 불과하여 실시간 대비 40배 빠른 속도로 음성을 생성할 수 있습니다. 이는 단순한 수치가 아니라, 배치 처리나 실시간 응용 서비스에서 실질적으로 활용 가능한 수준의 성능을 의미합니다. 모델은 ArXiv 논문(2604.00688)과 함께 HuggingFace에 모델 가중치와 데모 스페이스가 공개되어 있어, 연구자부터 실무 개발자까지 폭넓게 활용할 수 있습니다.

OmniVoice의 세 가지 음성 생성 모드

OmniVoice는 크게 세 가지 방식으로 음성을 생성할 수 있습니다. 첫 번째는 음성 복제(Voice Cloning) 모드로, 참조 음성 파일을 제공하면 해당 화자의 목소리로 원하는 텍스트를 읽어줍니다. 두 번째는 음성 디자인(Voice Design) 모드로, 성별, 나이, 음조, 억양, 방언, 속삭임 효과 등 속성을 텍스트로 지정하여 새로운 목소리를 생성할 수 있습니다. 세 번째는 자동 음성 생성(Auto Voice) 모드로, 참조 음성이나 속성 지정 없이도 텍스트만 입력하면 자동으로 적절한 목소리로 음성을 생성합니다. 이 세 모드는 아래와 같이 Python API를 통해 간결하게 사용할 수 있습니다.

from omnivoice import OmniVoice

model = OmniVoice.from_pretrained("k2-fsa/OmniVoice", device_map="cuda:0")

# 음성 복제: 참조 음성 파일과 텍스트 제공
audio = model.generate(
    text="Hello, this is a test of zero-shot voice cloning.",
    ref_audio="ref.wav",
    ref_text="Transcription of the reference audio."
)

# 음성 디자인: 속성 텍스트로 목소리 설계
audio = model.generate(
    text="Hello, this is a test of zero-shot voice design.",
    instruct="female, low pitch, british accent"
)

# 자동 생성: 텍스트만으로 음성 생성
audio = model.generate(text="This is a sentence without any voice prompt.")

음성 복제 시 ref_text를 직접 제공하지 않아도, Whisper ASR을 통해 자동으로 참조 텍스트를 인식할 수도 있습니다. 음성 디자인에서 지원하는 속성으로는 성별(남성/여성), 나이(어린이/성인/노인), 음조(높음/중간/낮음), 스타일(속삭임 등), 영어 억양(미국/영국/호주/인도 등), 중국어 방언 등이 있습니다.

OmniVoice의 고급 기능

OmniVoice는 단순한 텍스트-음성 변환을 넘어 다양한 고급 기능을 제공합니다. 비언어적 표현(Non-verbal Elements) 기능을 통해 텍스트 내에 [laughter], [sigh], [sniff] 등의 태그를 삽입하면 웃음, 한숨, 코웃음 소리를 자연스럽게 삽입할 수 있습니다. 발음 제어 기능은 중국어의 경우 핀인(Pinyin)과 성조 번호를, 영어의 경우 CMU 발음사전 형식을 사용하여 특정 단어의 발음을 교정할 수 있습니다. 이 밖에도 생성 파라미터를 통해 확산 반복 횟수(num_step), 말하기 속도(speed), 출력 길이(duration) 등을 세밀하게 조절할 수 있습니다.

커맨드라인 도구도 세 가지 방식으로 제공됩니다. omnivoice-demo는 Gradio 기반의 웹 인터페이스를 실행하고, omnivoice-infer는 단일 샘플 추론에, omnivoice-infer-batch는 다중 GPU를 활용한 배치 추론에 사용됩니다. 특히 배치 처리 시 JSONL 형식의 입력 파일을 사용하여 대규모 음성 생성 작업을 효율적으로 처리할 수 있습니다.

OmniVoice 설치 방법

OmniVoice는 PyPI를 통해 간단히 설치할 수 있습니다. PyTorch 2.8.0 이상(NVIDIA GPU 또는 Apple Silicon 모두 지원)을 사전에 설치한 뒤 아래 명령어를 실행하면 됩니다.

pip install omnivoice

또는 소스에서 직접 설치하거나 UV 패키지 매니저를 사용할 수도 있습니다.

# GitHub 소스에서 설치
pip install git+https://github.com/k2-fsa/OmniVoice.git

# UV 패키지 매니저 사용
git clone https://github.com/k2-fsa/OmniVoice.git
cd OmniVoice
uv sync

웹 데모 인터페이스를 실행하려면 다음 명령어를 사용하면 됩니다.

omnivoice-demo --ip 0.0.0.0 --port 8001

라이선스

이 프로젝트는 Apache 2.0 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용, 수정, 배포할 수 있습니다.

:framed_picture: OmniVoice 데모

:books: OmniVoice 문서 사이트

:scroll: OmniVoice 논문

:github: OmniVoice 프로젝트 GitHub 저장소

:hugs: OmniVoice 모델 다운로드

더 읽어보기




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

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

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