ElevenLabs 系列
ElevenLabs 的语音模型,共两款:Eleven v4 用于语音合成,Scribe v2 用于语音转录。均通过 OpenAI 兼容的音频接口调用。
elevenlabs/eleven_v4POST /v1/audio/speechelevenlabs/scribe_v2POST /v1/audio/transcriptions接口的通用参数见 Audio Speech API 与 Audio Transcriptions API。实时价格请参阅模型页 :语音合成按字符计费,语音转录按音频时长计费。
Eleven v4 语音合成
Python
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.ofox.ai/v1", api_key=os.environ["OFOX_API_KEY"])
with client.audio.speech.with_streaming_response.create(
model="elevenlabs/eleven_v4",
voice="21m00Tcm4TlvDq8ikWAM",
input="你好,欢迎使用 OfoxAI 语音合成。",
response_format="mp3",
) as resp:
resp.stream_to_file("speech.mp3")实测一句约 20 字的中文约 2 秒返回,生成的音频约 4 秒。
Scribe v2 语音转录
Scribe v2 除转录文字外,还返回逐词的起止时间,并可识别不同的说话人。
Python
import json
import os
from openai import OpenAI
client = OpenAI(base_url="https://api.ofox.ai/v1", api_key=os.environ["OFOX_API_KEY"])
with open("meeting.mp3", "rb") as f:
result = client.audio.transcriptions.create(
model="elevenlabs/scribe_v2",
file=f,
extra_body={"provider_options": json.dumps({"elevenlabs": {"diarize": True}})},
)
print(result.text)
for w in (result.model_extra or {}).get("words", [])[:10]:
print(w.get("speaker"), w["start"], w["end"], w["word"])响应结构:
- 说话人分离需通过
provider_options开启:{"elevenlabs": {"diarize": true}},以 JSON 字符串作为表单字段传入。 response_format支持json与verbose_json,两者返回内容相同。需要字幕文件时,可根据words中的时间戳自行生成。
常见报错
更多报错见 Audio Speech API 与 Audio Transcriptions API。
官方文档
常见问题
ElevenLabs 的 voice 填什么?
填音色 ID(20 位字符),如 21m00Tcm4TlvDq8ikWAM,可在 ElevenLabs 音色库中查找。填音色名称(如 Rachel)或 OpenAI 的 alloy 会返回 404 voice_id not found。
Eleven v4 支持哪些音频格式?
mp3(默认)、opus、wav、pcm。aac 与 flac 不支持。
Scribe v2 能区分说话人吗?
能。通过 provider_options 传入 {"elevenlabs": {"diarize": true}},响应的 words 中每个词会带有 speaker 字段,如 speaker_0、speaker_1。
Scribe v2 能直接输出 srt 字幕吗?
不能,response_format 仅支持 json 与 verbose_json。可根据响应 words 中的 start、end 时间戳自行生成字幕。
ElevenLabs 语音怎么计费?
Eleven v4 按输入字符数计费,Scribe v2 按音频时长计费,单价见模型页。