3️⃣Text to Speech

OpenAI: Text to Speech

import os
from dotenv import load_dotenv

# 토큰 정보로드
api_key = os.getenv("OPENAI_API_KEY")
load_dotenv()
True

1. Text To Speech(TTS)

  • TTS는 컴퓨터 프로그램이나 기기가 텍스트를 인간의 음성처럼 들리는 오디오로 변환하는 과정입니다.

  • 이 기술은 음성 합성을 통해 텍스트 데이터를 자연스러운 음성으로 바꿉니다.

  • 사용 예시: 오디오북, 음성 안내 시스템, 음성 기반 가상 어시스턴트 등.

[참고]

  • 공식문서: https://platform.openai.com/docs/guides/text-to-speech

주요 파라미터

  • model: 사용 가능한 TTS 모델 중 하나를 지정합니다. tts-1 또는 tts-1-hd.

    • 최신 지원모델 확인: https://platform.openai.com/docs/models/tts

  • input: 오디오를 생성할 텍스트입니다. 최대 길이는 4096자입니다.

  • voice: 오디오를 생성할 때 사용할 음성입니다. 지원되는 음성은 alloy, echo, fable, onyx, nova, and shimmer 입니다. 음성의 미리듣기는 여기arrow-up-right 에서 확인할 수 있습니다.

  • response_format: 오디오를 입력할 형식입니다. 지원되는 형식은 mp3, opus, aacflac 입니다.

  • speed: 생성된 오디오의 속도입니다. 0.25 에서 4.0 사이의 값을 선택합니다. 기본값은 1.0 입니다.

Client 생성

  • client 는 OpenAI 모듈로 생성된 인스턴스 입니다.

[주의] 아래의 코드에서 오류가 난다면 API 키의 오류일 가능성이 높습니다.

Your browser does not support the audio element.

2. Speech To Text(STT)

  • STT는 사람의 말소리를 텍스트로 변환하는 기술입니다.

  • 이는 음성 인식을 통해 구어체 언어를 캡처하고 이를 기록 가능한 형태의 텍스트로 변환합니다.

  • 사용예시: 음성 명령 입력, 자동 회의록 작성, 음성 기반 검색 시스템 등.

[참고]

  • 공식문서: https://platform.openai.com/docs/guides/speech-to-text

  • 파일 업로드는 현재 25MB로 제한되어 있으며, 지원되는 입력 파일 형식은 mp3, MP4, MPEG, MPGA, M4A, WAV, WEBM 입니다.

  • 지원언어

    • 아프리칸스어, 아랍어, 아르메니아어, 아제르바이잔어, 벨라루스어, 보스니아어, 불가리아어, 카탈로니아어, 중국어, 크로아티아어, 체코어, 덴마크어, 네덜란드어, 영어, 에스토니아어, 핀란드어, 프랑스어, 갈리시아어, 독일어, 그리스어, 히브리어, 힌디어, 헝가리어, 아이슬란드어, 인도네시아어, 이탈리아어, 일본어, 인도네시아어, 칸나다어, 카자흐어, 한국어, 라트비아어, 리투아니아어, 마케도니아어, 말레이어, 마라티어, 마오리어, 네팔어, 노르웨이어, 페르시아어, 폴란드어, 포르투갈어, 루마니아어, 러시아어, 세르비아어, 슬로바키아어, 슬로베니아어, 스페인어, 스와힐리어, 스웨덴어, 타갈로그어, 타밀어, 태국어, 터키어, 우크라이나어, 우르두어, 베트남어 및 웨일스어.

주요 파라미터

  • file: 변환할 오디오 파일 개체(파일 이름이 아님)로, 다음 형식 중 하나입니다: FLAC, MP3, MP4, MPEG, MPGA, M4A, OGG, WAV 또는 WEBM.

  • model: 현재는 whisper-1 모델만 지정 가능합니다.

  • language: 입력 오디오의 언어입니다. 입력 언어를 ISO-639-1 형식으로 제공하면 정확도와 지연 시간이 개선됩니다.

  • prompt: (선택 사항) 모델의 스타일을 안내하거나 이전 오디오 세그먼트를 계속하기 위한 텍스트입니다. 프롬프트는 오디오 언어와 일치해야 합니다.

  • response_format: 변환된 결과물 출력 형식입니다. 가능한 지정 옵션은 json, text, srt, verbose_json 또는 vtt 입니다.

  • temperature: 0에서 1 사이의 샘플링 temperature 입니다. 0.8과 같이 값이 높을수록 출력은 더 무작위적이고, 0.2와 같이 값이 낮을수록 출력은 더 집중적이고 결정론적입니다. 0으로 설정하면 모델은 로그 확률을 사용하여 특정 임계값에 도달할 때까지 자동으로 temperature 을 높입니다.

3. 더욱 긴 오디오 입력 대한 처리

  • 기본적으로 Whisper API는 25MB 미만의 파일 만 지원

  • 이보다 긴 오디오 파일이 있는 경우 25MB 이하의 청크로 나누거나 압축된 오디오 형식을 사용

  • 최상의 성능을 얻으려면 문장 중간에 오디오를 분할하면 일부 문맥이 손실될 수 있으므로 가급적 분할 사용에 주의

  • 이를 처리하는 한 가지 방법은 PyDub 오픈 소스 Python 패키지를 사용하여 오디오를 분할

샘플 데이터셋(채용면접 인터뷰 데이터)

  • 링크: https://aihub.or.kr/aihubdata/data/view.do?currMenu=115&topMenu=100&aihubDataSe=data&dataSetSn=71592

Last updated