paint-brush
OpenAI의 Whisper 및 GPT-3 API를 사용하여 전사기 앱 구축 및 배포 – 1부~에 의해@juanfrank77
8,145 판독값
8,145 판독값

OpenAI의 Whisper 및 GPT-3 API를 사용하여 전사기 앱 구축 및 배포 – 1부

~에 의해 Juan F. Gonzalez11m2023/09/13
Read on Terminal Reader
Read this story w/o Javascript

너무 오래; 읽다

이 기사에서는 OpenAI의 Whisper 및 GPT-3.5 Turbo API를 사용하는 전사기 앱 개발에 대해 간략하게 설명합니다. 1부에서는 API 키 획득, Whisper 설치, 로컬 또는 온라인 개발 선택을 포함한 설정을 다룹니다. 녹음할 오디오 파일을 다운로드하는 방법을 설명하고, Whisper를 사용한 오디오 녹음을 시연하고, GPT-3를 사용하여 요약을 생성하는 프로세스를 자세히 설명합니다. 2부에서는 클라우드에 앱을 배포하는 데 중점을 둡니다.

People Mentioned

Mention Thumbnail
featured image - OpenAI의 Whisper 및 GPT-3 API를 사용하여 전사기 앱 구축 및 배포 – 1부
Juan F. Gonzalez HackerNoon profile picture
0-item


ChatGPT 출시 이후 챗봇, LLM(대형 언어 모델), 부조종사와 같은 AI 기술에 대한 과대광고가 시작되면서 곧 더 많은 사용 사례가 나타났습니다.


저는 글쓰기 보조자, 이미지 생성기, 데이터에 대해 훈련된 챗봇과 같은 가장 일반적인 것에 대해 말하는 것이 아닙니다. 저는 사실적인 말하는 아바타, 비디오 편집자, 음성 합성과 같은 보다 틈새적인 사용 사례에 대해 이야기하고 있습니다.


이 기사에서는 이러한 사용 사례 중 하나인 팟캐스트나 YouTube 동영상과 함께 사용할 수 있는 전사기 앱을 살펴보겠습니다. GPT-3 API를 사용하고 싶거나 OpenAI Whisper 데모가 실제로 작동하는 것을 보고 싶었다면 이는 큰 가치가 있을 것입니다.


이 튜토리얼의 1부에서는 앱 개발을 설정하고 시작하는 데 필요한 모든 것을 살펴보겠습니다.


그런 다음 2부에서는 작업 코드를 클라우드에 업로드하고 다른 사람들이 결과를 보고 앱과 상호 작용할 수 있도록 사용자 인터페이스가 작동하도록 하겠습니다.


이제 이것을 구축하는 Python 코드로 손을 더럽힐 것이기 때문에 버클을 채우십시오.






무대 설정

이를 구축하기 위해 3막을 거치게 됩니다.


  • 첫 번째에서는 앞으로의 여정을 준비하는 데 필요한 모든 것을 살펴보겠습니다.


  • 두 번째에서는 로컬에서 프로토타입을 제작하고 프로세스에 도움이 될 수 있는 도구가 무엇인지 알아봅니다.


  • 그리고 마지막 단계에서는 다른 사람들도 시도해 볼 수 있도록 우리가 구축한 모든 것을 클라우드에 업로드할 것입니다.


좋은 것 같나요?


좋아, 그럼 가자!






1막: 설정(Whisper 및 GPT-3 API)

먼저, 우리가 따라야 할 프로세스에 대한 대략적인 개요는 기록하려는 정보를 추출한 다음 이를 공급하는 것입니다. OpenAI의 속삭임 .


여기에서 출력을 가져와서 일부 후처리를 수행한 후 다른 사람들이 보고 상호 작용할 수 있도록 프런트 엔드 애플리케이션에 표시합니다.


이 프로세스를 수동으로 수행했다면 몇 가지 추가 단계가 필요합니다. 다행히 OpenAI가 출시되었습니다. Whisper 및 ChatGPT에 대한 API 액세스 .


여기서 어떤 길을 택할지 결정해야 합니다.


  • 이를 컴퓨터에 로컬로 빌드합니다(Python 3이 설치되어 있다고 가정).
  • 이를 사용하여 온라인으로 구축 Google Colab 노트북 .


먼저 경로를 선택한 다음 진행하겠습니다.


다음으로 GPT-3.5 Turbo 모델(기본적으로 ChatGPT를 지원하는 모델)에 액세스하려면 OpenAI의 API 키가 필요합니다.


