Source: https://ailoot.ai/models/kk/qwen-audio-3-0-realtime-plus/
Canonical: https://ailoot.ai/models/kk/qwen-audio-3-0-realtime-plus/
Language: kk

# qwen-audio-3.0-realtime-plus

[Markdown](https://ailoot.ai/models/kk/qwen-audio-3-0-realtime-plus/index.md) · [JSON](https://ailoot.ai/models/kk/qwen-audio-3-0-realtime-plus/facts.json)

## [qwen-audio-3.0-realtime-plus](https://ailoot.ai/models/kk/qwen-audio-3-0-realtime-plus/)

Сөйлеу мен мәтінді қабылдап, дауыспен немесе мәтінмен жауап беретін тірі дауыстық диалог моделі. Табиғи қарқынмен сөйлесуге және құралдармен әрекеттесуге арналған.

- [**Ailoot · Нақты уақыттағы дауыс** `GET /v1/realtime?model=qwen-audio-3.0-realtime-plus` `qwen-audio-3.0-realtime-plus`](https://ailoot.ai/models/kk/qwen-audio-3-0-realtime-plus/#method-0)

Модель туралы

Бұл сипаттама модель мүмкіндіктерін қамтиды. Ailoot жүйесінде таңдалған әдіс үшін қолжетімді кіріс, шығыс және параметрлер төменде берілген.

Qwen-Audio-3.0-Realtime-Plus — тірі дауыстық диалогқа арналған Alibaba моделі. Ол сөйлеу мен мәтінді қабылдап, аудио және мәтінмен жауап береді әрі кезектесіп табиғи сөйлесетін екіжақты әңгімеге қолдау көрсетеді. Дыбысты бөліктермен жіберіп, қабылдауға болады, сондықтан әрекеттесу әңгіме барысында дамиды.

#### Әңгімелесуші ойын қашан аяқтады

Репликаның шекарасын анықтаудың бірнеше тәсілі бар: дыбыстық белсенділікке, мағыналық аяқталуға сүйену және тікелей басқару. Өндірушіде режим бірінші аудио жіберілгенге дейін таңдалады; әңгіме басталғаннан кейін оны өзгерту үшін жаңа қосылым қажет. Бұл басқаруды қолдау таңдалған әдіске байланысты. Мағыналық режим үзілістер мен сөйлеудегі кідіріс сөздерін ескереді: қысқа бөгеліс пайдаланушы ойын аяқтады дегенді міндетті түрде білдірмейді. Пайдаланушының жаңа сөзі жасалып жатқан жауапты үзіп, әңгімені келесі репликаға сәйкес жалғастыруы мүмкін. Мағыналық режимде басқа дауыстар мен фондық шуға азырақ алаңдау үшін тануды таңдалған әңгімелесушінің сөйлеу үлгісіне бағыттауға болады.

Нұсқаулар көмекшінің рөлін және сөйлесу стилін анықтайды. Дауыстық мәнер тонды, қарқын мен эмоцияны ескере алады; 3.0 нұсқасы үшін бес жүйелік дауыс және сөйлеу үлгісіне негізделген дауыстар қарастырылған. Модель орыс тілін қоса алғанда, 11 тілді, сондай-ақ өндіруші көрсеткен қытай диалектілік нұсқаларын қолдайды. Өндірушіде дауыс сессия баптаулары алғаш жаңартылғанда беріледі; сол әңгіме барысында кейін жіберілген жаңа дауыс еленбейді. Бұл баптаулар таңдалған қатынасу тәсілінің қолдауын қажет етеді.

#### Құралдар және әңгіме тарихы

Функцияларды шақыру қолдау табады. Модель қажетті әрекетті құрастырады, қосылған қолданба оны орындап, нәтижесін диалогқа қайтарады. Бұл әңгімені нақты деректерге негіздеп, орындалған операциядан кейін жалғастыруға мүмкіндік береді. Дауыстық көмекші әңгіме контекстін сақтай отырып, құралдардың нәтижелеріне сүйене алады. Өндіруші мүмкіндіктеріне таңдалған әдіс ұсынған жағдайда кіріктірілген веб-іздеу де кіреді. Бір сессияда веб-іздеу мен функция шақыруларын бір уақытта қосуға болмайды.

Әдепкіде тарих әңгіменің 20 қадамын қамтиды, бірден 50-ге дейінгі диапазон қарастырылған. Жинақталған аудиоға 300 секундтық шек қойылған; шектеулер асса, тарихтың ескі бөліктері жойылады. Бұл жеке репликаның ұзақтығынан өзгеше: тарих диалог жалғасқанда қандай алдыңғы материал қолжетімді қалатынын анықтайды.

#### Мәтіндік контекст және дыбыс

Формалды контекст — 40 960 токен. Кірістің шекті ұзындығы — 16 384 токен, шығыстыкі — 8192; пайымдау режимі үшін де осы кіріс пен шығыс шектері көрсетілген, ал пайымдау тізбегінің жеке шегі — 1024 токен.

Ағындық дыбыс үшін 16-биттік бір арналы PCM қарастырылған: кірісте — 16 кГц, шығыста — 24 кГц. Мәтіндік және аудиодеректер бір әңгімеге қатысты. Осы нақты модель үшін визуалды кіріс және сурет шығару мәлімделмеген; оның мамандануы — сөйлеу, мәтін және дауыстық әрекеттесу.

**Ailoot · Нақты уақыттағы дауыс** `GET /v1/realtime?model=qwen-audio-3.0-realtime-plus` `qwen-audio-3.0-realtime-plus`

[`qwen-audio-3.0-realtime-plus`](https://ailoot.ai/models/kk/#m=qwen-audio-3.0-realtime-plus&route=Core&caller=qwen-audio-3.0-realtime-plus&fmt=realtime)

Alibaba /`qwen-audio-3.0-realtime-plus`

### Бастау

Сөйлеу мен мәтінді қабылдап, дауыспен немесе мәтінмен жауап беретін тірі дауыстық диалог моделі. Табиғи қарқынмен сөйлесуге және құралдармен әрекеттесуге арналған.

Қабылданатын кіріс деректері

Мәтін · Аудио

Нәтижелер

Мәтін · Аудио

### Ailoot жүйесінде қолжетімді · кіріс деректері мен әдістер

**Ailoot · Нақты уақыттағы дауыс** `GET /v1/realtime?model=qwen-audio-3.0-realtime-plus`

Кіріс

`text`, `audio`

Шығыс

`text`, `audio`

Шығыс пішімі

сеанс оқиғалары

| Өріс | Түрі | Талап | Мәндер мен шектеулер | Әдепкі |
| --- | --- | --- | --- | --- |
| Өріс`query.model` | Түрі`string` | ТалапМіндетті | Мәндер мен шектеулер qwen-audio-3.0-realtime-plus | Әдепкі— |
| Өріс`session.input_audio_format` | Түрі`string` | ТалапМіндетті емес | Мәндер мен шектеулер pcm16, pcm | Әдепкі— |
| Өріс`session.output_audio_format` | Түрі`string` | ТалапМіндетті емес | Мәндер мен шектеулер pcm16, pcm | Әдепкі— |
| Өріс`session.instructions` | Түрі`string` | ТалапМіндетті емес | Мәндер мен шектеулер Шектеу қолданылатын нысан: таңдалған сеанс саясаты | Әдепкі— |
| Өріс`session.max_history_turns` | Түрі`integer` | ТалапМіндетті емес | Мәндер мен шектеулер Ең азы: 1 Шектеу қолданылатын нысан: таңдалған сеанс саясаты | Әдепкі— |
| Өріс`input_audio_buffer.append.audio` | Түрі`base64_string` | ТалапМіндетті | Мәндер мен шектеулер Кіріс мазмұны: PCM16 моно; кіріс 16 kHz, шығыс 24 kHz; байт саны нөлден үлкен және жұп болуы керек | Әдепкі— |

Кіріс материалдарының үйлесімдері

**realtime\_text\_audio**

Әдіс параметрлері мен өмірлік циклі

| Параметр | Параметр талаптары |
| --- | --- |
| Параметр`material_types` | Параметр талаптарыtext, audio |
| Параметр`required` | Параметр талаптарыnull |
| Параметр`optional_controls` | Параметр талаптарыnull |
| Параметр`content_type` | Параметр талаптарыWebSocket |

Өмірлік цикл: `exact retained published method`

Әдіс құрылымдары мен ID мәндері дәл берілген; жеткізушінің мүмкіндігі сұрауды қабылдаудан бөлек қаралады.

### Тарифтер

#### Ailoot әдістерінің мөлшерлемелері

Кіріс

0,0008 $ */ 1K*

Шығыс

0,0064 $ */ 1K*

Кіріс

0,0048 $ *аудио минуты үшін*

Шығыс

0,018 $ *шығыс аудионың минуты үшін*

Ailoot сұрау алдында болжамды соманы резервтейді. Нәтижеден кейін өлшенген пайдалану көлемі бойынша қорытынды төлемді шегереді. Ағындық жауап үшін төлем соңғы пайдалану жазбасы негізінде шегеріледі. [Резервтеу мен төлемді есептеу тәртібі →](https://ailoot.ai/docs/kk/billing/reserve/)

### Сұрау мысалдары

#### Ailoot · Нақты уақыттағы дауыс

Python WebSocket · мәтінPython WebSocket · аудио

```python
# Install the documented client once: python3 -m pip install websockets
import base64, json, os, time, wave
from pathlib import Path
from websockets.sync.client import connect

key = os.environ.get("AILOOT_API_KEY", "")
if not key.strip():
    raise SystemExit("Set your AILOOT_API_KEY before connecting")
file = Path(os.environ.get("AILOOT_TEXT_FILE", ""))
if not file.is_file(): raise SystemExit("Set AILOOT_TEXT_FILE to your actual UTF-8 material")
material = file.read_text(encoding="utf-8")
if not material.strip(): raise SystemExit("Text material must not be empty")
out = Path("realtime-results")
out.mkdir(exist_ok=True)
audio, texts, complete = {}, {}, []
current_response = None
pending = False
deadline = time.monotonic() + 570  # Local client bound; lower server/session limits still apply.

def receive(ws, log):
    global current_response, pending
    left = deadline - time.monotonic()
    if left <= 0:
        raise TimeoutError("Client session limit; preserve IDs and partial results, do not replay")
    event = json.loads(ws.recv(timeout=min(60, left)))
    log.write(json.dumps(event, ensure_ascii=False) + "\n")
    log.flush()
    kind = event.get("type")
    if kind == "error":
        raise RuntimeError(json.dumps(event, ensure_ascii=False))
    if kind == "response.created":
        current_response = event["response"]["id"]
    if kind in {"response.audio.delta", "response.output_audio.delta", "response.text.delta", "response.output_text.delta", "response.audio_transcript.delta", "response.output_audio_transcript.delta", "response.text.done", "response.audio_transcript.done"}:
        identity = (event["response_id"], event["item_id"], event["output_index"], event["content_index"])
        if kind in {"response.audio.delta", "response.output_audio.delta"}:
            raw = base64.b64decode(event["delta"], validate=True)
            if len(raw) % 2: raise ValueError("Output PCM16 chunk must have an even byte length")
            audio.setdefault(identity, bytearray()).extend(raw)
        elif kind.endswith(".done"):
            texts[identity] = event.get("text", event.get("transcript", ""))
        else:
            texts[identity] = texts.get(identity, "") + event["delta"]
            print(event["delta"], end="", flush=True)
    if kind == "response.done":
        response = event["response"]
        complete.append(response)
        if current_response is None: current_response = response["id"]
        if response["id"] == current_response: pending = False
    return event

def wait_for(ws, log, kind):
    while True:
        event = receive(ws, log)
        if event.get("type") == kind: return event

def send(ws, event):
    ws.send(json.dumps(event, ensure_ascii=False))

try:
    # One exact model query; no reconnect/retry loop and no provider credentials.
    with connect("wss://api.ailoot.ai/v1/realtime?model=qwen-audio-3.0-realtime-plus", additional_headers={"Authorization": "Bearer " + key}) as ws:
        with (out / "events.jsonl").open("w", encoding="utf-8") as log:
            wait_for(ws, log, "session.created")
            send(ws, {"type":"session.update", "session":{"modalities":["audio","text"], "input_audio_format":"pcm", "output_audio_format":"pcm", "turn_detection":None}})
            wait_for(ws, log, "session.updated")
            send(ws, {"type":"conversation.item.create", "item":{"type":"message", "role":"user", "content":[{"type":"input_text", "text":material}]}})
            send(ws, {"type":"response.create"})
            pending = True
            try:
                while pending: receive(ws, log)
            except KeyboardInterrupt:
                # Cancel the actual current inference, then preserve its returned status.
                send(ws, {"type":"response.cancel"})
                while pending: receive(ws, log)
    if not complete or complete[-1].get("status") != "completed":
        raise RuntimeError("Response did not complete normally; inspect saved events and status")
finally:
    manifest = {"responses":complete, "parts":[]}
    for number, identity in enumerate(dict.fromkeys(list(audio) + list(texts))):
        record = {"response_id":identity[0], "item_id":identity[1], "output_index":identity[2], "content_index":identity[3]}
        if identity in audio:
            raw = bytes(audio[identity])
            pcm_file = out / ("audio-" + str(number) + ".pcm")
            wav_file = out / ("audio-" + str(number) + ".wav")
            pcm_file.write_bytes(raw)
            with wave.open(str(wav_file), "wb") as wav:
                wav.setnchannels(1); wav.setsampwidth(2); wav.setframerate(24000); wav.writeframes(raw)
            record.update({"pcm":str(pcm_file), "wav":str(wav_file), "sample_rate_hz":24000})
        if identity in texts:
            text_file = out / ("text-" + str(number) + ".txt")
            text_file.write_text(texts[identity], encoding="utf-8")
            record["text"] = str(text_file)
        manifest["parts"].append(record)
    (out / "results.json").write_text(json.dumps(manifest, ensure_ascii=False, indent=2), encoding="utf-8")
    print("\nSaved every received event and result in", out)
```

```python
# Install the documented client once: python3 -m pip install websockets
import base64, json, os, time, wave
from pathlib import Path
from websockets.sync.client import connect

key = os.environ.get("AILOOT_API_KEY", "")
if not key.strip():
    raise SystemExit("Set your AILOOT_API_KEY before connecting")
file = Path(os.environ.get("AILOOT_AUDIO_FILE", ""))
if not file.is_file(): raise SystemExit("Set AILOOT_AUDIO_FILE to your raw PCM16 mono 16-kHz recording")
material = file.read_bytes()
if not material or len(material) % 2 or material.startswith(b"RIFF"):
    raise SystemExit("Use nonempty signed little-endian PCM16 mono 16-kHz bytes, not a WAV header")
out = Path("realtime-results")
out.mkdir(exist_ok=True)
audio, texts, complete = {}, {}, []
current_response = None
pending = False
deadline = time.monotonic() + 570  # Local client bound; lower server/session limits still apply.

def receive(ws, log):
    global current_response, pending
    left = deadline - time.monotonic()
    if left <= 0:
        raise TimeoutError("Client session limit; preserve IDs and partial results, do not replay")
    event = json.loads(ws.recv(timeout=min(60, left)))
    log.write(json.dumps(event, ensure_ascii=False) + "\n")
    log.flush()
    kind = event.get("type")
    if kind == "error":
        raise RuntimeError(json.dumps(event, ensure_ascii=False))
    if kind == "response.created":
        current_response = event["response"]["id"]
    if kind in {"response.audio.delta", "response.output_audio.delta", "response.text.delta", "response.output_text.delta", "response.audio_transcript.delta", "response.output_audio_transcript.delta", "response.text.done", "response.audio_transcript.done"}:
        identity = (event["response_id"], event["item_id"], event["output_index"], event["content_index"])
        if kind in {"response.audio.delta", "response.output_audio.delta"}:
            raw = base64.b64decode(event["delta"], validate=True)
            if len(raw) % 2: raise ValueError("Output PCM16 chunk must have an even byte length")
            audio.setdefault(identity, bytearray()).extend(raw)
        elif kind.endswith(".done"):
            texts[identity] = event.get("text", event.get("transcript", ""))
        else:
            texts[identity] = texts.get(identity, "") + event["delta"]
            print(event["delta"], end="", flush=True)
    if kind == "response.done":
        response = event["response"]
        complete.append(response)
        if current_response is None: current_response = response["id"]
        if response["id"] == current_response: pending = False
    return event

def wait_for(ws, log, kind):
    while True:
        event = receive(ws, log)
        if event.get("type") == kind: return event

def send(ws, event):
    ws.send(json.dumps(event, ensure_ascii=False))

try:
    # One exact model query; no reconnect/retry loop and no provider credentials.
    with connect("wss://api.ailoot.ai/v1/realtime?model=qwen-audio-3.0-realtime-plus", additional_headers={"Authorization": "Bearer " + key}) as ws:
        with (out / "events.jsonl").open("w", encoding="utf-8") as log:
            wait_for(ws, log, "session.created")
            send(ws, {"type":"session.update", "session":{"modalities":["audio","text"], "input_audio_format":"pcm", "output_audio_format":"pcm", "turn_detection":None}})
            wait_for(ws, log, "session.updated")
            for offset in range(0, len(material), 640):
                send(ws, {"type":"input_audio_buffer.append", "audio":base64.b64encode(material[offset:offset+640]).decode("ascii")})
                time.sleep(0.02)
            send(ws, {"type":"input_audio_buffer.commit"})
            wait_for(ws, log, "input_audio_buffer.committed")
            send(ws, {"type":"response.create"})
            pending = True
            try:
                while pending: receive(ws, log)
            except KeyboardInterrupt:
                # Cancel the actual current inference, then preserve its returned status.
                send(ws, {"type":"response.cancel"})
                while pending: receive(ws, log)
    if not complete or complete[-1].get("status") != "completed":
        raise RuntimeError("Response did not complete normally; inspect saved events and status")
finally:
    manifest = {"responses":complete, "parts":[]}
    for number, identity in enumerate(dict.fromkeys(list(audio) + list(texts))):
        record = {"response_id":identity[0], "item_id":identity[1], "output_index":identity[2], "content_index":identity[3]}
        if identity in audio:
            raw = bytes(audio[identity])
            pcm_file = out / ("audio-" + str(number) + ".pcm")
            wav_file = out / ("audio-" + str(number) + ".wav")
            pcm_file.write_bytes(raw)
            with wave.open(str(wav_file), "wb") as wav:
                wav.setnchannels(1); wav.setsampwidth(2); wav.setframerate(24000); wav.writeframes(raw)
            record.update({"pcm":str(pcm_file), "wav":str(wav_file), "sample_rate_hz":24000})
        if identity in texts:
            text_file = out / ("text-" + str(number) + ".txt")
            text_file.write_text(texts[identity], encoding="utf-8")
            record["text"] = str(text_file)
        manifest["parts"].append(record)
    (out / "results.json").write_text(json.dumps(manifest, ensure_ascii=False, indent=2), encoding="utf-8")
    print("\nSaved every received event and result in", out)
```

### Нәтижелерді алу және сақтау

#### Ailoot · Нақты уақыттағы дауыс

сеанс оқиғалары

##### Барлық дайын нәтижені сақтау

Қайтарылған әр толық жауапты, файлды және мазмұн бөлігін сақтаңыз.

Әрбір нақты жауап ID мәні үшін қайтарылған барлық аудио бөліктерін және мәтін не оқиға нәтижелерін жинақтаңыз.

##### Бастапқы жауапты тексеру қажет болса

Нақты сеанс, жауап және оқиға ID мәндерін әрі түбіртектерді сақтаңыз.

Қателер және келесі қадамдар

| Жауап | Шарт | Келесі қадам |
| --- | --- | --- |
| Жауап426 · `invalid_request_error` | ШартWebSocket протоколына ауысу жоқ | Келесі қадамUpgrade: websocket бар WebSocket клиентін қолданыңыз. |

### Балама атаулар

#### Модельдердің балама атаулары

**Ailoot** [`qwen-audio-3.0-realtime-plus`](https://ailoot.ai/models/kk/#m=qwen-audio-3.0-realtime-plus&route=Core&caller=qwen-audio-3.0-realtime-plus&fmt=realtime)

#### Әдіс жолдарының балама атаулары

Жоғарыда көрсетілген әдіс жолдарын пайдаланыңыз.

#### Шақыруға арналған байланысты ID

[`qwen-audio-3.0-realtime-plus`](https://ailoot.ai/models/kk/#m=qwen-audio-3.0-realtime-plus&route=Core&caller=qwen-audio-3.0-realtime-plus&fmt=realtime)

FAQ · qwen-audio-3.0-realtime-plus

Қандай кіріс деректері мен нәтижелер қолжетімді?

`GET /v1/realtime?model=qwen-audio-3.0-realtime-plus` · `qwen-audio-3.0-realtime-plus`: `text`, `audio` → `text`, `audio`

Қандай шектеулер қолданылады?

`GET /v1/realtime?model=qwen-audio-3.0-realtime-plus` · `qwen-audio-3.0-realtime-plus`: `session.max_history_turns.minimum`: `1`

Ailoot-ты Claude Code, OpenCode, Hermes не қолданбаңызға қосыңыз.

## Компания және оның жобалар портфелі

Компания және оның жобалар портфелі: миллиондаған клиент; ай сайынғы сату көлемі миллиардтармен есептеледі.

## Токенді жеңілдікпен сатып алыңыз.

Тұрақты жұмысқа жазылым жеңілдігі. Токен сатып алуға промокодтар — 50% дейін.

Жазылым

Тұрақты сұрауыңызға жеңілдікті тариф таңдаңыз.

50% дейінгі промокод

Сатып алғанда код енгізіңіз. Баға қазіргі науқанмен қайта есептеледі.

Тарихтағы шығындар

Әр сұрауға модель, токен және сома сақталады.

[Жазылым таңдау](https://ailoot.ai/docs/kk/billing/subscriptions/) · [Модель бағасын көру](https://ailoot.ai/models/kk/)

## API-ді сататын өніміңізге қосыңыз.

SaaS, қолданба мен бот Ailoot офертасы және лицензиялық шартына сай. Қайта сатуға реселлер лицензиясын сұраңыз.

Коммерциялық қолданба

Қызметіңіздің ақылы функциясына мәтін, сурет, бейне және дыбыс жасауды қосыңыз.

Реселлер лицензиясы

Жоба сипаттамасы мен кіру схемасын жіберіңіз. Пайдалану мен қайта сатуға жазбаша шарт сұраңыз.

Сайттағы құжаттар

Оферта, лицензиялық шарт және дерек саясаты қоспай тұрып қолжетімді.

[Реселлер лицензиясын сұрау](mailto:support@ailoot.ai) · [Оферта мен лицензиялық шарт](https://ailoot.ai/legal/offer?lang=kk)

## Ailoot · Компания және оның жобалар портфелі





Ailoot жинақталған жұмыс тәжірибесіне, кең клиенттік базаға, тұрақты қызметке және KPI көрсеткіштерін үздіксіз бақылауға сүйенеді.





Компания және оның жобалар портфелі: миллиондаған клиент; ай сайынғы сату көлемі миллиардтармен есептеледі.





Ailoot осы тәжірибені клиенттердің өнімдерінде, агенттерінде, қолданбаларында және автоматтандыруларында жасанды интеллект мүмкіндіктеріне API арқылы қол жеткізуді қамтамасыз етуге пайдаланады.
