본문 바로가기

AI 소식/오픈소스 AI 모델

[오픈소스 AI] 음성을 텍스트로 전환하는 AI, Moonshine-tiny-ko 모델 소개 | 한국어 ASR | 로컬 실행

안녕하세요,

최근에는 음성을 텍스트로 변환하는 기술이 다양한 서비스에서 활용되면서, 음성 인식 모델에 대한 관심도 함께 높아지고 있습니다. 이전 포스팅에서는 Mistral AI에서 공개한 음성 인식 모델을 살펴보며 이러한 기술의 흐름을 간단히 소개한 적이 있습니다. 이번에는 한국어 음성 인식에 초점을 맞춘 모델 Moonshine-tiny-ko를 소개해보려고 합니다. 이 모델은 Moonshine에서 개발한 Moonshine 모델 계열을 기반으로, 한국어 음성 인식을 위해 공개된 모델입니다.

이번 포스팅에서는 Moonshine-tiny-ko 모델이 어떤 특징을 가지고 있는지 살펴보고, 로컬 환경에서 간단하게 사용하는 방법도 함께 알아보겠습니다.


반응형

Moonshine-tiny 모델이란

Moonshine-tiny 모델은 음성을 텍스트로 변환하는 자동 음성 인식(ASR, Automatic Speech Recognition) 모델입니다. Useful Sensors에서 개발한 Moonshine 모델 계열 가운데 하나로, 음성 데이터를 입력하면 이를 텍스트 문장 형태로 전사하는 기능을 제공합니다.

Moonshine 모델 시리즈는 여러 버전으로 공개되어 있으며, 그중 한국어 음성 인식을 위해 공개된 모델이 Moonshine-tiny-ko입니다. 이 모델은 한국어 음성 데이터를 입력받아 한국어 텍스트로 변환하는 작업에 사용할 수 있는 모델입니다. Moonshine-tiny 모델은 Moonshine 시리즈 가운데 비교적 작은 규모로 설계된 모델로, 음성 인식 기능을 다양한 환경에서 활용할 수 있도록 공개된 모델 계열에 포함됩니다.

 

 

UsefulSensors/moonshine-tiny-ko · Hugging Face

We’re on a journey to advance and democratize artificial intelligence through open source and open science.

huggingface.co

 

 

주요 특징

moonshine-tiny-ko 모델은 다음과 같은 특징을 가지고 있습니다.

  1. 한국어 음성 인식 전용 모델 : 이 모델은 한국어 음성 데이터를 입력으로 받아 한국어 텍스트로 전사하도록 학습된 모델입니다. 즉 음성 기반 인터페이스나 음성 기록 시스템 등 한국어 ASR 작업에 활용할 수 있습니다.
  2. 경량 모델 구조 : Moonshine Tiny 모델은 약 27M 파라미터 규모의 비교적 작은 모델입니다. 이러한 경량 구조는 제한된 메모리 환경에서도 실행 가능하도록 설계되었습니다.
  3. 저사양 환경을 고려한 설계 : Moonshine 모델 계열은 모바일 기기나 임베디드 시스템처럼 연산 자원이 제한된 플랫폼에서도 음성 인식을 구현할 수 있도록 설계되었습니다. 따라서 실시간 음성 전사나 음성 명령 처리와 같은 응용 환경에서 활용하기 적합합니다.
  4. Transformer 기반 ASR 모델 : Moonshine 모델은 음성을 입력으로 받아 텍스트를 생성하는 sequence-to-sequence 형태의 음성 인식 모델이며, Transformer 기반 구조를 사용합니다.

 

 

벤치마크 성능

Moonshine-tiny 모델은 공개된 벤치마크 기준에서 기존 음성 인식 모델과 비교했을 때 작은 모델 규모 대비 경쟁력 있는 성능을 보여줍니다. Moonshine-tiny 모델은  27M 파라미터 규모의 비교적 작은 모델임에도 불구하고, Whisper Tiny보다 낮은 오류율을 기록하며 더 높은 인식 정확도를 보였습니다. 특히 FLEURS 데이터셋 기준에서는 Whisper Tiny 대비 오류율이 크게 낮은 결과를 확인할 수 있습니다. 물론 Whisper Medium과 같은 대형 모델과 비교하면 성능 차이는 존재하지만, 모델 크기를 고려했을 때 효율적인 성능을 보여주는 경량 음성 인식 모델이라는 점이 특징입니다.Moonshine-tiny 모델은 Whisper Tiny보다 작은 모델 규모임에도 불구하고 더 낮은 CER 값을 기록하며 성능 대비 효율이 높은 경량 ASR 모델로 평가됩니다.

모델 종류 모델 크기 FLEURS (CER ↓) Common Voice 17 (CER ↓)
Moonshine Tiny 27M 8.9 14.94
Whisper Tiny 39M 15.83 37.27
Whisper Medium 769M 6.99 9.38
  • CER(Character Error Rate) 값은 낮을수록 음성 인식 정확도가 높은 것을 의미합니다.
출처: moonshine-tiny-ko 허깅페이스

 

 

라이선스

moonshine-tiny-ko 모델은 허깅페이스에 공개된 라이선스 기준으로 Moonshine AI Community License가 적용됩니다.

이 라이선스는 다음과 같은 특징을 가지고 있습니다.

  • 연구 및 비상업적 사용 가능
  • 일정 조건 하에서 상업적 사용 가능
  • 모델 수정 및 파생 모델 생성 허용
  • 라이선스 및 출처 표시 요구