얻는 방법을 모르는 경우 다음 단계를 따르세요.

  • OpenAI 플랫폼 웹사이트 로 이동하여 로그인 또는 회원가입(사례에 따라 다름)


  • 그런 다음 오른쪽 상단에 있는 프로필 아이콘을 클릭하여 옵션을 표시하고 "API 키 보기"를 선택하세요.



  • 해당 페이지의 API 키 섹션 아래에 "새 비밀 키 생성"이라는 옵션이 표시됩니다.




  • 비밀 키가 표시되는 팝업이 표시됩니다. 다시는 볼 수 없으므로 안전한 곳에 보관하세요 .


그 열쇠를 얻으면 퍼즐의 다음 조각인 Whisper를 찾으러 가겠습니다.



다음 명령을 실행하여 컴퓨터에 최신 버전의 Whisper를 다운로드하고 설치할 수 있습니다.


 pip install -U openai-whisper


또는 다음 명령을 사용하여 종속성과 함께 Git에서 최신 커밋을 설치할 수 있습니다.


 pip install git+https://github.com/openai/whisper.git


이를 통해 설치하려는 버전을 더 효과적으로 제어할 수 있습니다(Colab 노트북에서 이 작업을 시도하는 경우 실행하려는 명령이기도 합니다).


참고: 명령줄에서 Whisper를 실행하려면 'ffmpeg'가 설치되어 있어야 합니다.


Whisper를 설치한 후 이제 필요한 것은 복사하려는 실제 파일뿐입니다. 'mp3', 'mp4', 'mpeg', 'wav' 등과 같은 여러 유형의 미디어 파일을 공급할 수 있습니다.


여기서 유일한 제한은 파일 크기입니다. 20분짜리 팟캐스트보다 10분짜리 비디오를 사용하면 훨씬 더 많은 시간이 걸립니다.


이제 다음 갈림길이 있습니다.



비디오오디오를 텍스트로 변환할지 선택해야 합니다.


이 예에서는 단순화를 위해 팟캐스트의 오디오 파일을 사용하겠습니다.


그리고 여기에서 여러분이 생각할 수 있는 질문은 " 팟캐스트 에피소드를 어디서 다운로드하나요?" 입니다. ".


제가 아는 방법은 2가지입니다.


첫 번째는 ListenNotes와 같은 사이트를 사용하여 원하는 팟캐스트를 선택하고 개별 에피소드로 이동하는 것입니다.


개별 에피소드와 해당 오디오 파일에 접근하려면 계정을 만들어야 한다는 점은 주목할 가치가 있습니다.


거기에서 점 3개가 있는 버튼을 클릭하여 "더 보기" 탭을 열면 오디오를 다운로드할 수 있는 옵션이 표시됩니다.


그 모습은 다음과 같습니다.





두 번째 옵션은 대신 Podchaser를 사용하는 것입니다. 팟캐스트를 찾고, 에피소드 목록을 살펴보고, 특정 항목을 선택하는 유사한 과정을 따르게 됩니다.


개별 에피소드 페이지로 이동하면 오른쪽에 재생 버튼과 그 아래에 기타 옵션이 있는 열이 표시됩니다.


아래로 스크롤하면 팟캐스트에 대한 정보, 소셜 공유 옵션, 오디오 파일 다운로드 옵션이 있는 작은 섹션이 표시됩니다.


그 모습은 다음과 같습니다.






원하는 옵션을 선택하고 길이가 다른 몇 개의 에피소드를 다운로드하여 전사 프로세스가 어떻게 작동하는지 테스트할 수 있습니다.


제가 추천하는 것은 30분 미만의 에피소드를 선택하는 것입니다.


그 이유는 더 긴 것을 선택하면 Whisper가 처리하는 데 오랜 시간이 걸리고 시간 초과 문제가 발생할 수 있기 때문입니다(특히 Colab 환경을 사용하는 경우).


20~30분 길이의 에피소드를 스크립트로 작성하는 데 4~8분이 걸릴 수 있습니다.


여기서 주요 병목 현상은 추가 작업에 사용할 수 있는 결과를 얻기까지의 전사 프로세스 기간입니다.


이제 모든 요구 사항을 충족하고 설정이 완료되었습니다.


이제 여행의 다음 부분으로 넘어갈 시간입니다.



2막: 개발(OpenAI Whisper 데모)

우리는 더 깊은 프로그래밍 영역으로 들어가고 있습니다.


Python을 통해 Whisper를 사용하는 것이 더 편리하므로 사용하겠습니다. 그리고 녹음을 위해 특별한 작업을 수행할 필요가 없습니다. 오디오 파일을 모델에 전달하고 녹음을 기다리면 됩니다.


