章節導覽
語音合成(TTS)指南
語音合成(TTS)指南
POST /v1/audio/speech 與 OpenAI 相容:送出 JSON,回傳二進位音訊檔。語音模型包含 ElevenLabs 系列(elevenlabs/eleven-v4、eleven-v4-turbo、eleven-v3、eleven-v3-conversational、eleven-multilingual-v2、eleven-flash-v2.5、eleven-flash-v2、eleven-turbo-v2.5、eleven-turbo-v2)。最新清單請查 GET /v1/models?output_modalities=speech。 GET /v1/models 預設只回文字模型,請加 ?output_modalities=speech(或 all)才會列出語音模型。
/v1/audio/speech參數
| 參數 | 型別 | 必填 | 說明 |
|---|---|---|---|
| model | string | 是 | 語音模型識別碼,例如 elevenlabs/eleven-flash-v2.5。 |
| input | string | 是 | 要合成的文字,每次最多 4,096 個字元(elevenlabs/eleven-v4 與 eleven-v4-turbo 為 10,000)。更長的文字請拆成多次請求。 |
| voice | string | 是 | 要使用的聲音,格式依模型而定,見下方「voice 規則」。 |
| response_format | string | 否 | mp3(預設)或 pcm。opus、aac、flac、wav 雖被 API 接受,但目前 ElevenLabs 模型會以 400 拒絕。 |
| speed | number | 否 | 語速,範圍 0.25–4.0;不是每個模型都會套用。 |
| instructions | string | 否 | 聲音風格指示;不是每個模型都會套用。 |
| stability | number | 否 | 聲音穩定度,0–1(預設 0.5)。越低越有情緒起伏,越高越平穩。僅在由我們的直連語音路線處理的 elevenlabs/* 模型生效;回應標頭 X-Voice-Settings 會標示 applied(已套用)或 ignored(未套用)。 |
| similarity_boost | number | 否 | 與原聲的相似度,0–1(預設 0.75)。Eleven v3 不使用。 |
| style | number | 否 | 風格誇張度,0–1(預設 0)。大於 0 會增加延遲。Eleven v4 不使用。 |
| use_speaker_boost | boolean | 否 | 是否增強與原說話者的相似度(預設 true),會略微增加延遲。 |
| clone_strength | number | 否 | 克隆度,0–1(多數情況建議 0)。僅適用於您自己、針對 Eleven v4 訓練的專業克隆聲音(voice_…)。 |
| language_code | string | 否 | 兩碼小寫語言代碼(ISO 639-1),例如 ar、ja、en,用來指定朗讀語言。multilingual-v2 模型不使用。 |
| audio_effects | object | 否 | 選填的音訊效果物件:filter_preset_id(濾鏡,如 phone、old_radio)、environment_id(空間殘響,如 small_room、hall)、background_noise_id(背景音,如 cafe)、distance(距離 0–1)、send_level(殘響量 0–1)、pan(左右位置 −1…1)。ID 只能是小寫英文、數字與底線;不另外收費。開啟殘響或 pan 不為 0 會輸出立體聲,不能搭配 pcm 輸出。 |
上方七個聲音設定都是選填,沒帶就完全不變;數值超出範圍會直接回 400,不會送出也不會收費。回應標頭 X-Voice-Settings 說明這次有沒有用到您的設定:applied=已套用;ignored=這次由備援路線回答,您的設定沒有被使用(聲音仍會正常產生);沒有這個標頭=您沒有帶任何聲音設定。例如 stability 設 0 會讀得更有起伏,設 1 則更平穩。
voice 規則
ElevenLabs 模型(elevenlabs/…)的 voice 可填下列聲音名稱(不分大小寫):george, sarah, adam, alice, bella, bill, brian, callum, charlie, chris, daniel, eric, harry, jessica, laura, liam, lily, matilda, river, roger, will。ElevenLabs 模型可省略 voice(預設 george)。其他值回 400 invalid_voice。您自己的自訂聲音(voice_…)請見下方「自訂聲音」章節。
alloy、echo、nova 這類 OpenAI 風格的聲音名稱,只適用於有列出這些聲音的模型。各模型支援的聲音請看模型頁。
自訂聲音(克隆)正分階段開放:請見下方「自訂聲音」章節(POST /v1/voices)。在您的帳號開通之前,請使用上列 21 個預設名稱或公開的聲音 ID。
內建聲音一覽
voice 欄位可填下表的聲音名稱(英文小寫)。每個聲音都附一段我們自己的試聽,也可以用 GET /api/v1/audio/voices 取得完整清單(性別、年齡層、口音、風格與試聽網址)。
?lang=(en、zh-TW、zh-CN,預設依 Accept-Language)只決定 description 的語言;試聽網址不隨參數改變:preview_urls.en(同 preview_url)是英文試聽、preview_urls.zh(同 preview_url_zh)是中文試聽。
| 聲音 | 說明 | 試聽 |
|---|---|---|
| george | 男聲、中年、英式口音。成熟沉穩,適合旁白與說故事。 | |
| sarah | 女聲、年輕、美式口音。專業清晰,適合影視與節目式朗讀。 | |
| adam | 男聲、中年、美式口音。親切自然,適合社群短影音。 | |
| alice | 女聲、中年、英式口音。專業,適合教學與資訊解說。 | |
| bella | 女聲、中年、美式口音。專業,適合教學與資訊解說。 | |
| bill | 男聲、年長、美式口音。清晰俐落,適合廣告配音。 | |
| brian | 男聲、中年、美式口音。沉穩有質感,適合社群與品牌內容。 | |
| callum | 男聲、中年、美式口音。表現力強,適合角色與動畫配音。 | |
| charlie | 男聲、年輕、澳洲口音。活力十足,適合對話。 | |
| chris | 男聲、中年、美式口音。輕鬆隨性,適合對話。 | |
| daniel | 男聲、中年、英式口音。正式穩重,適合新聞式與教學朗讀。 | |
| eric | 男聲、中年、美式口音。沉穩有質感,適合對話。 | |
| harry | 男聲、年輕、美式口音。粗獷有個性,適合角色配音。 | |
| jessica | 女聲、年輕、美式口音。明亮可愛,適合對話。 | |
| laura | 女聲、年輕、美式口音。俏皮有個性,適合社群內容。 | |
| liam | 男聲、年輕、美式口音。自信有精神,適合社群內容。 | |
| lily | 女聲、中年、英式口音。自信清楚,適合教學與資訊解說。 | |
| matilda | 女聲、中年、美式口音。開朗親切,適合教學與資訊解說。 | |
| river | 中性聲音、中年、美式口音。平靜穩定,適合對話。 | |
| roger | 男聲、中年、美式口音。沉穩有質感,適合對話。 | |
| will | 男聲、年輕、美式口音。放鬆隨和,適合對話。 |
情緒與動作標籤(audio tags)
直接把標籤用方括號寫在 input 裡,例如 [laughs]、[whispers]、[excited]、[sighs]、[crying]、[curious]、[softly]。標籤會原樣送給模型,用來決定後面那段話的語氣與演出。就算文字是中文,標籤也請維持英文。
curl https://api.bazaarlink.ai/v1/audio/speech \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"elevenlabs/eleven-v3","input":"[laughs] That was actually funny. [whispers] Do not tell anyone.","voice":"george","response_format":"mp3"}' \
--output audio-tags.mp3elevenlabs/eleven-v3 與 elevenlabs/eleven-v4 系列支援。其他語音模型不會解讀標籤,可能把括號內文字直接念出來,建議先用一小句測試。
標籤也算入 input 字元數,與其餘文字一樣計費。
輸出格式
不帶 response_format 時預設為 mp3(Content-Type 為 audio/mpeg);pcm(audio/pcm,原始 16-bit PCM)也可用。API 雖接受 opus、aac、flac、wav,但 ElevenLabs 模型目前會以 400 拒絕。請依回應標頭 Content-Type 儲存檔案。
計價方式
語音合成依 input 的字元數計費。每字元價格列在 /models 的模型頁,以及 GET /v1/models 的 pricing.character(每字元美元)。模型頁以每 100 萬字元顯示。
範例
curl https://api.bazaarlink.ai/v1/audio/speech \
-H "Authorization: Bearer $BAZAARLINK_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"elevenlabs/eleven-flash-v2.5","input":"Hello from BazaarLink.","voice":"george","response_format":"mp3"}' \
--output speech.mp3常見錯誤
| 狀態碼 | 原因與處理 |
|---|---|
| 400 | 請求有誤:缺少 model、input 或 voice;input 超過 4,096 字元;speed 不在 0.25–4.0;不支援的 response_format;Unknown voice(voice 與模型不符);unknown_model(請到 /models 確認識別碼)。 |
| 401 | 缺少或無效的 API Key。請以 Authorization: Bearer 帶上 BazaarLink 金鑰。 |
| 402 | 點數不足,請儲值後再試。 |
| 403 | 管理金鑰不能呼叫模型,或帳號已停用。請改用一般 API Key。 |
| 429 | 達到速率上限。請依 Retry-After 標頭等待後重試。 |
| 502 | 模型服務暫時無法使用,或音訊傳輸中斷。請重試;失敗的請求不收費。 |
語音合成
將文字轉成音訊;使用 /v1/models?output_modalities=speech 的模型識別碼。按模型頁所列每百萬字元價格計費;完整緩衝音訊後才回傳二進位資料,尚不支援逐段串流。provider、transforms、route、service_tier、preset 等路由控制欄位會被忽略。
/v1/audio/speech/v1/chat/completions在 /v1/chat/completions 傳入 audio 或 input_audio,並選擇支援 audio 的模型。依設定的輸入與輸出 token 單價計費;回報的文字與音訊 token 合併套用相同單價。
curl https://api.bazaarlink.ai/v1/chat/completions \
-H "$BAZAARLINK_AUTH_HEADER" \
-H "Content-Type: application/json" \
-d '{"model":"<audio-chat-model-id>","messages":[{"role":"user","content":"Say hi."}],"stream":true,"modalities":["text","audio"],"audio":{"voice":"alloy","format":"pcm16"},"max_tokens":32}'