또한 상업적 사용 시에는 Moonshine 측에 등록해야 하며, 일정 규모 이상의 매출이 발생할 경우 별도의 라이선스를 요청해야 하는 조건이 포함되어 있습니다. 자세한 내용은 아래 라이선스 내용을 확인해보시길 바랍니다.

출처: moonshine-tiny-ko 라이선스

 


 

간단한 사용 예시

Moonshine-tiny-ko 모델은 음성을 텍스트로 변환하는 자동 음성 인식 모델로, 로컬 실행부터 간단한 음성 인식 시스템 구축까지 다양한 방식으로 활용할 수 있습니다. 사용 목적과 환경에 따라 간단한 음성 전사 테스트, 개인 개발 환경에서의 음성 처리 기능 구현, 또는 음성 기반 서비스 개발 등 다양한 형태로 적용할 수 있습니다.

 

로컬 GPU 환경 실행

Moonshine-tiny-ko 모델은 허깅페이스에 공개된 모델 가중치를 기반으로 로컬 환경에서 직접 실행할 수 있습니다. 비교적 작은 모델 규모로 설계되어 있어 개인 개발 환경에서도 부담 없이 테스트할 수 있으며, 음성 파일을 입력하여 텍스트로 변환하는 음성 전사 기능을 간단하게 구현할 수 있습니다. 이러한 방식은 음성 기록 도구나 간단한 음성 인터페이스 기능을 개발할 때 활용할 수 있으며, 전처리나 후처리 로직을 추가하여 다양한 형태로 확장하는 것도 가능합니다.

 

 

[패키지 설치]

# Windows PowerShell
pip install transformers soundfile
pip install torch==2.6.0 torchaudio==2.6.0 --index-url https://download.pytorch.org/whl/cu126

 

[간단한 예시 코드 ]

from transformers import MoonshineForConditionalGeneration, AutoProcessor
import torch
import soundfile as sf

model_path = "Path/to/moonshine/moonshine-tiny-ko"  # 사용자 환경에 맞게 수정
audio_path = "audio/hard_job_KR.wav"  # 사용자 환경에 맞게 수정

device = "cuda:0" if torch.cuda.is_available() else "cpu"
torch_dtype = torch.float16 if torch.cuda.is_available() else torch.float32

model = MoonshineForConditionalGeneration.from_pretrained(model_path).to(device).to(torch_dtype)
processor = AutoProcessor.from_pretrained(model_path)

waveform, sr = sf.read(audio_path)

if waveform.ndim > 1:
    waveform = waveform.mean(axis=1)

inputs = processor(
    waveform,
    sampling_rate=sr,
    return_tensors="pt"
).to(device, torch_dtype)

token_limit_factor = 13 / processor.feature_extractor.sampling_rate
seq_lens = inputs.attention_mask.sum(dim=-1)
max_length = int((seq_lens * token_limit_factor).max().item())

generated_ids = model.generate(**inputs, max_length=max_length)

print(processor.decode(generated_ids[0], skip_special_tokens=True))

 

[실행 결과]

Moonshine-tiny-ko 모델을 활용하여 한국어 음성을 텍스트로 변환해보았습니다. 테스트에 사용한 음성은 영화 극한직업에서 류승룡 배우가 등장하는 장면의 대사를 활용했습니다. 실행 과정에서 텍스트가 완전히 생성되기까지 약 1.5GB 정도의 VRAM이 사용되었으며, 처리 시간도 약 1~2초 정도로 비교적 빠르게 결과가 생성되었습니다.

 

  • 실제 사용된 음성 대사 : "동생이라고 생각한 적 한 번도 없어. 형. 일단 이무배 조명될때까지 사고치지 말자."
  • 결과 : "농생이라고 생각한 적 한 번도 없어. 형. 일단 이 무배 조명 돌 때까지 작업치지 말"

생성 결과

 

전체적으로 문장의 흐름은 어느 정도 유지되지만, 일부 단어에서는 인식 오류가 확인됩니다. 예를 들어 ‘동생’이 ‘농생’으로 인식되거나 ‘사고’가 ‘작업’으로 인식되는 부분이 있었습니다. 또한 영상의 처음과 마지막 구간에서는 음성이 정확히 인식되지 않는 모습도 확인되었습니다. 다소 아쉬운 부분이 존재하지만, 처리 속도가 매우 빠르고 비교적 낮은 사양에서도 동작할 수 있다는 점은 Moonshine-tiny-ko 모델의 굉장히 큰 장점으로 생각되었습니다.

 


 

Moonshine-tiny-ko 모델은 비교적 작은 규모의 음성 인식 모델임에도 불구하고 한국어 음성을 텍스트로 변환하는 기능을 제공하며, 빠른 처리 속도와 낮은 하드웨어 요구 사항을 특징으로 합니다. 이러한 특성 덕분에 개인 개발 환경이나 간단한 음성 전사 기능이 필요한 서비스에서도 활용할 수 있으며, 경량 구조 기반의 한국어 음성 인식 모델이라는 점에서 의미가 있습니다.

 

직접 음성 파일을 활용해 실행해보면 모델의 동작 방식과 성능을 보다 쉽게 확인할 수 있습니다. 간단한 테스트를 통해 Moonshine-tiny-ko 모델이 실제 환경에서 어떻게 작동하는지 확인해보시기 바랍니다.

 

 

감사합니다. 😊

 

반응형