본문으로 건너뛰기

설계_STT 모델 찾기

AppsDAMA › devlog · 2026-09-10 · 손봄 2026-09-19 · seed

프로젝트의 시작

STT 모델 서칭

처음에 1차적으로 확인한건, 화자분리가 잘 되는 모델을 서칭하였다.
그때 먼저 서칭하고자 한 프롬프트는 아래와 같다.

"회의록을 작성할때 녹음을 하는데, 화자구분이 잘되는 STT 서비스를 찾고자함. 지금까지 썻던 건, TIRO, 클로바노트임. 둘다 화자구분에 큰 강점이 없고, 화자가 뒤섞이는 문제가 많았음. 화자가 뒤섞인다는건 크게 2가지인데,

  1. 화자가 바뀌는 경우, 1화자가 한말을 2화자가 한것처럼 기록하는 경우
  2. 2~3명의 화자가 한 말을 한 문장처럼 엮어서 1명의 화자가 한것처럼 엮는 경우 녹음기를 사도 되지만, 되도록이면 아이폰과 맥북을 사용하고 싶음.

STT에서 중요한건 회의록 정리따위가 아님. 정확히 녹음에서 화자를 분리해내서 스크립트를 쓰는 것임. 그래서 내가 AI모델에게 먹여서 회의록을 쓸 수 있게끔."

추천 받은 순위는 아래와 같다.

  1. pyannoteAI Precision-2
  2. OpenAI GPT-4o Transcribe Diarize
  3. Deepgram Nova-3 + Diarizer v2

사실 다 써본건 아니고, Open AI까지 써보긴 했다.
근데 PyannoteAI가 명확히 내가 가진 문제를 해결해줬는데,
화자 수를 애초에 강제할 수 있어서, 계속 발생하는 문제인 화자수가 너무 많이 나와서, 내가 일일이 지정해줄 필요가 없었다.

STT 적용하기

다만 문제는 PyannoteAI 를 기본으로 쓰면 몇가지 문제가 있었다.
Precision-2 + Whisper Large v3 Turbo 조합으로 나오게 되는데,
조합하는 방법은

iPhone 원본 녹음
      │
      ├──────────────┐
      ↓              ↓
Precision-2      Whisper Large v3 Turbo
화자/구간 탐지     실제 발화 텍스트
      │              │
      └──────┬───────┘
             ↓
     pyannote reconciliation
 ↓
Speaker_00 [00:14.21–00:17.83]
"저희는 지금 배터리 소재를..."

Speaker_01 [00:17.85–00:18.16]
"네"

Speaker_00 [00:18.22–00:22.91]
"개발하고 있고 양산은 내년..." 

와 같이 두 모델이 별도의 스크립트를 출력하고,
각 모델이 발화와 텍스트에 대해서 Time Stamp를 찍은 것을 시간별로 묶어서, 각 스크립트의 화자를 정하는 방식이었다.

단, 테스트 해보니, 이 조합으로 출력되는 퀄리티가 좋지 않았다. 이유를 들자면.

  1. 모든 음성을 별도의 발화로 잡아서, 문맥이 끊기는 문제가 있었고.
  2. "1번" 문제로 인해서, 너무 문장의 분절이 많았다.
  3. 발화자를 못잡는 경우, 미확인 발화자로 잡은 문제가 있었다.

그래서 Whisper 모델을 쓰는 것을 포기하고,

다시 STT, 특히 한국어 STT를 되는 것을 찾아보았는데,
후보는 Local에서 돌릴 수 있는 QWEN과 저렴한 Soniox 였다.
그 외에도 여러 모델이 있긴 했지만, 한국어 STT 가 만족스럽지 못했다.

그리고 결정한 것은 Soniox.

몇 번이고 녹음을 변환해보면서 선택한...

그렇게 최종적으로 조합할 수 있는 모델은 선택 완료...!