Amazon Nova 2 Sonic은 자연스러운 실시간 음성 대화 애플리케이션을 만들기 위한 Amazon의 음성 대 음성 파운데이션 모델이며, Nova 사용자 가이드는 대화형 음성 어시스턴트, 고객 서비스 자동화, 대화형 애플리케이션을 대상으로 삼습니다.
- 입력
- 오디오 텍스트 $0.06/M
- 출력
- 오디오 텍스트 $0.24/M
- 오디오 입력
- $3/M
- 오디오 출력
- $12/M
벤치마크
nova-2-sonic: 8개가 공개됐지만, 비교할 수 있을 만큼 여러 모델이 함께 측정한 벤치마크가 없습니다.
가격 수준 비교
같은 종류의 모델 6개 중 가격 위치
이 막대는 Synthorai에 있는 같은 종류의 모델 가운데 이 모델의 가격이 어디쯤인지 보여 줍니다. 양쪽 끝에는 가장 싼 모델과 가장 비싼 모델의 이름이 있습니다. 기본 요율 기준이며 배치·리전·캐시 쓰기 할인은 가격 페이지에 있습니다.
사양 및 제한
토큰
| 컨텍스트 윈도우(공급자 사양) | 1,000,000 |
|---|---|
| 최대 출력(공급자 사양) | 64,000 |
오디오
| 언어 | 영어(US, UK, 인도, 호주), 프랑스어, 이탈리아어, 독일어, 스페인어, 포르투갈어, 힌디어를 지원하며, 세션 도중 언어를 자동으로 감지하고 전환 |
|---|---|
| 오디오 제한 |
|
| 스트리밍 전사 | 지원 |
실시간
| 보이스 | 로케일별 여성형·남성형 음성 제공(tiffany/matthew en-US, amy en-GB, olivia en-AU, kiara/arjun en-IN 및 hi-IN, ambre/florian fr-FR, beatrice/lorenzo it-IT, tina/lennart de-DE, lupe/carlos es-US, carolina/leo pt-BR); tiffany와 matthew는 지원되는 모든 언어를 구사하는 다국어 음성입니다. |
|---|---|
| 세션 |
|
모델
| 모달리티 | 오디오 + 텍스트 → 오디오 + 텍스트 |
|---|
실시간 음성 애플리케이션을 위한 Amazon의 음성 대 음성 파운데이션 모델로, 요청/응답 방식이 아니라 양방향 스트리밍 API로 접근합니다. 들어오는 발화의 운율에 맞춰 전달 방식을 조정하고 한 문장 안에서도 언어를 전환하며, 배경 소음과 지원 언어의 억양에 강인하다고 문서화되어 있습니다.
출처: Amazon 공식 문서 ↗
30초 만에 nova-2-sonic 사용하기
OpenAI Realtime 호환입니다. WebSocket으로 연결해 오디오를 스트리밍으로 주고받습니다. WS /v1/realtime
import asyncio, base64, json, websockets
URL = "wss://synthorai.io/v1/realtime?model=nova-2-sonic"
# Send ONLY the Authorization header - the beta protocol is retired.
HEADERS = {"Authorization": "Bearer sk-syn-..."}
async def main():
async with websockets.connect(URL, additional_headers=HEADERS) as ws:
# 1) configure the speech-to-speech session
await ws.send(json.dumps({
"type": "session.update",
"session": {
"type": "realtime",
"output_modalities": ["audio"],
"audio": {"output": {"voice": "alloy"}},
},
}))
# 2) send input audio (base64 PCM16), then request a spoken reply
await ws.send(json.dumps({"type": "input_audio_buffer.append", "audio": pcm16_b64}))
await ws.send(json.dumps({"type": "input_audio_buffer.commit"}))
await ws.send(json.dumps({"type": "response.create"}))
# 3) stream the model's audio (and text) back
async for raw in ws:
ev = json.loads(raw)
if ev["type"] == "response.audio.delta":
play(base64.b64decode(ev["delta"])) # audio out
elif ev["type"] == "response.done":
break
asyncio.run(main())import WebSocket from "ws";
const ws = new WebSocket("wss://synthorai.io/v1/realtime?model=nova-2-sonic", {
// Send ONLY the Authorization header — the beta protocol is retired.
headers: { Authorization: "Bearer sk-syn-..." },
});
ws.on("open", () => {
// configure the speech-to-speech session
ws.send(JSON.stringify({ type: "session.update", session: {
type: "realtime", output_modalities: ["audio"], audio: { output: { voice: "alloy" } },
} }));
// send input audio (base64 PCM16), then request a spoken reply
ws.send(JSON.stringify({ type: "input_audio_buffer.append", audio: pcm16Base64 }));
ws.send(JSON.stringify({ type: "input_audio_buffer.commit" }));
ws.send(JSON.stringify({ type: "response.create" }));
});
ws.on("message", (raw) => {
const ev = JSON.parse(raw.toString());
if (ev.type === "response.audio.delta") playAudio(Buffer.from(ev.delta, "base64")); // audio out
else if (ev.type === "response.done") ws.close();
});# Realtime is a WebSocket protocol - use a WS client such as websocat.
# Each line below is one OpenAI Realtime event (JSON) sent to the session.
websocat -H 'Authorization: Bearer sk-syn-...' \
'wss://synthorai.io/v1/realtime?model=nova-2-sonic' <<'EOF'
{"type":"session.update","session":{"type":"realtime","output_modalities":["audio"],"audio":{"output":{"voice":"alloy"}}}}
{"type":"input_audio_buffer.append","audio":"<base64-pcm16>"}
{"type":"input_audio_buffer.commit"}
{"type":"response.create"}
EOF
# Responses stream back as response.audio.delta (base64 audio out) … response.donepackage main
import (
"net/http"
"github.com/gorilla/websocket"
)
func main() {
h := http.Header{}
h.Set("Authorization", "Bearer sk-syn-...")
// Send ONLY the Authorization header — the beta protocol is retired.
c, _, err := websocket.DefaultDialer.Dial("wss://synthorai.io/v1/realtime?model=nova-2-sonic", h)
if err != nil {
panic(err)
}
defer c.Close()
// configure the speech-to-speech session, send audio, request a spoken reply
c.WriteJSON(map[string]any{"type": "session.update", "session": map[string]any{
"type": "realtime", "output_modalities": []string{"audio"},
"audio": map[string]any{"output": map[string]any{"voice": "alloy"}}}})
c.WriteJSON(map[string]any{"type": "input_audio_buffer.append", "audio": pcm16B64})
c.WriteJSON(map[string]any{"type": "input_audio_buffer.commit"})
c.WriteJSON(map[string]any{"type": "response.create"})
for {
var ev struct {
Type string `json:"type"`
Delta string `json:"delta"`
}
if err := c.ReadJSON(&ev); err != nil {
return
}
if ev.Type == "response.audio.delta" {
playAudio(ev.Delta) // base64 audio out
} else if ev.Type == "response.done" {
return
}
}
}import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.WebSocket;
import java.util.concurrent.CompletionStage;
// JDK built-in WebSocket — no extra dependency needed.
WebSocket ws = HttpClient.newHttpClient().newWebSocketBuilder()
.header("Authorization", "Bearer sk-syn-...")
// Send ONLY the Authorization header — the beta protocol is retired.
.buildAsync(URI.create("wss://synthorai.io/v1/realtime?model=nova-2-sonic"), new WebSocket.Listener() {
public CompletionStage<?> onText(WebSocket w, CharSequence data, boolean last) {
// handle response.audio.delta (base64 audio out) / response.done here
w.request(1);
return null;
}
}).join();
// configure the session, send input audio, then request a spoken reply
ws.sendText("{\"type\":\"session.update\",\"session\":{\"type\":\"realtime\",\"output_modalities\":[\"audio\"],\"audio\":{\"output\":{\"voice\":\"alloy\"}}}}", true);
ws.sendText("{\"type\":\"input_audio_buffer.append\",\"audio\":\"<base64-pcm16>\"}", true);
ws.sendText("{\"type\":\"input_audio_buffer.commit\"}", true);
ws.sendText("{\"type\":\"response.create\"}", true);nova-2-sonic 소개
- 요청-응답 방식이 아니라 양방향 스트리밍 API로 접근하는데, 저지연 멀티턴 대화를 가능하게 하는 것이 바로 이 점입니다.
- 공식 문서는 1M 토큰 컨텍스트 윈도우와 64K 최대 출력 토큰을 명시하며, 같은 대화 안에서 오디오와 텍스트를 함께 받고 오디오와 텍스트를 반환합니다.
- 음성 커버리지는 미국·영국·인도·호주 영어 변형과 프랑스어, 이탈리아어, 독일어, 스페인어, 포르투갈어, 힌디어에 걸쳐 있고, 남성적인 음색과 여성적인 음색이 모두 제공되며 자동 언어 감지와 전환을 지원합니다.
- 폴리글롯 보이스는 지원되는 모든 언어를 구사하므로 세션 중간에 발화자가 언어를 바꿔도 페르소나가 그대로 유지됩니다.
- 대화 동작이 핵심 강점입니다.
- 전달 방식이 입력 음성의 운율에 맞춰 조정되고, 지능형 턴테이킹이 발화 종료를 감지하며, 끼어들기를 컨텍스트 손실 없이 매끄럽게 처리하고, 문서는 배경 소음과 지원 언어의 억양에 대한 견고함을 내세웁니다.
- 함수 호출과 에이전틱 워크플로를 지원하고, 검색 증강 생성으로 엔터프라이즈 데이터에 대한 지식 그라운딩이 가능하며, 비동기 도구 처리 덕분에 도구가 백그라운드에서 실행되는 동안에도 어시스턴트가 계속 말을 이어갈 수 있습니다.
- 설계 시 감안할 제약이 하나 있습니다.
- 연결은 8분으로 제한되며, 더 긴 대화를 위한 갱신과 세션 연장 패턴이 샘플 코드에 문서화되어 있습니다.
- 제공 리전은 소수로 한정됩니다.
- Synthorai는 OpenAI 호환 /v1/realtime WebSocket 엔드포인트로 이 모델을 서빙하므로 공식 Realtime SDK 클라이언트가 그대로 연결됩니다.
자주 묻는 질문
nova-2-sonic API는 무료로 사용해 볼 수 있나요?
nova-2-sonic는 현재 초대제 베타 단계라 누구나 바로 쓸 수는 없고, 신청 후 승인을 받아야 합니다. Synthorai 콘솔에서 신청할 수 있으며, 승인되면 구독 없이 일반 종량제 요금이 적용됩니다.
nova-2-sonic는 어떤 작업에 가장 강한가요?
실시간 음성 대화를 위한 음성 대 음성 모델, 폴리글롯 보이스가 언어 전환에도 하나의 페르소나 유지, 연결은 8분 제한, 문서화된 갱신 패턴 제공. 자세한 내용은 공급자의 공식 릴리스 노트를 바탕으로 정리한 소개 섹션에서 확인하세요.
nova-2-sonic 가격은 얼마인가요?
Synthorai에서 nova-2-sonic 가격은 입력 100만 토큰당 $0.06, 출력 100만 토큰당 $0.24입니다. 공급자 정가 그대로이며 플랫폼 마진은 없습니다.
nova-2-sonic API는 어떻게 호출하나요?
nova-2-sonic는 음성 대 음성(speech-to-speech) 모델입니다. OpenAI Realtime SDK(또는 WebSocket 직접 연결)로 wss://synthorai.io/v1/realtime?model=nova-2-sonic에 접속해 오디오를 스트리밍으로 주고받습니다. POST /v1/audio/transcriptions처럼 파일을 올리는 방식이 아닙니다. sk-syn 키로 인증하며, Authorization 헤더만 보내면 됩니다(beta 프로토콜은 지원이 끝났습니다).
nova-2-sonic는 어떻게 이용하나요?
nova-2-sonic는 초대제 베타 모델이므로 Synthorai 콘솔에서 액세스를 신청해야 합니다. 승인되면 다른 모델과 똑같이 쓸 수 있습니다. OpenAI SDK에서 base_url="https://synthorai.io/v1", model="nova-2-sonic"만 지정하면 됩니다.
관련 모델
비교
이 페이지의 모든 값은 공급자 공식 문서(위 링크)에서 그대로 옮겨 적었으며, 확인한 날짜를 함께 표기합니다. 가격은 카탈로그 전체와 비교해 보여 주지만, 공급자마다 정의가 다른 사양 값은 차이만 밝히고 차트로 비교하지 않습니다. 저희가 직접 측정한 수치는 없고, 점수도 매기지 않습니다.