/audio/speech
總覽
| 功能 | 支援 | 備註 |
|---|---|---|
| 成本追蹤 | ✅ | 可與所有支援的模型搭配使用 |
| 記錄 | ✅ | 可跨所有整合使用 |
| 端使用者追蹤 | ✅ | |
| 備援 | ✅ | 可在支援的模型之間運作 |
| 負載平衡 | ✅ | 可在支援的模型之間運作 |
| 防護欄 | ✅ | 套用於輸入文字(僅限非串流) |
| 支援的提供者 | OpenAI, Azure OpenAI, Vertex AI, AWS Polly, ElevenLabs , MiniMax |
LiteLLM Python SDK 使用方式
快速開始
from pathlib import Path
from litellm import speech
import os
os.environ["OPENAI_API_KEY"] = "sk-.."
speech_file_path = Path(__file__).parent / "speech.mp3"
response = speech(
model="openai/tts-1",
voice="alloy",
input="the quick brown fox jumped over the lazy dogs",
)
response.stream_to_file(speech_file_path)
非同步使用方式
from litellm import aspeech
from pathlib import Path
import os, asyncio
os.environ["OPENAI_API_KEY"] = "sk-.."
async def test_async_speech():
speech_file_path = Path(__file__).parent / "speech.mp3"
response = await aspeech(
model="openai/tts-1",
voice="alloy",
input="the quick brown fox jumped over the lazy dogs",
api_base=None,
api_key=None,
organization=None,
project=None,
max_retries=1,
timeout=600,
client=None,
optional_params={},
)
response.stream_to_file(speech_file_path)
asyncio.run(test_async_speech())
LiteLLM Proxy 使用方式
LiteLLM 提供一個與 openai 相容的 /audio/speech 端點,用於文字轉語音請求。
curl http://0.0.0.0:4000/v1/audio/speech \
-H "Authorization: Bearer sk-1234" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"input": "The quick brown fox jumped over the lazy dog.",
"voice": "alloy"
}' \
--output speech.mp3
設定
- model_name: tts
litellm_params:
model: openai/tts-1
api_key: os.environ/OPENAI_API_KEY
litellm --config /path/to/config.yaml
# RUNNING on http://0.0.0.0:4000
支援的提供者
| 提供者 | 使用方式連結 |
|---|---|
| OpenAI | 使用方式 |
| Azure OpenAI | 使用方式 |
| Azure AI Speech Service (AVA) | 使用方式 |
| AWS Polly | 使用方式 |
| Vertex AI | 使用方式 |
| Gemini | 使用方式 |
| ElevenLabs | 使用方式 |
| MiniMax | 使用方式 |
/audio/speech 到 /chat/completions 橋接
LiteLLM 讓您可以使用 /chat/completions 模型透過 /audio/speech 端點來產生語音。這對於像 Gemini 的已啟用 TTS 的模型特別有用,這類模型只能透過 /chat/completions 存取。
Gemini 文字轉語音
Python SDK 使用方式
Gemini Text-to-Speech SDK Usage
import litellm
import os
# Set your Gemini API key
os.environ["GEMINI_API_KEY"] = "your-gemini-api-key"
def test_audio_speech_gemini():
result = litellm.speech(
model="gemini/gemini-2.5-flash-preview-tts",
input="the quick brown fox jumped over the lazy dogs",
api_key=os.getenv("GEMINI_API_KEY"),
)
# Save to file
from pathlib import Path
speech_file_path = Path(__file__).parent / "gemini_speech.mp3"
result.stream_to_file(speech_file_path)
print(f"Audio saved to {speech_file_path}")
test_audio_speech_gemini()
非同步使用方式
Gemini Text-to-Speech Async Usage
import litellm
import asyncio
import os
from pathlib import Path
os.environ["GEMINI_API_KEY"] = "your-gemini-api-key"
async def test_async_gemini_speech():
speech_file_path = Path(__file__).parent / "gemini_speech.mp3"
response = await litellm.aspeech(
model="gemini/gemini-2.5-flash-preview-tts",
input="the quick brown fox jumped over the lazy dogs",
api_key=os.getenv("GEMINI_API_KEY"),
)
response.stream_to_file(speech_file_path)
print(f"Audio saved to {speech_file_path}")
asyncio.run(test_async_gemini_speech())
LiteLLM Proxy 使用方式
設定組態:
Gemini Proxy Configuration
model_list:
- model_name: gemini-tts
litellm_params:
model: gemini/gemini-2.5-flash-preview-tts
api_key: os.environ/GEMINI_API_KEY
啟動 Proxy:
Start LiteLLM Proxy
litellm --config /path/to/config.yaml
# RUNNING on http://0.0.0.0:4000
送出請求:
Gemini TTS Request
curl http://0.0.0.0:4000/v1/audio/speech \
-H "Authorization: Bearer sk-1234" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-tts",
"input": "The quick brown fox jumped over the lazy dog.",
"voice": "alloy"
}' \
--output gemini_speech.mp3
Vertex AI 文字轉語音
Python SDK 使用方式
Vertex AI Text-to-Speech SDK Usage
import litellm
import os
from pathlib import Path
# Set your Google credentials
os.environ["GOOGLE_APPLICATION_CREDENTIALS"] = "path/to/service-account.json"
def test_audio_speech_vertex():
result = litellm.speech(
model="vertex_ai/gemini-2.5-flash-preview-tts",
input="the quick brown fox jumped over the lazy dogs",
)
# Save to file
speech_file_path = Path(__file__).parent / "vertex_speech.mp3"
result.stream_to_file(speech_file_path)
print(f"Audio saved to {speech_file_path}")
test_audio_speech_vertex()
LiteLLM Proxy 使用方式
設定組態:
Vertex AI Proxy Configuration
model_list:
- model_name: vertex-tts
litellm_params:
model: vertex_ai/gemini-2.5-flash-preview-tts
vertex_project: your-project-id
vertex_location: us-central1
送出請求:
Vertex AI TTS Request
curl http://0.0.0.0:4000/v1/audio/speech \
-H "Authorization: Bearer sk-1234" \
-H "Content-Type: application/json" \
-d '{
"model": "vertex-tts",
"input": "The quick brown fox jumped over the lazy dog.",
"voice": "en-US-Wavenet-D"
}' \
--output vertex_speech.mp3
AWS Polly 文字轉語音
AWS Polly 提供神經式與標準文字轉語音引擎,支援多種語音與語言。
請參閱 AWS Polly 提供者文件 以取得詳細的使用範例。
✨ Enterprise LiteLLM Proxy - 設定最大請求檔案大小
當您想要限制送往 audio/transcriptions 的請求檔案大小時,請使用此功能
- model_name: whisper
litellm_params:
model: whisper-1
api_key: sk-*******
max_file_size_mb: 0.00001 # 👈 max file size in MB (Set this intentionally very small for testing)
model_info:
mode: audio_transcription
使用有效檔案送出測試請求
curl --location 'http://localhost:4000/v1/audio/transcriptions' \
--header 'Authorization: Bearer sk-1234' \
--form 'file=@"/Users/ishaanjaffer/Github/litellm/tests/gettysburg.wav"' \
--form 'model="whisper"'
預期會看到以下回應
{"error":{"message":"File size is too large. Please check your file size. Passed file size: 0.7392807006835938 MB. Max file size: 0.0001 MB","type":"bad_request","param":"file","code":500}}%