API로 whisper를 외부에 오픈하기

FastAPI 를 사용하여 api를 만든후 file을 업로드 받아서 transcribe 를 해서 결과를 보내주는 API를 만들자.

architecture

FastAPI

기본 api만들기

tag : v0.2

Dockerfile에 다음처럼 수정한다.

새로운 main.py를 만든다.

docker-compose.yml을 업데이트한다.

실행하고 테스트하기

helloworld가 나오면 성공.

api호출을 통해서 transcribe하기

기존 main코드를 새 main코드에 이동한다.

helloworld부분을 지우고 다음처럼 업데이트한다. tag v0.3을 이용한다.

처리 시간을 보기위해 시간 관련 코드를 넣었다.

모델타입을 환경변수로 받을수 있게 해두었다.

현재 도커파일은 다음과 같다.

vi Dockerfile

docker-compose파일은 다음과 같다.

실행후 테스트해보자.

cpu만 사용시 위 주석 그대로 사용

주석 해제후 GPU사용

cpu는 30초 gpu는 15초 걸림을 알수 있다.

tiny모델의 경우라 그렇고 large모델은 더 많은 시간차이가 난다. gpu사용을 추천한다.

api doc 보기

브라우저에서 http://whipsper/docs를 확인해보자.

나의 경우에 whisper를 서버아이피로 /etc/hosts에서 정의해두었다. 안해두었으면 서버 아이피를 사용하면된다.

/에 대한 내용을 볼수잇다 앞으로 api endpoint를 추가하면 이 Url로 다 확인할수 있다.

health Check url을 추가

브라우저에서 요청해보면 다음처럼 잘 보인다.

mp3파일을 업로드해서 결과 확인

다음 코드를 추가한다.

실행해보자.

포스트맨으로 실행해보도 확인할수 있다.

업로드한 파일의 언어 확인

tag v0.5를 확인한다.

다음 코드를 추가한다.

실행하고 확인해본다.

subscribe 할때 언어를 지정해주자.

tag : v0.6을 확인하자.

언어를 지정하지 않으면 자동으로 확인해서 적당한 언어를 지정해준다. 그런데 언어를 지정해주면 더 정확할것 같다.

언어를 다르게 지정해주면 다르게 결과가 나오는것을 알수 잇다.

확인해보자.

일단 인식하고 번역을 해주는것인지 인식을 다르게 하는것인지가 확실치가 않다.

//todo 위 내용 확인

translate

tag : v0.7을 보자.

whisper는 subscribe 나 translate 두가지 task를 할수 있다. 이걸 api에서 쿼리스트링으로 받아보자.

translate을 사용하면 모든 언어를 영어로 바꿔준다.

task를 받아서 그걸 옵션으로 transcribe에 넣어준다.

확인해보자.

한글이 영어로 번역되서 보여진다.

한글을 다른 언어로 번역은 안되나?

https://github.com/openai/whisper 에서 보면 영어로만 된다고 되있음

Last updated

Was this helpful?