이제 해당 프로세스를 한 줄씩 살펴보겠습니다.

 import whisper model = whisper.load_model("base")


여기서는 Whisper 모델의 '기본' 버전을 로드합니다. OpenAI가 출시한 여러 버전(또는 "크기")이 있으며 매개변수 수, 소비하는 리소스, 전사를 수행하는 데 걸리는 시간에 따라 다릅니다.


다음은 참고할 수 있는 편리한 차트입니다.


원한다면 크기에 따라 모두 시도해 볼 수 있습니다(말장난 의도).


더 큰 모델을 사용하는 경우 해당 모델을 실행하는 데 더 많은 리소스(예: GPU)가 필요하다는 점을 명심하세요.


따라서 Colab에서 이를 실행하는 경우 이 명령을 대신 사용할 수 있습니다.


 model = whisper.load_model('medium', device='cuda')


이 작업을 실행하려는 장치의 매개변수를 전달합니다.


모델의 크기를 선택한 후 다음과 같이 복사하려는 오디오 파일을 전달할 수 있습니다.


 result = model.transcribe(“path-to-where-the-file-is”)


그런 다음 내용을 인쇄하여 전사가 제대로 이루어졌는지 확인할 수 있습니다. (그러나 전체 내용을 인쇄하는 대신 처음 1000자 정도만 엿볼 수도 있습니다.)


 podcast_transcript = result['text'] podcast_transcript[:1000]


결과가 좋으면 이제 전사 프로세스 결과가 변수에 저장됩니다. 후처리에 사용할 것입니다.


그것은 충분히 쉽습니다. 하지만 에피소드 설명에서 찾을 수 있는 것 이상으로 팟캐스트에서 논의된 내용을 알 수 있는 방법을 원한다고 가정해 보겠습니다.


전체 기록을 가져와서 "실행 요약"을 제공하는 함수를 만들 수 있습니다. 전체 내용을 살펴보고 시간을 들일 가치가 있는지 확인할 시간이 없는 바쁜 사람들과도 공유할 수 있는 요약입니다.


계속해서 그렇게 합시다.


요약을 작성하는 데 무엇을 사용할지 짐작할 수 있나요?


힌트: 이미 API 키가 있습니다.


네, 알았어요.


우리는 'get-3.5-turbo' 모델을 사용하여 팟캐스트의 내용을 제공함으로써 이 요약을 생성할 것입니다.



API를 직접 호출할 수도 있지만 OpenAI 패키지('openai'라는 이름이 적절함 😆)를 사용하는 것이 훨씬 더 편리합니다.


모델에 보낼 토큰의 양을 확인하려면 OpenAI의 토크나이저 라이브러리도 필요합니다.


그리고 우리는 다음을 실행하여 두 가지를 모두 설치할 수 있습니다.


 pip install openai pip install tiktoken


이제 GPT-3를 호출하기 전에 API 키를 어딘가에 저장해야 합니다.


이를 환경 변수로 저장한 다음 이와 같이 코드에서 사용할 수 있도록 준비할 수 있습니다.


 openai.api_key = os.environ["OPENAI"]


또는 Colab 환경을 사용하는 경우 다음과 같은 작업을 수행할 수 있습니다.


 import openai from getpass import getpass openai.api_key = getpass("Enter your key here: ")


그런 다음 해당 명령을 실행하면 키를 붙여넣을 수 있는 입력 셀이 표시됩니다.


