600msも待てない音声エージェントのために

ElevenLabs: Eleven Realtime v1 Max

elevenlabs/eleven-realtime-v1-max
提供中 speech-to-speech 1プロバイダー
Playground

ElevenLabs' realtime speech-to-speech voice agent optimized for quality, reasoning before it responds for complex instructions and multi-step tool use.

作成者ElevenLabs
言語84言語
レスポンス形式ストリーミング: PCM · µ-law · A-law
ステータス提供中

プロバイダー

同じモデルを複数のプロバイダーがホストしている場合があります。バックエンドを固定したい場合は1つのプロバイダーを選び、そうでなければルーティングに選択を任せられます。

プロバイダーSlug1時間あたりレイテンシiTTSのレイテンシは音声の最初のバイトが届くまでの時間、STTのレイテンシは最初のトークンが届くまでの時間で計測しています。モード稼働率
ElevenLabs 4個のパラメーター
elevenlabs
$6.12
—
ストリーミング

対応言語

84言語
Afrikaans af
Arabic ar
Armenian hy
Assamese as
Asturian ast
Azerbaijani az
Belarusian be
Bengali bn
Bosnian bs
Bulgarian bg
Burmese my
Cantonese yue
Catalan ca
Cebuano ceb
Croatian hr
Czech cs
Danish da
Dutch nl
English en
Estonian et
Filipino fil
Finnish fi
French fr
Galician gl
Georgian ka
German de
Greek el
Gujarati gu
Hausa ha
Hebrew he
Hindi hi
Hungarian hu
Icelandic is
Indonesian id
Irish ga
Italian it
Japanese ja
Javanese jv
Kannada kn
Kazakh kk
Korean ko
Kyrgyz ky
Latvian lv
Lingala ln
Lithuanian lt
Luxembourgish lb
Macedonian mk
Malay ms
Malayalam ml
Maltese mt
Mandarin Chinese zh
Māori mi
Marathi mr
Mongolian mn
Nepali ne
Norwegian no
Occitan oc
Odia or
Pashto ps
Persian fa
Polish pl
Portuguese pt
Punjabi pa
Romanian ro
Russian ru
Serbian sr
Sindhi sd
Slovak sk
Slovenian sl
Somali so
Spanish es
Swahili sw
Swedish sv
Tajik tg
Tamil ta
Telugu te
Thai th
Turkish tr
Ukrainian uk
Urdu ur
Uzbek uz
Vietnamese vi
Welsh cy
Yoruba yo

機能

Speech to speech

Bidirectional realtime speech-to-speech over WebSocket using the OpenAI Realtime protocol.

speech_to_speech
Turn-taking and interruptions

Semantic or server voice activity detection with natural turn-taking and interruption handling.

turn_taking
Tool use

Function and MCP tool calling, tuned for multi-step tool use.

tool_use

コード

言語

OpenAI SDKによるリアルタイム音声変換

question.pcm(24 kHz・16ビット・モノラルPCM)をOpenAI Realtimeプロトコルで1ターンとして送信し、音声の返答をreply.pcmに保存します。

import { once } from "node:events";
import { readFile, writeFile } from "node:fs/promises";
import OpenAI from "openai";
import { OpenAIRealtimeWS } from "openai/realtime/ws";

const client = new OpenAI({
  apiKey: process.env.ALLMODELS_API_KEY,
  baseURL: "https://api.allmodels.io/oai"
});
const realtime = new OpenAIRealtimeWS({ model: "eleven_realtime_v1_max" }, client);
const reply = [];

realtime.on("response.output_audio.delta", ({ delta }) => reply.push(Buffer.from(delta, "base64")));
realtime.on("response.done", async () => {
  await writeFile("reply.pcm", Buffer.concat(reply));
  realtime.close();
});
realtime.on("error", console.error);

if (realtime.socket.readyState !== 1) await once(realtime.socket, "open");
const format = { type: "audio/pcm", rate: 24000 };
realtime.send({
  type: "session.update",
  session: {
    type: "realtime",
    output_modalities: ["audio"],
    audio: { input: { format, turn_detection: null }, output: { format, voice: "brian" } }
  }
});
realtime.send({ type: "input_audio_buffer.append", audio: (await readFile("question.pcm")).toString("base64") });
realtime.send({ type: "input_audio_buffer.commit" });
realtime.send({ type: "response.create" });