音频模型
通过一个兼容 OpenAI 的 API 实现语音合成、语音识别和实时语音:请求、音色、格式以及每个音频模型的确切价格。
通过一个 API 使用文字转语音、语音转文字和实时语音:请求、音色、格式和价格。
全部模型、功能与价格 面向 AI 智能体的文档索引:https://oneprovider.dev/docs/llms.txt 可用的音频模型
grok-tts Runnable - 输入字符
- US$15.00 / 1M 字符
grok-stt Runnable - 音频小时
- US$0.10 / 小时
grok-voice-3.0 Runnable - 音频分钟
- US$0.08 / 分钟
grok-voice-latest Runnable - 音频分钟
- US$0.08 / 分钟
gemini-2.5-flash-tts Runnable - 文本输入 token
- US$0.50 / 1M token
- 音频输出 token
- US$10.00 / 1M token
gemini-2.5-pro-tts Runnable - 文本输入 token
- US$1.00 / 1M token
- 音频输出 token
- US$20.00 / 1M token
gemini-3.1-flash-tts Runnable - 文本输入 token
- US$1.00 / 1M token
- 音频输出 token
- US$20.00 / 1M token
gemini-3.1-tts Runnable - 文本输入 token
- US$1.00 / 1M token
- 音频输出 token
- US$20.00 / 1M token
gemini-3.8-flash-tts Runnable - 文本输入 token
- US$0.50 / 1M token
- 音频输出 token
- US$9.00 / 1M token
gemini-3.8-flash-lite-tts Runnable - 文本输入 token
- US$0.50 / 1M token
- 音频输出 token
- US$6.00 / 1M token
gemini-3.5-transcribe Runnable - 音频输入 token
- US$2.00 / 1M token
- 文本输出 token
- US$12.00 / 1M token
gemini-3.5-stt Runnable - 音频输入 token
- US$0.30 / 1M token
- 缓存的音频输入 token
- US$0.03 / 1M token
- 文本输出 token
- US$2.50 / 1M token
gemini-3-stt Runnable - 音频输入 token
- US$1.00 / 1M token
- 缓存的音频输入 token
- US$0.10 / 1M token
- 文本输出 token
- US$3.00 / 1M token
| 任务 | 路径 | 模型 |
|---|---|---|
| 文字转语音(TTS) | POST /v1/audio/speech | grok-tts, gemini-2.5-flash-tts, gemini-2.5-pro-tts, gemini-3.1-flash-tts, gemini-3.1-tts, gemini-3.8-flash-tts, gemini-3.8-flash-lite-tts |
| 语音转文字(STT) | POST /v1/audio/transcriptions | grok-stt, gemini-3-stt, gemini-3.5-stt, gemini-3.5-transcribe |
| 实时语音 | GET /v1/realtime?model= (WebSocket) | grok-voice-3.0, grok-voice-latest |
文字转语音
bashcurl -sS https://api.oneprovider.dev/v1/audio/speech \
-H "Authorization: Bearer sk-..." \
-H "Content-Type: application/json" \
-d '{
"model": "grok-tts",
"input": "Hello from OneProvider.",
"voice": "eve",
"response_format": "mp3"
}' \
--output hello.mp3 python from openai import OpenAI
client = OpenAI(base_url="https://api.oneprovider.dev/v1", api_key="sk-...")
with client.audio.speech.with_streaming_response.create(
model="gemini-3.8-flash-tts",
voice="Kore",
input="Hello from OneProvider.",
response_format="wav",
) as response:
response.stream_to_file("hello.wav") | 字段 | 值 |
|---|---|
model | 必填。文字转语音模型的 ID。 |
input | 必填。要朗读的文本。 |
voice | 音色:Grok 使用下方列表中的小写名称或您自己的自定义音色 ID,Gemini 使用第二个列表中的名称。 |
response_format | mp3(默认)、wav 或 pcm。 |
响应是所选格式的音频文件。文本很长时,请每段发送一次请求,再把文件拼接起来。
Grok 音色
altairaraatlasauroracarinacastorcelestecosmoevehelioshelixiriskeplerleolioralumenlunaluxnakshorionperseusrexrigelsalsiriusursazaganzenith Gemini 音色
ZephyrPuckCharonKoreFenrirLedaOrusAoedeCallirrhoeAutonoeEnceladusIapetusUmbrielAlgiebaDespinaErinomeAlgenibRasalgethiLaomedeiaAchernarAlnilamSchedarGacruxPulcherrimaAchirdZubenelgenubiVindemiatrixSadachbiaSadaltagerSulafat 语音转文字
bashcurl -sS https://api.oneprovider.dev/v1/audio/transcriptions \
-H "Authorization: Bearer sk-..." \
-F model=grok-stt \
-F file=@meeting.mp3
# {"text":"..."} python from openai import OpenAI
client = OpenAI(base_url="https://api.oneprovider.dev/v1", api_key="sk-...")
with open("meeting.mp3", "rb") as audio:
result = client.audio.transcriptions.create(model="gemini-3.5-transcribe", file=audio)
print(result.text) 请求为 multipart/form-data,包含字段 file(音频文件)和 model。响应是带 text 字段的 JSON。
实时语音
使用同一个密钥放在 Authorization 请求头中,向 wss://api.oneprovider.dev/v1/realtime?model=grok-voice-3.0 建立 WebSocket 连接。事件遵循 OpenAI Realtime API。
import asyncio, base64, json
import websockets
async def main():
url = "wss://api.oneprovider.dev/v1/realtime?model=grok-voice-3.0"
async with websockets.connect(url, additional_headers={"Authorization": "Bearer sk-..."}) as ws:
await ws.send(json.dumps({"type": "session.update", "session": {"instructions": "Answer briefly."}}))
await ws.send(json.dumps({"type": "conversation.item.create", "item": {
"type": "message", "role": "user",
"content": [{"type": "input_text", "text": "Say hello in one sentence."}],
}}))
await ws.send(json.dumps({"type": "response.create"}))
audio = bytearray()
async for message in ws:
event = json.loads(message)
if event["type"] == "response.output_audio.delta":
audio += base64.b64decode(event["delta"])
elif event["type"] == "response.output_audio_transcript.delta":
print(event["delta"], end="")
elif event["type"] == "response.done":
break
asyncio.run(main()) | 事件 | 用途 |
|---|---|
session.update | 客户端:设置指令和会话选项。 |
conversation.item.create | 客户端:向对话添加一条消息,文本或音频。 |
response.create | 客户端:请求模型回复。 |
response.output_audio.delta | 服务器:回复音频的下一个数据块,base64。 |
response.output_audio_transcript.delta | 服务器:模型所说内容的下一段文本。 |
response.done | 服务器:回复已完成。 |
价格
- Grok TTS 按输入文本的字符数计费。
- Grok STT 按音频的小时数计费。
- Grok Voice 按对话的分钟数计费,另外您每发送一条文本消息还会收取一小笔费用。
- Gemini 按 token 计费:输入的文本或音频,以及输出的音频或文本;一秒音频相当于 25 个 token。
示例:grok-tts,1,000 个字符 = US$15.00 / 1M × 1 000 = US$0.015。
每个模型的确切价格见上方表格和价格页面 。
错误
| HTTP | 原因 |
|---|---|
| 400 | 字段无效,或音色、格式未知。 |
| 401 | 密钥无效或已被撤销。 |
| 402 / 403 / 429 | 余额不足,或已达密钥限额。请充值后重试。 |
| 5xx | 服务暂时不可用。请稍后重试。 |
快速解答
该使用哪个 base URL?
Claude Code 和 Anthropic SDK 使用 https://api.oneprovider.dev。OpenAI SDK 和兼容 OpenAI 的客户端使用 https://api.oneprovider.dev/v1。同一个密钥可用于这两个地址;模型列表见模型页面 ,费率见价格页面 。
如何进行身份验证?
将完整的 sk-… 密钥放在 x-api-key 或 Authorization: Bearer 中,二选一,不要同时使用。请把密钥存放在环境变量中,不要写进会被提交的文件。了解更多身份验证说明 。
在哪里获取密钥?
在 Telegram 机器人 @oneprovider_robot 或 app.oneprovider.dev 打开您的个人中心,为余额充值,然后点击“签发密钥”。每个密钥都可以设置各自的消费限额。个人中心与 API 密钥 。
401、404 和 429 是什么意思?
401:密钥缺失、拼写有误或放错了请求头;请粘贴完整的密钥,不要带引号或空格。404:通常是 base URL 不对,例如缺少或重复了 /v1。429 且提示“Insufficient balance”:个人中心余额或密钥的消费限额已用完,请充值,不要反复重试;其他 429 属于速率限制,请等待 Retry-After 指定的时间。详情见:错误码 和故障排查 。
流式输出为什么会中断或被重置?
VPN 和 VLESS 代理常常会缓冲 SSE,或破坏 HTTP/2 协商。OneProvider 没有地区限制,也不会缓冲流式输出,请关闭代理后重试。
以上都没解决,该去哪里咨询?
请在 Telegram 联系 @Oneproviderhelpbot ,或在网页个人中心打开“客服”,并附上 HTTP 状态码和完整的错误信息。客服如何运作 。
最后更新: 2026-11-08 发现问题? @Oneproviderhelpbot