읍내리 까치골
Whisper STT Model 사용 연습 본문
프로젝트에의 활용을 위해 Whisper STT Model을 설치 및 테스트 하는 단계를 기록하였다.
pip install git+https://github.com/openai/whisper.git
Python 환경 터미널에서 pip install 통해 whisper를 설치한다.
pip install whisper로 할 경우 다른 비공식 라이브러리가 깔릴 수 있어 git을 이용한 우회적 방법을 사용했다.

대충 이런 느낌으로 진행, Successfully installed 확인하고 진행한다
https://www.gyan.dev/ffmpeg/builds/
Builds - CODEX FFMPEG @ gyan.dev
FFmpeg is a widely-used cross-platform multimedia framework which can process almost all common and many uncommon media formats. It has over 1000 internal components to capture, decode, encode, modify, combine, stream media, and it can make use of dozens o
www.gyan.dev
음성 처리를 위해 ffmpeg 설치 - C:\에 별도 폴더 만들어 설치한 후 ffmpeg\bin 폴더 환경변수 System변수 Path에 등록

ffmpeg -version
을 입력해서 위와같이 나오면 잘 설치된 것이다.
Whisper STT Model 기본 사용 방법은 아래와 같다
import whisper
model = whisper.load_model("base")
result = model.transcribe("example.mp3")
print("Transcription:", result["text"])
load_model을 통해 모델을 지정하고 (tiny, base, samll, medium, large 중 택1) transcribe를 통해 음성을 불러와 결과값을 저장한다. 모델 선택 기준은 해석 난이도(억양 및 웅얼거림 등)에 따라 결정하며 tiny가 제일 빠르면서 정확도는 가장 낮다.
STT 실습을 위하여 1호선, 3호선, 7호선 전철 안내방송 파일을 가져와 STT 라이브러리 작동 테스트를 하였다. 사용한 코드는 아래와 같으며 별도의 sttSample폴더를 만들어 세 개의 파일을 넣어두었다.
import whisper
# pip install git+https://github.com/openai/whisper.git
model = whisper.load_model("small")
sample = ["sttSample/Cheonan_end.wav", "sttSample/line7_BupyeongguOffice.mp3", "sttSample/3_Gupabal.mp3"]
for s in sample:
result = model.transcribe(s, language="ko")
print("\n전체 텍스트:")
print(result["text"])
print("\n세부 구간별 출력:")
for segment in result["segments"]:
print(f"[{segment['start']:.2f}s - {segment['end']:.2f}s] {segment['text']}")
실제 음성파일 재생 및 출력 결과 확인은 아래 영상에서 할 수 있다.
영상을 보면 알 수 있지만, language가 "ko"로 되어있기 때문에 한국어만 인식한다. 간혹 일본어 또는 중국어가 한국어와 유사한 부분에서 인식이 되기는 하나 영어는 전부 인식되지 않았음을 볼 수 있다. "auto"로 설정할 경우 가장 많이 나온 언어로 인식이 된다고는 한다. 그러나 4개국어 동시 인식같은 것은 불가능하다고 하며 필요시 구간별로 파일을 잘라야 한다고 한다.
어찌 되었든 프로그램 개발 목적에서 다중 언어 동시 인식은 필요 없으므로 "ko" 로 놓고 개발하기로 한다. 전철 안내방송은 전문화된 성우가 녹음한 것이기에 인식 난이도가 매우 쉬운 편에 속한다. 앞으로 해야 할 일은 마이크를 갖다 놓고서 직접 이야기를 해보며 인식을 잘 하는지, 그 다음에는 실시간 인식 기능 구현을 위해 음성 인식 및 끊는 지점 찾는 알고리즘 개발 등이 필요하다.