방문자

오늘
—
어제
—
누적
—

불러오는 중

게임 개발 · 기술 동향 · 팀 블로그MIRO
헤드라인

OpenAI Python SDK

OpenAI Python 3.49.0, 비동기 도구 설정과 마이크 WAV 수정

float32 녹음을 16비트 PCM으로 변환하고 int8 녹음의 무음 기준을 128로 옮기는 개념도
MIRO 자체 제작 설명 도식 · CC BY 4.0. 공식 수정 코드의 변환 과정을 그렸으며 실제 녹음 화면이나 측정 결과는 아닙니다. · 이미지 출처 · 이용 조건

작은 SDK 변경에서 확인할 두 가지

11월 10일 공개된 OpenAI Python SDK 3.49.0에는 함수 도구의 비동기 설정을 위한 타입과 마이크 녹음 파일 수정이 들어갔습니다. 에이전트가 외부 작업을 기다리는 방식, 음성을 파일로 넘기는 방식에 각각 관련된 변화입니다. 공식 릴리스와 병합된 코드를 바탕으로 정리했으며, 실제 서비스 호출이나 마이크 녹음을 수행한 실험 결과는 아닙니다.

함수 결과를 기다릴지 명시합니다

새로 추가된 async 옵션은 함수 실행 결과를 기다리지 않고 에이전트가 계속 진행할지를 나타냅니다. 요청 타입에는 전송 이름 그대로 async가 들어가고, 응답 모델에서는 파이썬 예약어를 피한 async_ 속성에 연결됩니다. 저장된 에이전트 도구에도 같은 표현이 추가됐습니다.

이는 파이썬 함수를 async def로 선언하는 것과는 구별해야 합니다. 클라이언트 코드가 비동기로 통신하는지와 에이전트가 도구 결과를 기다리는지는 서로 다른 설정입니다. 수정에는 동기·비동기 클라이언트 양쪽의 에이전트, 세션, 자동화 요청 테스트가 포함돼 있습니다. 다만 타입 추가만 보고 기존 도구가 모두 동시에 실행되거나 응답 속도가 개선됐다고 해석할 근거는 없습니다.

적용 전에는 결과가 필요한 다음 단계가 무엇인지 먼저 나누는 편이 좋습니다. 예를 들어 조회 결과를 확인한 뒤 결론을 내려야 하는 작업과, 완료 여부를 나중에 확인해도 되는 작업은 기다림의 의미가 다릅니다. 옵션을 켠다면 결과 수신, 실패 표시, 취소 처리를 애플리케이션에서 어떻게 이어 갈지도 점검해야 합니다.

녹음 데이터와 WAV의 약속을 맞춥니다

음성 쪽 수정은 Microphone.record()가 녹음 배열을 WAV로 저장하는 경로입니다. 기존 코드는 녹음 자료형의 바이트를 정수 PCM 파일에 그대로 썼습니다. float32로 받은 값은 실수 비트가 정수로 읽히고, 부호 있는 int8의 무음 값 0은 부호 없는 8비트 WAV에서 다른 크기로 해석될 수 있었습니다.

수정 후 float32 값은 -1부터 1까지로 제한한 뒤 16비트 정수 PCM으로 변환합니다. int8은 각 값에 128을 더해 부호 없는 8비트 범위로 옮깁니다. 따라서 이 경로에서 무음 0은 WAV의 128에 대응합니다. 파일의 샘플 너비도 변환된 자료형을 따르도록 바뀌었습니다. int16, int32, uint8은 기존 인코딩을 유지하고, return_ndarray=True로 배열을 받으면 원래 자료형과 데이터를 보존합니다.

업데이트 뒤에는 입력 경로부터 점검하세요

음성 앱에서는 사용 중인 녹음 자료형과 반환 형식을 먼저 확인하세요. WAV로 받는지, 배열을 받아 직접 인코딩하는지에 따라 이번 수정이 닿는 경로가 달라집니다. 같은 짧은 입력으로 샘플 너비와 채널 수를 살피고, 파일을 다시 읽었을 때 무음과 양·음 진폭이 의도대로 남는지 비교하면 좋습니다.

추가된 회귀 테스트는 모의 입력 장치로 다섯 자료형과 스테레오 정보, 배열 반환을 검사합니다. 실제 하드웨어나 음성 인식 품질 전체를 보장하는 시험은 아닙니다. 업데이트 효과를 판단할 때도 모델 정확도가 올랐다고 단정하기보다, 입력 파일이 올바른 형식으로 전달되는지부터 확인하는 것이 이번 변경의 범위에 맞습니다.

출처

댓글

이 글에 대한 생각을 남겨 주세요.

댓글 삭제

헤드라인

같은 카테고리의 글

최신 AI 동향 전체 보기 ↗