이제 이 코드 조각으로 현재 사용 가능한 모델을 나열하여 키가 작동하는지 확인할 수 있습니다.


 models = openai.Model.list() for model in models['data]: print(model['root'])


키가 올바르게 작동하면 계속해서 GPT-3 API를 호출할 수 있습니다.


하지만 먼저 우리가 고려해야 할 중요한 것이 있습니다. 그리고 그것은 앞서 "토큰"에 대해 언급한 것과 관련이 있습니다.


아이디어는 팟캐스트 기록을 AI 모델에 전달하고 이에 대한 요약을 다시 받는 것이므로 수용할 수 있는 "토큰" 수를 알아야 합니다.


AI는 단어나 문자를 계산하지 않고 대신 토큰을 사용합니다. 그래서 '컨텍스트 창'이라는 개념이 존재합니다.


컨텍스트 창의 길이를 초과하면 기록이 잘릴 수 있으며 불완전한 데이터에서 요약을 얻게 됩니다. (너무 길지 않은 팟캐스트 에피소드를 선택하는 또 다른 이유.)

다행히 GPT-3 모델에는 두 가지 버전이 있습니다. 확장된 컨텍스트 창이 있는 전통적인 것과 다른 것.


OpenAI 문서를 확인하면 이들 간의 차이점을 확인할 수 있습니다.



이것이 바로 'tiktoken' 라이브러리의 목적입니다. 이는 성적표에 얼마나 많은 토큰이 있는지 아는 데 도움이 되며 요약에 사용할 모델을 알 수 있습니다.


다음 코드를 사용하여 해당 계산을 수행할 수 있습니다.


 import tiktoken enc = tiktoken.encoding_for_model(“gpt-3.5-turbo”) print(“Number of tokens in the input ”, len(enc.encode(podcast_transcript)))


결과의 토큰 양이 4,097보다 큰 경우 모델의 '16k' 버전을 사용해야 합니다.



이를 알고 나면 마침내 상황에 적합한 모델을 사용하여 API를 호출할 수 있습니다.


먼저 모델에 보낼 프롬프트를 변수에 저장해 보겠습니다. 자신만의 프롬프트로 실험해 볼 수 있지만 예는 다음과 같습니다.


 prompt = """ You are an expert marketer responsible for the growth of several popular podcasts. You are now tasked with summarizing an episode in a way that is concise and covers the main points of the episode for others to understand. The transcript of the episode is provided below. """ request = prompt + podcast_transcript



이제 다음 코드를 사용하여 API를 호출해 보겠습니다.


 chatOutput = openai.ChatCompletion.create(model="gpt-3.5-turbo-16k",    messages=[{"role": "system", "content": "You are a helpful assistant."},                        {"role": "user", "content": request}                        ]    )


그런 다음 API의 응답을 확인해 보겠습니다.


 chatOutput.choices[0].messages.content


거기 있어요! Whisper를 사용하여 생성한 스크립트를 기반으로 한 팟캐스트 에피소드 요약입니다.


이와 동일한 프로세스를 사용하여 에피소드의 주요 하이라이트를 추출할 수 있습니다. 잠재적인 청취자에게 대화를 엿볼 수 있는 방법과 같습니다.


이를 수행하는 방법은 매우 유사합니다. 변경되는 유일한 부분은 모델이 받게 될 프롬프트입니다. 요약을 요청하는 대신 목록 형식으로 가장 중요한 내용만 추출해 달라고 요청할 수 있습니다. 결과는 프롬프트에 대한 창의성에 따라 달라집니다.



이제 이것이 작동한다는 것을 알았으므로 모든 코드를 함수에 넣어 로컬에서 실행할 수 있습니다.


그럼 계속해서 해당 함수를 만들어 보겠습니다.


 def transcribe_podcast(file_path):    print("Starting podcast transcription")    # Load the Whisper model    import os    import Whisper    print("Loading the Whisper model")    model = whisper.load_model("medium")    print(model.device)    # Do the transcription    print("Starting the transcription")    result = model.transcribe(file_path)       # Return the transcribed text     print("Transcription completed, returning results...")    return result


해당 함수를 호출하여 오디오 파일의 경로를 보내고 그 대가로 텍스트 변환을 받을 수 있습니다.


다음은 이를 수행하는 방법에 대한 예입니다.


 output = transcribe_podcast('path_to_audio_file')


그리고 녹취록의 내용을 살펴보세요.


 output[text][:1000]


좋아요, 지금까지는 아주 좋습니다.


이제 로컬에서 작동하므로 클라우드에 업로드하여 다른 사람에게 보여주고 l33t h4xx0r 코딩 기술로 친구와 가족에게 깊은 인상을 남길 수 있습니다. 😆


하지만 그렇지 않습니다. 다른 사람들이 시험해 볼 수 있도록 온라인 서비스에 배포하는 것은 좋은 선택입니다.


그리고 우리는 2부에서 그 일을 할 것입니다. 요청을 수락할 수 있는 클라우드 기능을 만들고 빠른 프런트엔드를 수행하여 해당 기능의 결과(예: 팟캐스트 에피소드의 요약 및 하이라이트)를 시각화합니다.



계속…

지금은 그대로 두겠습니다.


지금까지 앱이 로컬에서 작동하고 있으며 다양한 길이의 에피소드로 테스트하고 Whisper가 전사를 만드는 데 걸리는 평균 시간을 확인할 수 있습니다.


여기까지 읽어주셔서 감사합니다.


그리고 2부에서도 다시 만나길 바랍니다.

다가오는 기사를 놓치지 않도록 Hackernoon에서 저를 구독하는 것을 잊지 마세요.