본문 바로가기
AI Project/Edge AI Agent - 음성처리(연구,분석,검증))

[비교/검증-4] #6. Edge Agent AI 음성처리 : Vosk 실행 , 화자분리 , 트러블슈팅

by 으노으뇨 2026. 4. 30.
728x90
SMALL

제 포스팅은 AI가 작성한게 아닌 한글자 한글자 타자를 쳐서 작성한 포스팅입니다. 구독 좋아요 댓글은 힘이됩니다.

안녕하세요~~~!!! 지난번 포스팅으로는

2026.04.29-[비교/검증-2] #6. Edge Agent AI 음성처리 : Sherpa-ONNX 실행 , 화자분리, 트러블슈팅정리

 

[비교/검증-2] #6. Edge Agent AI 음성처리 : Sherpa-ONNX 실행 , 화자분리, 트러블슈팅정리

제 포스팅은 AI가 작성한게 아닌 한글자 한글자 타자를 쳐서 작성한 포스팅입니다. 구독 좋아요 댓글은 힘이됩니다. 안녕하세요!! 이번에는 Sherpa-ONNX엔진에 대해서 알아보고 한번 모바일환경에

uno-kim.tistory.com

셰르파 -오닉스 + 파이썬으로 엑시노스1380 + 램2기가 환경에서 화자분리를 도전해봤습니다.

결과가 나와서 성공했지만 그래도 어느정도는 나오지 않았을까 기대했었지만 조금은! 실망했었습니다.

지금까지 저 파이썬의 늪에서 허우적대기도 하고, C++의 깡패 같은 속도에 감탄하기도 했어요

단돈(?) 50MB의 용량으로 엑시노스 1380의 배터리 하나 축내지 않고 화자를 턱턱 분리해 내는 미친 효율의 라이브러리.

오늘은 이 바닥의 진정한 고인물, Vosk(보스크)에 대해 영혼까지 털어봅시다!


Vosk의 족보

요즘 AI 하면 다들 OpenAI나 구글만 쳐다보지만, 음성 인식의 역사에서 절대 빼놓을 수 없는 전설적인 이름이 있습니다.

바로 Kaldi(칼디)입니다.

 

  • Kaldi의 탄생: 다니엘 포비라는 천재 엔지니어를 주축으로 만들어진 오픈소스 음성 인식 툴킷입니다. 딥러닝 트랜스포머 모델들이 세상을 지배하기 전까지, 전 세계 거의 모든 음성 인식 연구와 상용 서비스는 이 Kaldi를 깎아서 만들었다고 해도 과언이 아닙니다!!!!
  • Vosk의 등장: 하지만 Kaldi는 C++로 짜인 연구용 툴이라 빌드와 세팅이 토가 나올 정도로 빡셌대요.. 이때 Alpha Cephei라는 회사의 개발자들이 "야, 이 훌륭한 Kaldi를 모바일이나 라즈베리파이 같은 엣지 기기에서 딸깍하고 돌아가게 만들어보자!"라며 패키징한 것이 바로 Vosk입니다!!!!

즉..

음성 인식계의 근본(Kaldi)을 모바일 사이즈로 압축해 놓은 궁극의 엑기스

작동 원리와 핵심 알고리즘

최신 Whisper가 무식하게 거대한 파라미터로 문맥을 때려 맞추는 LLM 방식이라면, Vosk는 철저하게 통계학과 신호 처리의 정수를 따릅니다.

① STT 알고리즘: 베이즈 정리와 HMM의 콜라보

Vosk는 소리와 언어를 분리해서 계산합니다. 오디오 파형 O값이 주어졌을 때, 가장 확률이 높은 단어의 조합 W를 찾는 고전적인 통계 방정식에 기반합니다!!

  •  P ( O | W ) : 음향 모델. 보통 TDNN(Time Delay Neural Network)을 사용하여 "이 소리가 '가'라는 발음일 확률"을 계산한다.
  • P ( W ) : 언어 모델. N-gram 방식을 사용하여 "앞에 '제육'이 왔으니 뒤에 '볶음'이 올 확률"을 확률망으로 계산한다.

② 화자 분리(Speaker ID): X-vector와 PLDA

우리가 Vosk를 쓰는 진짜 이유! 단 13MB짜리 모델로 어떻게 사람 목소리를 구분할까?

Vosk는 목소리에서 X-vector라는 고정된 길이의 수학적 특징 벡터(임베딩)를 추출합니다!.

그리고 두 목소리 벡터 X_1과 X_2가 같은 사람인지 판별할 때 코사인 유사도나 PLDA를 사용합니더

여기서잠깐 !!! PLDA 란?! : 수많은 데이터 중에서 '이 사람이 그 사람이 맞는지'를 확률적으로 계산해서 정확하게 판별해내는 기술

이 수학적 거리 값이 특정 임계치를 넘으면 "오, 아까 걔네!" 하고 같은 화자로 묶어버리는 것입니다.

모델이 무거울 필요가 전혀 없는 완벽한 수학적 로직인거죠!


