프로그래밍/Python

[Python] 구글클라우드를 이용한 오디오 파일 자막 추출

Beginner:) 2022. 5. 1.
320x100

https://cloud.google.com/community/tutorials/speech2srt

 

구글 예제를 참고하였고 Windows 환경이 아닌것 같다. 나는 Window 기준으로 설명한다. (차이는 크게없다)

 

1. 사전준비

Google Cloud SDK, Git, Python3, pip 설치, Google Cloud API를 사용하기 위한 회원가입

 

Google Cloud SDK의 경우는 PowerShell을 열어 아래의 명령어 실행

(New-Object Net.WebClient).DownloadFile("https://dl.google.com/dl/cloudsdk/channels/rapid/GoogleCloudSDKInstaller.exe", "$env:Temp\GoogleCloudSDKInstaller.exe")

& $env:Temp\GoogleCloudSDKInstaller.exe

 

Git 설치(깃허브에서 수동다운로드 할 경우 필수 X)

https://git-scm.com/

 

Python3 설치

https://www.python.org/downloads/

 

Google Cloud 계정 가입

- 처음하면 좀 복잡할 수 있다. 나에게 관련 글이 없기에 추후 업데이트할 것이고 다른 글을 봐야할 듯.

- 가입을 하면 인증을 거쳐야하는데 VISA 또는 Master카드가 필요하다. 아마 해외에서 우리나라 개인정보를 구할 수 없어서 신용카드 조회를 하는 것 같다. 3개월? 무료 기간이 끝나면 이후 다시 활성화 시켜줘야함.

 무료라서 흠칫할 수도 있지만 월 240분 무료 = 개인이 쓰기엔 충분히 적당하다.

- Project를 생성해야한다. API 사용 권한도 추가해야한다.

 

2. 명령프롬프트를 열어서 Google Cloud 초기화

 

gcloud init

 

gcloud 명령어가 안먹히면 Google Cloud SDK가 설치되어 gcloud 명령어를 실행하는 폴더의 위치로 이동하거나 환경변수에 추가 (환경변수가 더 편리하다)

 

나의 경우 설치위치 : C:\Program Files (x86)\Google\Cloud SDK

 

명령어를 실행하면 Google Cloud 계정연동을 시도할 것이다. 연동하고 1번에서 생성한 프로젝트를 선택한다.

 

3. 프로젝트 ID 얻어오기

gcloud config get-value project

 

- 1, 2번에서 프로젝트 이름을 알고있으면 필요없음. 

- 프로젝트 이름을 복사하여 메모장에 적어둔다.

 

4. Google Cloud 서비스 활성화

gcloud services enable speech.googleapis.com texttospeech.googleapis.com translate.googleapis.com storage-component.googleapis.com

 

- 오디오의 자막을 추출하는데 필요한 STT(Speech to text), TTS..?(Text to Speech), 번역(translate), bucket이란 저장공간(Strage)서비스를 활성화한다.

 

5. 예제(튜토리얼) 다운로드

git clone https://github.com/GoogleCloudPlatform/community.git

- 폴더 경로를 잘 신경쓰자.

- git명령어가 아닌 수동으로 다운로드해도 된다.

 

6. 예제 폴더 경로로 이동

cd community/tutorials/speech2srt

- 마찬가지로 폴더 경로를 잘 신경쓰자.

 

7. 가상환경 생성 

py -m venv venv

 

8. 가상환경 실행

venv/Scripts/activate

 

9. 요구 라이브러리 모듈 다운로드

pip3 install -r requirements.txt

 

10. 버킷 생성

gsutil mb gs://버킷이름_bucket_in
gsutil mb gs://버킷이름_bucket_out

- 버킷이란 Google Cloud에서의 폴더이다.

- [햄버거 아이콘] - [Cloud Storage] - [브라우저]에 들어가면

 

아래와 같이 폴더와 같은 것이  생성된다.

- 참고로 bucket이름은 고유하여야 하기 때문에 [아이디_bucket_in/out] 을 추천한다. 

 

11. 서비스 계정 만들기 & JSON 키생성

- 프로젝트ID를 까먹었으면 3번을 다시보고 오자.

- 각 명령어마다 사용자마다 다르게 입력해야 하는 부분이 있으니 잘 체크하자.

 

- 서비스계정생성

gcloud iam service-accounts create ml-dev --description="ML APIs developer access" --display-name="ML Developer Service Account"

 

- ML개발자 권한 부여

gcloud projects add-iam-policy-binding 프로젝트ID --member serviceAccount:ml-dev@프로젝트ID.iam.gserviceaccount.com --role roles/ml.developer

 

- 프로젝트 뷰어 권한 부여

gcloud projects add-iam-policy-binding 프로젝트ID --member serviceAccount:ml-dev@프로젝트ID.iam.gserviceaccount.com --role roles/viewer

 

- 스토리지(버킷) 관리자 역할 부여

gcloud projects add-iam-policy-binding 프로젝트ID --member serviceAccount:ml-dev@프로젝트ID.iam.gserviceaccount.com --role roles/storage.objectAdmin

 

- JSON키 생성

gcloud iam service-accounts keys create ./ml-dev.json --iam-account ml-dev@프로젝트ID.iam.gserviceaccount.com

 

생성되었다면 아래와 같이 파일이 생성된다.

 

- JSON키 환경변수 등록

setx GOOGLE_APPLICATION_CREDENTIALS=파일경로\ml-dev.json

- 절대경로를 추천

- 환경변수 편집창에서 수동으로 추가 가능

 

12. 텍스트&자막(SRT) 변환

- 버킷 업로드(tutorial 다운로드시 예시 음성파일 사용)

gsutil cp example.wav gs://버킷이름_bucket_in/

업로드가 정상적으로 이루어지면 [Google Cloud Platform] - [햄버거 아이콘] - [Cloud Storage] - [브라우저] - [버킷이름_bucket_in]에 업로드한 파일이 업로드되어있을것이다.

 

- 변환 실행

py speech2srt.py --storage_uri gs://버킷이름_bucket_in/example.wav --sample_rate_hertz 24000

 각 옵션은 py speech2srt.py -h로 확인 또는 speech2srt.py 파일을 열어서 확인이 가능하며 

 hertz, channel, 언어 등의 설정값 또는 오류도 옵션을 통해 맞춰주어야 함

 

변환이 완료되면 해당 폴더에 파일이 생성되어 있을 것이다.

 

 

만약 아래의 오류가 난다면 스페인어, 아랍어등으로 자막을 추출했을것이다.

UnicodeEncodeError: 'cp949' codec can't encode character '\xa0' in position 17678: illegal multibyte sequence

 

그렇다면 speech2srt.py 파일을 아래와 같이 utf-8로 작성되게끔 변경한다.

 

 

 

처음하니까 복잡하고 명령프롬프트 명령어도 잘몰라서 좀 너저분한데 시간날때마다 수정할 계획이다.

반응형

댓글