본문 바로가기
인공지능/생성형 AI

[생성형 AI] OpenAI 음성 생성 및 입력 활용

by 클레어몬트 2025. 2. 17.

OpenAI의 새로운 음성 생성 및 입력 기능을 활용하면 텍스트를 음성으로 변환(TTS)하고, 음성을 텍스트로 변환(STT)할 수 있다. 이를 활용하면 음성 기반 챗봇, 자동 응답 시스템, 음성 데이터 분석 등 다양한 응용이 가능하다.

본 글에서는 OpenAI의 gpt-4o-audio-preview 모델을 사용하여 음성을 생성하고 입력하는 방법을 설명한다!

※ 음성 데이터의 길이와 토큰 수는 아직 명확하지 않지만, 일반적으로 1시간의 대화 = 128k 토큰 정도로 알려져 있다

 

 

음성 생성하기 (TTS, Text-To-Speach)

OpenAI의 gpt-4o-audio-preview 모델을 사용하면 텍스트 입력을 기반으로 음성을 생성할 수 있다. Python을 활용하여 음성을 생성하는 코드를 살펴보자.

import openai
import base64

client = openai.OpenAI()

completion = client.chat.completions.create(
    model="gpt-4o-audio-preview",
    modalities=["text", "audio"],
    audio={"voice": "alloy", "format": "mp3"},
    messages=[
        {'role': 'system', 'content': '당신은 친절한 음성 비서를 담당합니다.'},
        {'role': 'user', 'content': '안녕하세요! 오늘 날씨 어때요?'}
    ],
    temperature=0.3,
    max_tokens=4096
)

# 생성된 음성 데이터를 저장하기
wav_bytes = base64.b64decode(completion.choices[0].message.audio.data)
with open("speech.mp3", "wb") as f:
    f.write(wav_bytes)

 

생성된 음성을 base64 디코딩하여 speech.mp3 파일로 저장한다

 

 

음성 입력하기 (STT, Speach-To-Text)

음성을 텍스트로 변환하는 기능(STT)도 사용할 수 있다. 이를 활용하면 사용자의 음성 명령을 분석하고, 대화형 챗봇을 만들 수 있다.

import base64

# 음성 파일을 base64로 인코딩
with open("speech.mp3", "rb") as audio:
    mp3_data = audio.read()
encoded_string = base64.b64encode(mp3_data).decode('utf-8')

completion = client.chat.completions.create(
    model="gpt-4o-audio-preview",
    modalities=["text"],
    messages=[
        {'role': 'system', 'content': '당신은 AI 음성 비서입니다.'},
        {
            "role": "user",
            "content": [
                {
                    "type": "input_audio",
                    "input_audio": {
                        "data": encoded_string,
                        "format": "mp3"
                    }
                }
            ]
        }
    ]
)

print(completion.choices[0].message.content)

 

speech.mp3 음성 파일을 base64로 변환한다