Vosk의 장점

  • 초경량ㅎㅎㅎㅎ  : Whisper base 모델이 약 140MB, 보통 실무에서 쓰는 모델이 1~3GB를 훌쩍 넘는다. 하지만 Vosk 한국어 모델은 42MB, 화자 식별 모델은 13MB다. 합쳐서 60MB도 안 된다. 엑시노스 1380의 L3 캐시에 거의 다 올라갈 수준이다!!!!!
  • 오프라인 네이티브: 클라우드? 와이파이? 다 필요 없다. 비행기 모드에서도 완벽하게 동작한다.
  • 미친 반응 속도 : 스트리밍 처리에 최적화되어 있어서, 사용자가 말을 끝내기도 전에 버퍼 단위로 텍스트를 뱉어낸다. 실시간 에이전트를 만들 때 딜레이가 거의 제로에 가깝다.

단점과 한계

그럼 이렇게 좋은 걸 왜 다들 안 쓰고 Whisper로 넘어갔을까? 바로 '맥락' 파악 능력이 박살 나 있기 때문이다.

 

  • 워드 샐러드와 발음 그대로 적기: 트랜스포머 기반 AI는 "엘 에스 증 권"이라고 들려도 문맥상 "LS증권"으로 스스로 교정을 한다. 하지만 통계 기반의 Vosk는 들리는 음소를 정해진 단어 사전 안에서만 찾는다.
    그래서 사전에 없는 신조어나 고유명사가 나오면 "제 유 복 음 어 데"처럼 충격적인 외계어를 뱉어버린다.....ㅠㅠ
  • 노이즈 취약성: 주변에 잡음이 끼면 X-vector 추출기가 헷갈려 하면서 화자 A를 B로 오인하는 경우가 발생한다.

그래도 응용가능성은??

그렇다면 Vosk는 버려야 할까? 절대 아니라고 생각합니다!!!

이 녀석의 '가벼움'과 '화자 식별 능력'은 다른 최신 모델들과 결합했을 때 미친 시너지를 낸다고 볼 수 있다...!

스마트홈 / IoT 로컬 제어, 내 폰안에서 돌아가는 이런 프로젝트들.. 등등


Vosk 검증/실행

Vosk는 파이썬 라이브러리로 아주 쉽게 돌아갑니다. 모델 2개(한국어 STT, 화자 식별)만 받아서 바로 격발해 봅시다!!!

패키지 및 모델 다운로드

터뮤즈에서 아래 명령어들을 차례대로 입력하세요.

# 1. Vosk 라이브러리 설치
pip install vosk

# 2. 모델을 저장할 폴더 생성 및 이동
mkdir -p ~/projects/vosk_test/models
cd ~/projects/vosk_test/models

모든 준비가 끝났다고 생각한 순간, 뼈를 때리는 에러가 튀어나왔다.

Unsupported platform. Vosk 개발자들은 안드로이드 스마트폰에서 파이썬으로 음성인식을 돌리는 미친놈이 있을 거라고는 상상조차 못 한 것이다.

그들의 코드(__init__.py)에는 Windows, Mac, Linux만 허락되어 있었다...;;;

2026.04.29-[Vosk] 모바일/Termux/ARM 기반 환경에서 Vosk 구동중 발생한 트러블 슈팅 정리

 

[Vosk] 모바일/Termux/ARM 기반 환경에서 Vosk 구동중 발생한 트러블 슈팅 정리

모바일/Termux/ARM 기반 환경에서 Vosk 구동중 발생한 트러블 슈팅 정리했습니다.모든 트러블은 pip install vosk 설치가 안되는것으로 시작되었습니다. ERROR: Could not find a version that satisfies the requirement vo

uno-kim.tistory.com

그래서 위처럼 명글이 탄생하게되었다... 전세계 많은 모바일/Termux/ARM 환경에서 진행하다가 피땀눈물을 흘렸을까...

내글을 보고 많이 널리널리 사용했으면 좋겠다.

그래서 결과는 위와 같이 나왔습니다.

🔥 [Vosk 단독 모드] 모델 로딩 중... (Exynos 1380)
🎧 음성 분석 시작...

