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.io/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.io/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 按音訊時長計費,單價見模型頁。