AI · AI 오디오
AI 음성 인식(STT)은 어떻게 동작할까?
핵심 답변
음성 인식(STT, 자동 음성 인식 ASR)은 소리를 어떤 주파수가 시간에 따라 얼마나 큰지 보여 주는 그림, 스펙트로그램으로 바꿉니다. 신경망이 이 그림을 읽고 가장 그럴듯한 텍스트를 토큰 하나씩 써 내려갑니다. Whisper 같은 모델은 수십만 시간의 받아쓰기 음성으로 학습해 여러 언어와 잡음을 처리하지만, 이름을 잘못 알아듣거나 무음 구간에서 없는 문장을 만들어 내기도 합니다.
음성 텍스트 변환 열기음파에서 글자까지, 네 단계
Whisper 같은 최신 인식기는 파일을 넣을 때마다 같은 파이프라인을 거칩니다.
- 리샘플링. 오디오를 초당 16,000 샘플의 모노 채널로 변환합니다. 음성 정보 대부분이 8kHz 아래에 있으므로 이 정도면 충분합니다.
- 스펙트로그램 생성. 신호를 짧게 겹치는 구간(Whisper는 10ms마다 25ms 창)으로 자르고, 각 구간을 사람의 청각처럼 주파수 간격을 배치하는 멜 스케일의 숫자 80개로 바꿉니다. 한 축은 시간, 다른 축은 음높이 대역인 이미지가 됩니다.
- 인코딩. 트랜스포머 인코더가 스펙트로그램을 읽고, 어떤 소리가 음성이고 어떤 소리가 잡음인지 포함해 무슨 말을 했는지에 대한 표현을 만듭니다.
- 디코딩. 트랜스포머 디코더가 오디오와 지금까지 쓴 텍스트를 바탕으로 다음에 올 가능성이 높은 토큰을 하나씩 골라 전사문을 씁니다. 특수 토큰이 언어, 작업(받아쓰기 또는 영어로 번역), 타임스탬프를 넣을 위치를 알려 줍니다.
Whisper는 오디오를 30초 창 단위로 처리합니다. 한 시간짜리 파일은 창을 이어 가며 슬라이딩 방식으로 처리하고, 예측한 타임스탬프가 다음 창을 어디서 시작할지 알려 줍니다. 타임스탬프는 20ms 단위로 예측되므로 Whisper의 자막 타이밍은 훌륭하지만 프레임 단위로 정확하지는 않습니다.
모델은 어떻게 학습했나: 대규모 약한 지도 학습
예전 시스템은 소리를 다루는 음향 모델, 발음 사전, 어순을 다루는 언어 모델처럼 따로 분리된 부품을 조합했습니다. 각 부품에는 언어별로 꼼꼼하게 레이블링한 데이터가 필요했습니다.
Whisper는 다른 길을 택했습니다. 개발진은 인터넷에서 전사문과 짝을 이루는 오디오 68만 시간을 모았습니다. 그중 약 11만 7천 시간은 영어 외 96개 언어였고, 12만 5천 시간은 영어 텍스트와 짝지어진 비영어 음성으로 모델에게 번역을 가르쳤습니다. 레이블은 완벽하지 않았지만(약한 지도 학습의 '약한' 부분입니다), 규모 덕분에 모델은 테스트 세트마다 파인튜닝하지 않아도 억양, 배경 잡음, 녹음 품질에 견고해졌습니다.
같은 이유가 약점도 설명합니다. 그 데이터에서 비중이 작은 언어는 인식 정확도가 낮고, 모델이 인터넷 자막의 습관까지 배워서 영상 끝에 자주 나오는 문구를 덧붙이기도 합니다.
정확도 측정: 단어 오류율
음성 인식 정확도는 단어 오류율(WER, word error rate)로 보고합니다. 치환, 삭제, 삽입된 단어 수를 정답 전사문의 단어 수로 나눈 값입니다. 낮을수록 좋고, 모델이 글을 많이 끼워 넣으면 100%를 넘을 수도 있습니다.
Reference: the meeting moved to three thirty on friday (8 words)
Model: the meeting moved to tree thirty friday
Substitutions: three -> tree 1
Deletions: on 1
Insertions: 0
WER = (1 + 1 + 0) / 8 = 25%비교 전에 연구자들은 두 텍스트를 정규화합니다. 소문자로 바꾸고, 문장 부호를 없애고, 축약형을 풀고, 숫자 표기를 통일합니다. 이 과정이 없으면 "3:30"과 "three thirty"는 둘 다 맞는데도 오류로 계산됩니다. 업체가 WER 수치를 제시하면 어떤 오디오로 측정했는지 물어보세요. 깨끗한 낭독 음성과 잡음 섞인 전화 통화는 몇 배까지 차이 날 수 있습니다.
중국어·일본어·태국어처럼 단어를 띄어 쓰지 않는 언어에는 단어 대신 글자 오류율(CER)을 씁니다.
음성 인식기의 종류
| 종류 | 동작 방식 | 강점 | 약점 |
|---|---|---|---|
| 인코더-디코더(Whisper 방식) | 오디오 덩어리를 읽은 뒤 디코더로 텍스트를 씀 | 높은 정확도, 문장 부호, 다국어, 번역 | 덩어리 단위로 작동해 실시간 자막은 지연되고, 환각이 생길 수 있음 |
| CTC와 트랜스듀서 모델 | 짧은 오디오 프레임마다 레이블을 예측해 합침 | 낮은 지연, 실시간 자막에 적합, 없는 글을 만드는 일이 드묾 | 문장 부호와 대소문자 처리에 추가 작업 필요 |
| 플랫폼 음성 서비스 | 브라우저나 휴대폰이 오디오를 벤더 서비스로 보내거나 기기 내 모델을 실행 | 설정 불필요, Web Speech API로 웹 페이지에서 사용 가능 | 브라우저와 기기마다 동작이 다르고 네트워크가 필요할 수 있음 |
Web Speech API의 SpeechRecognition 인터페이스를 쓰면 웹 페이지가 플랫폼에 마이크의 실시간 인식을 요청할 수 있습니다. 기본적으로 브라우저나 운영체제가 제공하는 서비스를 사용하며, 일부 브라우저는 기기 안에서 실행할 수도 있습니다. cv.cm의 음성-텍스트 변환 도구처럼 Whisper를 직접 실행하는 페이지(브라우저에서 Whisper를 돌려 TXT, SRT, VTT로 내보냅니다)는 그런 서비스에 의존하지 않지만, 모델을 한 번 내려받아야 합니다.
음성 인식이 틀리는 경우
- 이름, 브랜드, 전문 용어. 디코더는 흔한 단어를 선호하므로 드문 성씨가 흔한 성씨로 바뀝니다. 직접 고치거나, 도구가 지원하면 올바른 철자를 짧은 프롬프트로 알려 주세요.
- 무음이나 음악 구간의 환각. Whisper 논문은 긴 오디오 전사에서 같은 문장이 반복되는 루프에 빠지거나, 구간의 첫 단어나 마지막 단어를 건너뛰거나, 오디오와 무관한 텍스트를 만들어 낼 수 있다고 보고합니다. 소리 없는 인트로, 박수, 배경 음악이 흔한 원인입니다.
- 억양과 코드 스위칭. 한 문장에 두 언어를 섞는 화자나, 학습 데이터가 적은 강한 지역 억양은 오류율을 높입니다.
- 겹치는 화자. 대부분의 인식기는 텍스트를 하나의 흐름으로 쓰고 누가 말했는지는 알려 주지 않습니다. 화자 구분(화자 분리, diarization)은 별도 단계입니다.
- 중국어 간체와 번체. 모델이 북경어를 간체나 번체 중 아무 쪽으로 출력할 수 있으니, 한 가지 표기가 필요하면 나중에 변환하세요.
- 언어를 잘못 감지. 자동 감지는 오디오의 앞부분을 봅니다. 처음 몇 초가 음악이거나 다른 언어라면 언어를 직접 선택하세요.
깔끔한 자막을 위한 실전 작업 순서
- 가진 것 중 가장 좋은 오디오로 시작하세요. 스피커로 다시 녹음한 것이 아니라 원본 파일을 쓰고, 가능하면 음성 아래의 음악을 줄입니다.
- 앞부분의 긴 무음과 음악은 잘라 내세요. 언어 오감지와 없는 문장의 원인이 됩니다.
- 언어를 알고 있다면 직접 지정하세요.
- 최종 자막에는 큰 모델을, 빠른 메모에는 작은 모델을 고르세요. 큰 모델은 느리지만 이름과 억양에서 오류가 적습니다.
- SRT나 VTT로 내보낸 뒤, 영상을 보면서 파일 전체를 한 번 읽어 보세요. 이름, 숫자, 반복되는 줄을 고칩니다.
- 긴 자막은 나누세요. 읽기 좋은 자막은 두 줄 안팎이고 화면에 최소 1초는 머뭅니다.
대표적인 두 자막 형식은 작은 부분만 다릅니다.
SRT:
1
00:00:01,000 --> 00:00:04,000
Welcome to the lesson.
VTT:
WEBVTT
00:00:01.000 --> 00:00:04.000
Welcome to the lesson.SRT는 각 큐에 번호를 매기고 밀리초 앞에 쉼표를 씁니다. HTML 비디오 요소가 사용하는 W3C 형식인 WebVTT는 WEBVTT 헤더로 시작하고 마침표를 씁니다.
개인정보와 동의
회의, 통화, 인터뷰 녹음에는 개인정보가 들어 있으며, 많은 나라에서 사람을 녹음하려면 그 사람의 동의가 필요합니다. 클라우드 전사 서비스를 쓰기 전에 오디오가 어디에 저장되는지, 학습에 쓰이는지 확인하세요. 앱이나 브라우저에서 모델을 로컬로 실행하면 오디오가 내 기기에 머물러, 개인정보 요건을 충족하는 가장 간단한 방법인 경우가 많습니다.
자주 묻는 질문
AI 받아쓰기는 얼마나 정확한가요?
많이 쓰이는 언어로 한 사람이 또렷하게 말한 오디오라면, 최신 모델은 100단어당 몇 개 정도의 오류만 냅니다. 잡음, 겹치는 화자, 강한 억양, 소수 언어, 전문 용어에서는 정확도가 떨어지므로 이름과 숫자는 꼭 교정하세요.
Whisper가 말하지 않은 내용을 쓰는 이유는 무엇인가요?
오디오를 조건으로 하는 텍스트 생성기이기 때문입니다. 무음, 음악, 잡음 구간에서는 반복되는 문장이나 온라인 영상 끝에 흔한 문구처럼 일반적으로 그럴듯한 텍스트를 이어 쓸 수 있습니다. 무음을 잘라 내고 언어를 지정하면 줄어듭니다.
음성 인식이 누가 말하는지도 알려 주나요?
그 자체로는 알려 주지 못합니다. 화자 식별은 화자 분리(diarization)라고 하며, 보통 구간을 화자 1, 화자 2처럼 표시하는 별도 모델이 맡습니다. 라벨을 실제 이름과 연결하는 일은 사람이 해야 합니다.
SRT와 VTT는 무엇이 다른가요?
둘 다 시작·종료 시간이 있는 일반 텍스트 자막 파일입니다. SRT는 타임스탬프에 쉼표를 쓰고 각 큐에 번호를 붙입니다. VTT는 WEBVTT 줄로 시작하고 마침표를 쓰며, 브라우저가 HTML 비디오용으로 기본 지원하는 형식입니다.
인터넷 없이 오프라인으로도 받아쓰기를 할 수 있나요?
네. Whisper 같은 오픈 모델은 서버로 오디오를 보내지 않고 컴퓨터나 최신 브라우저에서 실행할 수 있습니다. 처음 실행할 때 모델을 내려받고, 그 뒤에는 파일을 업로드하지 않고도 받아쓰기가 됩니다.