Limetime's TimeLine
article thumbnail
반응형

 지인의 부탁으로 동영상 속 목소리를 텍스트로 변환해 달라는 요청이 있었다. 다양한 Speech to Text(이하 STT) 서비스가 존재하고 그 중 한국어를 지원하는 서비스도 많다. 하지만 무료로 제공하지 않거나 무료로 제공하지만 제한이 걸려 있는 경우가 대부분이다. 그렇기 때문에, 직접 STT 모델을 사용해보기로 했다.


OpenAI Whisper

OpenAI에서 제공하는 STT 서비스이다. 오픈소스로 제공중이며 설치만 하면 간단하게 사용 가능하다.

 

GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak Supervision

Robust Speech Recognition via Large-Scale Weak Supervision - GitHub - openai/whisper: Robust Speech Recognition via Large-Scale Weak Supervision

github.com

Size Parameters English-only model Multilingual  model Required VRAMRelative  speed
tiny 39 M tiny.en tiny ~1 GB ~32x
base 74 M base.en base ~1 GB ~16x
small 244 M small.en small ~2 GB ~6x
medium 769 M medium.en medium ~5 GB ~2x
large 1550 M N/A large ~10 GB 1x

제공되는 모델이다. tiny < base < small < medium < large 순으로 정확도가 높다. 대신 RAM이 커야한다.

단, GPU가 거의 필수다. CPU로 base 정도까지는 돌릴 수 있겠으나 그 이상은 무리다.

Git Clone

Whisper 모델을 사용하기 위해선 제공되는 소스들을 다운로드 받아야 한다.

git clone https://github.com/openai/whisper.git

 

Install package with Anaconda

Anaconda로 가상환경을 구성하고 패키지를 설치할 것이다. 혹시나 Anaconda가 설치되어 있지 않다면 아래 링크에서 설치하길 바란다.

 

[Anaconda] Anaconda 설치하기.

그냥 전역환경에서 파이썬을 사용하게 되면 여러 프로젝트를 진행할 때 라이브러리와 파이썬 버전 관리가 어려워서 헷갈린다. 그래서 환경을 나눠주는 아나콘다를 사용해보았다. 확실히 환경

limetimeline.tistory.com

가상환경 구성

python 3.8 ~ 3.11 버전을 사용하라고 적혀 있다. 실제로 python 3.7로 setup.py를 실행 시켜보았더니 3.8 이상으로 실행하라고 오류메시지가 떴다.

conda create -n stt python=3.8

 

가상환경을 실행시키는 명령어를 입력한다. (stt)가 뜰 것이다.

conda activate stt

 

setup.py 실행

setup.py를 실행시켜 requirement 파일에 적힌 라이브러리들과 openai-whisper 패키지를 다운로드 한다.

pip install -e .

 

Install ffmpeg with Chocolaty

Chocolaty 설치

  • Powershell을 관리자 권한으로 실행 후 아래 명령어 입력
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

Chocolaty로 ffmpeg를 설치하자.

choco install ffmpeg

 

CUDA 환경 세팅

GPU를 지원하는 CUDA 찾기

 

Wikiwand - CUDA

CUDA is a parallel computing platform and application programming interface that allows software to use certain types of graphics processing units for general purpose processing, an approach called general-purpose computing on GPUs . CUDA is a software lay

www.wikiwand.com

위 사이트에서 나의 GPU를 지원하는 CUDA 버전을 알려준다.

나는 RTX 2070 Super를 사용하고 있으니 7.5를 생각해두자.

이것도 위의 사이트에 나와 있다. 7.5를 지원하는 것은 10.0 ~ 12.0까지 모두다. 이제 Pytorch에서 지원하는 버전만 찾으면 된다.

 

 

PyTorch

An open source machine learning framework that accelerates the path from research prototyping to production deployment.

pytorch.org

위 사이트에 들어가보면 Pytorch 버전에 따라 어떤 CUDA를 설치해야 하는지 나온다. 기본적으로 Whisper에서 제공하는 Setup.py의 Pytorch 버전은 2.0.1이었다. 그러므로 CUDA는 11.7 또는 11.8 버전을 사용해야 한다.