[화자 지문: -1.11] 텍스트: 문 듀라셀 결시생 풀어갈지 쓰러짐 생활 이 것을 쓰자
[화자 지문: 0.730] 텍스트: 오늘 드디어 이 저렴 하니
[화자 지문: 0.470] 텍스트: 불이 구 광고인 이 오늘 민간인 신분으로 셔터 마스미 러스 그러나 내 일단 의 신비주의 에 휩싸이 [1] 분 에 우선 의 나중에 속의 드리기 로 하고 오늘 롱숏 증권 특집 [2] 부 소개 보타모 부탁드리 겟습니다 몰아세워 로 변 쓸것 팀이 리 바꼈 습니다 업 멀티 에쎄 시도를 전투맵 정상 및 설
[화자 지문: -0.11] 텍스트: 이 를 받았습니다
[화자 지문: -0.24] 텍스트: 넘어올 허락 을 구 버릇 이 [7] 월 [2] 일 했을 때 폐쇄 솔루션 벌레 썬 뭐랬 어썰트 일본어 혈전 이 의 를 들은 교체 거듭되 는 녀 로 흠집 은 헌돈 거래 시 적 도 많이 하겠다며 야속 잡아가 지구로 R 가 점점 늘어나 고 들이대 점을 선물 이었다 가 내 파생상품 이었다고 마저 글로벌 상품 렸다고 렸다는 뭘까 아다다 벌 했음 뭐랬 어
[화자 지문: 0.000] 텍스트: 전차류 를 쓴다 아츠팟 의 리더 벌 에 쏘 레벤 잊었 니 성상 매일매일 니 우리 볼끝 란 의 타격 있었는데 놀래키 별명 은 하역 을 할 상 케이크 든지 그 뽁뽁 웜 으로 타지 않 바 은 모 고무 를 [10] 우리 체코전 [2] / [3] 와 아냐 세어 글로벌 마켓 영업팀 김기

✅ 분석 완료!

 Vosk : 냉정한 평가

1. 음성 인식(ASR) 정확도: ⭐⭐ (0.5/5) - 못볼 정도

한국어 모델 자체가 완전히 붕괴된 수준';;;

  • 원본: "아니요. 주식 투자가 단순히 돈을 벌기 위함은 아니라고 생각해요. 이제는. 그냥 취미 생활인 거지."
    • Vosk: "문 듀라셀 결시생 풀어갈지 쓰러짐 생활 이 것을 쓰자"
    • 분석: 이건 발음을 잘못 들은 게 아닙니다. 모델이 음향적 특징을 엉뚱한 단어 토큰(듀라셀, 결시생)에 강제로 매핑하면서 문맥이 박살 났습니다.
  • 원본: "오늘 드디어 이게 얼마만이야."
    • Vosk: "오늘 드디어 이 저렴 하니"
    • 분석: 그나마 앞부분 2~3단어는 맞추지만, 뒤로 갈수록받아쓰기 능력을 상실합니다.
  • 원본: "머레솔 팀은 어떤 걸 하시죠 그 많이 하겠다는 야망을 좀 담아 가지고..."
    • Vosk: "벌레 썬 뭐랬 어썰트 일본어 혈전 이 의 를 들은 교체 거듭되 는 녀 로 흠집 은 헌돈 거래 시..."
    • 분석: 이건 거의 정신 분열 수준입니다. ㅋㅋㅋㅋ

웃겨서 정리해봤어요 ㅋㅋㅋㅋㅋ

왜 이렇게 처참할까? (원인 분석)

  1. 모델의 한계 (Vosk-model-small-ko): 우리가 다운받은 50MB짜리 small 모델은 애초에 모바일에서 '명령어(불 켜, 알람 맞춰)' 정도만 알아듣게 설계된 초경량 모델입니다. 유튜브 영상처럼 빠르고 일상적인 대화(자연어)를 처리할 능력이 아예 없습니다.
  2. 언어 모델(LM)의 부재: Whisper는 거대한 언어 모델을 바탕으로 앞뒤 문맥을 유추해서 오타를 교정합니다. 하지만 Vosk small 모델은 문맥을 모릅니다. 그냥 들리는 소리를 가장 비슷한 단어 사전에 끼워 맞추기 때문에 "듀라셀 결시생" 같은 기괴한 조합이 나오는 겁니다.

2. 처리 속도 : ⭐ (1/5) - 답답해서 내가 말하고 만다

약 30분~35분 정도 소요되었습니다... (RTF 약 15~17 수준 추정, 극도의 병목 발생)

3. 화자 분리 : ⭐⭐⭐⭐ (2/5) - 음..?

그나마 봐줄 만한 건 이 부분입니다. -1.11, 0.730 이렇게 되어있는데, 이 숫자는 누구다! 라고 분류한게 아니라 

일단 이 오디오의 주파수를 분석해서 128차원의 숫자값으로 변환하고 추출까지는 성공했다고 보여진다.

4. 시스템 안정성 : ⭐ (1/5) 

너무오래걸려서 죽은줄알았다....

화자 분리의 함정: ID가 아니라 '벡터(Vector)'다

터미널에 찍힌 숫자를 보고 환호했으나, 냉정히 분석해 보니 그것은 완성된 화자 ID(Speaker 1, 2)가 아니었다.

128차원으로 이루어진 목소리 임베딩(x-vector)의 첫 번째 차원 값일 뿐이었다.

즉, 엑시노스 1380은 지금 목소리의 'DNA'를 추출하는 데 30분을 쏟아부은 것이다.

이 원시 데이터(Raw DNA)를 유의미한 화자 태그로 바꾸려면 Cosine Similarity 기반의 클러스터링 알고리즘이 추가로 필요하다.

저는 여기서 프로젝트의 힌트를 얻었습니다.

Vosk와 Whisper를 합치면 어떨까...?????

728x90
LIST

댓글