음성 및 오디오에 GPT-4o 실시간 API를 사용하는 방법(미리 보기)
참고 항목
이 기능은 현재 공개 미리 보기로 제공됩니다. 이 미리 보기는 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.
음성 및 오디오용 Azure OpenAI GPT-4o 실시간 API는 짧은 대기 시간, "음성 출력, 음성 출력" 대화형 상호 작용을 지원하는 GPT-4o 모델 제품군의 일부입니다. GPT-4o 실시간 API는 실시간 대기 시간이 짧은 대화형 상호 작용을 처리하도록 설계되었습니다. 실시간 API는 사용자와 모델 간의 실시간 상호 작용(예: 고객 지원 에이전트, 음성 도우미 및 실시간 번역기)과 관련된 사용 사례에 적합합니다.
대부분의 Realtime API 사용자는 WebRTC 또는 전화 통신 시스템을 사용하는 애플리케이션을 포함하여 최종 사용자로부터 실시간으로 오디오를 전달하고 받아야 합니다. 실시간 API는 최종 사용자 디바이스에 직접 연결하도록 설계되지 않았으며 클라이언트 통합을 사용하여 최종 사용자 오디오 스트림을 종료합니다.
지원되는 모델
현재 버전만 gpt-4o-realtime-preview
: 2024-10-01-preview
실시간 오디오를 지원합니다.
이 gpt-4o-realtime-preview
모델은 미국 동부 2 및 스웨덴 중부 지역의 글로벌 배포에 사용할 수 있습니다.
Important
시스템은 제한된 예외가 적용되지 않는다는 점을 제외하고 Azure OpenAI 서비스에 대한 서비스별 제품 약관의 "남용 모니터링에 대한 데이터 사용 및 액세스" 섹션에 설명된 대로 프롬프트 및 완료를 저장합니다. 수정된 남용 모니터링에 대해 승인된 고객에게도 API 사용을 gpt-4o-realtime-preview
위해 남용 모니터링이 설정됩니다.
API 지원
실시간 API에 대한 지원은 API 버전 2024-10-01-preview
에서 처음 추가되었습니다.
참고 항목
API 및 아키텍처에 대한 자세한 내용은 GitHub의 Azure OpenAI GPT-4o 실시간 오디오 리포지토리를 참조하세요.
시작하기
GPT-4o 실시간 오디오를 사용하려면 다음이 필요합니다.
- Azure 구독 – 체험 구독을 만듭니다.
- 지원되는 지역에서 만든 Azure OpenAI 리소스입니다. 자세한 내용은 Azure OpenAI를 사용하여 리소스 만들기 및 모델 배포를 참조하세요.
- 지원되는 모델 섹션에
gpt-4o-realtime-preview
설명된 대로 지원되는 지역에 모델을 배포해야 합니다. Azure AI Foundry 포털 모델 카탈로그 또는 AI Foundry 포털의 프로젝트에서 모델을 배포할 수 있습니다.
모델을 배포하고 사용하는 gpt-4o-realtime-preview
단계는 실시간 오디오 빠른 시작을 참조 하세요.
API 및 아키텍처에 대한 자세한 내용은 이 가이드의 나머지 섹션을 참조하세요.
샘플 코드
지금 GPT-4o Realtime API를 사용하여 개발을 시작하는 가장 빠른 방법은 GitHub의 Azure OpenAI GPT-4o 실시간 오디오 리포지토리에서 샘플 코드를 다운로드하는 것입니다.
Azure-Samples/aisearch-openai-rag-audio 리포지토리 에는 오디오용 GPT-4o 실시간 API를 통해 음성을 사용자 인터페이스로 사용하는 애플리케이션에서 RAG 지원을 구현하는 방법의 예가 포함되어 있습니다.
연결 및 인증
실시간 API(통해/realtime
)는 최종 사용자와 모델 간의 완전한 비동기 스트리밍 통신을 용이하게 하기 위해 WebSockets API를 기반으로 합니다.
Important
오디오 데이터 캡처 및 렌더링과 같은 디바이스 세부 정보는 Realtime API의 범위를 벗어날 수 있습니다. 최종 사용자에 대한 연결과 모델 엔드포인트 연결을 모두 관리하는 신뢰할 수 있는 중간 서비스의 컨텍스트에서 사용해야 합니다. 신뢰할 수 없는 최종 사용자 디바이스에서 직접 사용하지 마세요.
실시간 API는 Azure OpenAI 리소스의 엔드포인트에 /realtime
대한 보안 WebSocket 연결을 통해 액세스됩니다.
다음을 연결하여 전체 요청 URI를 생성할 수 있습니다.
- 보안 WebSocket(
wss://
) 프로토콜 - Azure OpenAI 리소스 엔드포인트 호스트 이름(예:
my-aoai-resource.openai.azure.com
openai/realtime
API 경로- 지원
api-version
되는 API 버전에 대한 쿼리 문자열 매개 변수(예: )2024-10-01-preview
deployment
모델 배포 이름이gpt-4o-realtime-preview
있는 쿼리 문자열 매개 변수
다음 예제는 잘 구성된 /realtime
요청 URI입니다.
wss://my-eastus2-openai-resource.openai.azure.com/openai/realtime?api-version=2024-10-01-preview&deployment=gpt-4o-realtime-preview-deployment-name
인증하려면 다음을 수행합니다.
- Microsoft Entra (권장): 관리 ID를 사용하도록 설정된 Azure OpenAI 서비스 리소스에 대한 API로 토큰 기반 인증
/realtime
을 사용합니다. 헤더가 있는 토큰을 사용하여Bearer
검색된 인증 토큰을 적용합니다Authorization
. - API 키: 다음
api-key
두 가지 방법 중 하나로 제공할 수 있습니다.- 프리핸드셰이
api-key
크 연결에서 연결 헤더 사용 이 옵션은 브라우저 환경에서 사용할 수 없습니다. - 요청 URI에서
api-key
쿼리 문자열 매개 변수 사용 쿼리 문자열 매개 변수는 https/wss를 사용할 때 암호화됩니다.
- 프리핸드셰이
실시간 API 아키텍처
WebSocket 연결 세션 /realtime
이 설정되고 인증되면 WebSocket 메시지를 보내고 받기 위한 이벤트를 통해 기능 상호 작용이 이루어집니다. 이러한 이벤트는 각각 JSON 개체의 형태를 취합니다. 이벤트를 병렬로 보내고 받을 수 있으며 애플리케이션은 일반적으로 동시에 비동기적으로 처리해야 합니다.
- 호출자가 새
session
연결을 시작하는 연결을/realtime
설정합니다. - A는
session
자동으로 기본값conversation
을 만듭니다. 여러 동시 대화는 지원되지 않습니다. conversation
호출자가 직접 이벤트를 통해 또는 VAD(음성 활동 기반) 턴 검색에 의해 자동으로 시작될 때까지response
입력 신호를 누적합니다.- 각각
response
은 메시지, 함수 호출 및 기타 정보를 캡슐화할 수 있는 하나 이상의items
정보로 구성됩니다. - 각 메시지에
item
는content_part
단일 항목에서 여러 형식(텍스트 및 오디오)을 나타낼 수 있습니다. session
호출자 입력 처리(예: 사용자 오디오) 및 일반적인 출력 생성 처리의 구성을 관리합니다.- 각 호출자 시작은
response.create
원하는 경우 일부 출력response
동작을 재정의할 수 있습니다. - 서버에서 만든
item
메시지와content_part
in 메시지는 비동기적으로 병렬로 채울 수 있습니다. 예를 들어 라운드 로빈 방식으로 오디오, 텍스트 및 함수 정보를 동시에 수신합니다.
세션 구성 및 턴 처리 모드
새로 설정된 /realtime
세션에서 호출자가 보낸 첫 번째 이벤트는 페이로드인 session.update
경우가 많습니다. 이 이벤트는 다양한 입력 및 출력 동작 집합을 제어하며, 출력 및 응답 생성 부분은 나중에 속성을 통해 response.create
재정의할 수 있습니다.
세션 전체의 주요 설정 turn_detection
중 하나는 호출자와 모델 간에 데이터 흐름을 처리하는 방법을 제어하는 것입니다.
server_vad
는 VAD(음성 활동 탐지기) 구성 요소를 사용하여 들어오는 사용자 오디오를input_audio_buffer.append
평가하고 음성 종료가 감지되면 해당 오디오를 사용하여 해당 대화에서 응답 생성을 자동으로 시작합니다. 검색 모드를 지정할 때 VAD에 대한 무음 검색을server_vad
구성할 수 있습니다.none
는 호출자가 시작한input_audio_buffer.commit
이벤트와response.create
이벤트를 사용하여 대화를 진행하고 출력을 생성합니다. 이 설정은 외부 오디오 흐름 제어(예: 호출자 쪽 VAD 구성 요소)가 있는 푸시 투 토크 애플리케이션 또는 상황에 유용합니다. 이러한 수동 신호는 VAD 시작 응답 생성을 보완하기 위해 모드에서server_vad
계속 사용할 수 있습니다.
사용자 입력 오디오의 전사는 속성을 통해 input_audio_transcription
옵트인됩니다. 이 구성에서 전사 모델(whisper-1
)을 지정하면 이벤트를 배달 conversation.item.audio_transcription.completed
할 수 있습니다.
세션 업데이트 예제
도구를 포함하여 세션의 여러 측면을 구성하는 예제 session.update
는 다음과 같습니다. 모든 세션 매개 변수는 선택 사항입니다. 모든 것을 구성해야 하는 것은 아닙니다!
{
"type": "session.update",
"session": {
"voice": "alloy",
"instructions": "Call provided tools if appropriate for the user's input.",
"input_audio_format": "pcm16",
"input_audio_transcription": {
"model": "whisper-1"
},
"turn_detection": {
"threshold": 0.4,
"silence_duration_ms": 600,
"type": "server_vad"
},
"tools": [
{
"type": "function",
"name": "get_weather_for_location",
"description": "gets the weather for a location",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state e.g. San Francisco, CA"
},
"unit": {
"type": "string",
"enum": [
"c",
"f"
]
}
},
"required": [
"location",
"unit"
]
}
}
]
}
}
관련 콘텐츠
- 실시간 오디오 빠른 시작 시도
- 실시간 API 참조 참조
- Azure OpenAI 할당량 및 제한에 대해 자세히 알아보기