CUDA 설치

 

CUDA Toolkit Archive

Previous releases of the CUDA Toolkit, GPU Computing SDK, documentation and developer drivers can be found using the links below. Please select the release you want from the list below, and be sure to check www.nvidia.com/drivers for more recent production

developer.nvidia.com

여기서 CUDA 11.7이나 11.8을 다운받으면 되는데, 나는 11.8을 선택했다. 다운로드 받아주면 된다.

설치하고 CMD를 열어서 아래 명령어를 입력해주면 위와 같이 버전이 나온다.

nvcc --version

cuDNN 다운로드 및 적용

 

cuDNN Archive

Download releases from the GPU-accelerated primitive library for deep neural networks.

developer.nvidia.com

이것도 다운로드 받아야한다.

굉장히 많은데, 맨 위에 있는 2023.5월 CUDA 11.x는 접근이 안되서 2023.4월 CUDA 11.x를 다운로드 받았다.

다운받은 cuDNN 압축파일을 해제하고 bin, include, lib 파일을 CUDA 폴더에 집어 넣자. 덮으쓰면 된다.

Pytorch-cuda 세팅

Pytorch 사이트에서 제공하는 Run this Command를 이용하면 된다.

conda install pytorch torchvision torchaudio pytorch-cuda=11.8 -c pytorch -c nvidia

CUDA 적용 확인

import torch

print(torch.cuda.is_available())
print(torch.cuda.current_device())
print(torch.cuda.get_device_name(0))

위의 코드가 적힌 파이썬 파일을 실행시켜보면 아래와 같이 나온다.

인식에 성공하였다!!

 

Whisper 사용하기

사양 : 윈도우11, RAM 32GB, Intel i5-10400f, RTX 2070 Super

mp3 파일을 준비하고 아래 명령어를 입력하면 된다.

whisper text.mp3 --model large

100%|█████████████████████████████████████| 2.87G/2.87G [04:22<00:00, 11.8MiB/s]
Detecting language using up to the first 30 seconds. Use `--language` to specify the language
Detected language: Korean

이런식으로 나올텐데, 다운로드 받아진 것은 아까 표에서 본 모델이다. 나는 large 모델로 한 번 해보았다.

[00:00.000 --> 00:09.140]  여러분 안녕하세요. 저는 여러분께 소트케이스 파동매입법을 강약이 된 파동매입법 마스터입니다.
[00:09.140 --> 00:16.140]  저를 설명할 수 있는 키워드를 간단하게 보여드리려고 합니다.
[00:16.140 --> 00:23.140]  저는 소트케이스 파동매입법을 오랫동안 연구해오면서 최적의 매입방식을 정리하였습니다.
[00:24.140 --> 00:31.140]  제 경험과 결과를 통해 여러분께 의미있는 투자방법을 소개하려고 합니다.
원본
여러분 안녕하세요. 저는 여러분께 스토캐스틱 파동매매법을 강약이 된 파동매매법 마스터입니다.
저를 설명할 수 있는 키워드를 간단하게 보여드리려고 합니다.
저는 스토캐스틱 파동매매법을 오랫동안 연구해오면서 최적의 매매방식을 정리하였습니다.
제 경험과 결과를 통해 여러분께 의미있는 투자방법을 소개하려고 합니다.

이런식으로 잘 나오는 것을 확인할 수 있다.

 


번외. KoSpeech

 KoSpeech는 sooftware님이 배포하고 있다. 한국 사람이 만들어서 그런지 꽤 성능이 좋다. 제공되는 데이터셋은 없는듯하다. 직접 모델을 학습시켜 사용해야 하는 것 같다. 내게 필요한 것은 만들어져 있는 데이터 셋을 기반으로 STT를 사용하는 것이다.

하지만, 따라하다가 setup.py에서 막혀버렸고.. 어떻게 하는지 아직 모르겠다.. 추후 성공하면 다시 포스팅하겠다.

반응형
profile

Limetime's TimeLine

@Limetime

포스팅이 좋았다면 "공감❤️" 또는 "구독👍🏻" 해주세요!