[AI] STT-TTS 사용기 (whisper, tts 모델)

도톨이·2024년 6월 2일

AI

목록 보기
7/14
post-thumbnail

입력 텍스트로 오디오 파일을 만드는 TTS 를 배워보자.

Set up

우선 구글 코랩에 들어가서 초기 세팅을 한다

!pip install openai

pip 로 openai 를 설치해주고, ! 느낌표 붙이는 이유는 코랩에서는 !를 붙여야 저런 명령어가 실행된다.

openai 에서 OpenAI 라이브러리를 불러온다.

from openai import OpenAI

그런 다음, api_key 를 다음처럼 넣어주고 모델을 지정해준다. 저 api key 는 현재는 삭제된 키이다. 자신의 키를 넣으면 된다.

client = OpenAI(api_key="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")
model = "tts-1"

tts-1 모델은 텍스트를 오디오로 변환하기 위한 모델이다.
이에 대해 더 자세히 알아보자.

Text to Audio (Text to Speech)

텍스트를 오디오로 바꿀때는 "tts-1" 모델을 사용하고 오디오를 텍스트로 바꿀때는 "whisper-1"모델을 사용한다.

TTS 를 먼저 실습해보자.

달리나 LLM 에서 했던 것처럼 model 을 입력하고 출력 포맷을 입력할 수 있다.
음성 모델이므로 voice나 speed 와 같은 인자 설정이 가능하다.

response = client.audio.speech.create(
  model=model,
  voice="fable",  #alloy, echo, fable, onyx, nova, shimmer
  response_format = "mp3" , #mp3, opus, aac, flac.
  speed = 1.0, # 0.25 ~ 4
  input="안녕하세요. 저는 지피티에몽이에요."
)

AI 응답을 다음처럼 파일로 저장할 수 있다.

response.stream_to_file("audio.mp3")

Audio to Text (Transcription)

이번엔 위스퍼 모델을 이용하여 STT 를 연습해보자.

모델을 설정한다.

model = "whisper-1"

파일명을 지정해서 open 을 하고 client.autio.transcriptions.create() 함수를 통해 텍스트를 읽을 수 있다. 언어는 한국어로 설정을 했고, 응답 포맷은 우선 text로 하였다.

audio_file = open("audio1.mp3", "rb")
transcript = client.audio.transcriptions.create(
  model=model,
  language = "ko" ,
  file=audio_file,
  response_format = "text" , #json, text, srt, verbose_json, vtt.
  temperature = 0.5
)

결과를 확인해봤는데 "안녕 나는 지피티에몽이야" 라는 음성 문장을 "안녕 나는 GPT의몽이야" 라고 번역을 했네요.

print(transcript)

json 으로 출력형식 바꿨을 땐 "Transcription(text='안녕 나는 GPT의 몽이야')" 이렇게 나온다.

Translation

이번엔 번역 기능을 이용해보자. 모델은 그대로 위스퍼 모델이다.
audio_pt.mp3 은 포르투갈 언어로 되어있는 파일인데 이를 client.audio.translations.create() 메서드로 파라미터 넣어서 실행시킨다. 단 이 함수는 영어로만 번역된다.

audio_file = open("audio_pt.mp3", "rb")
transcript = client.audio.translations.create(
  model=model,
  file=audio_file,
  response_format="text",
  temperature = 0.5
)

출력을 해보니 다음과 같은 결과가 나왔다.
Today we are studying how to generate an audio from a text.

print(transcript)
profile
Kotlin, Flutter, AI | Computer Science

0개의 댓글