|
|
---
|
|
|
title: Edge TTS API
|
|
|
emoji: 🎤
|
|
|
colorFrom: blue
|
|
|
colorTo: purple
|
|
|
sdk: docker
|
|
|
pinned: false
|
|
|
license: mit
|
|
|
short_description: 基於 Microsoft Edge TTS 的文字轉語音 API 服務
|
|
|
---
|
|
|
|
|
|
# Edge TTS API 服務
|
|
|
|
|
|
這是一個基於 Microsoft Edge TTS 的文字轉語音網路服務,使用 FastAPI 框架構建,現在部署在 Hugging Face Spaces 上。
|
|
|
|
|
|
## 功能特色
|
|
|
|
|
|
- 🎤 支援多種語音和語言
|
|
|
- ⚡ 快速響應的 API 服務
|
|
|
- 🔧 可調整語速、音量和音調
|
|
|
- 📱 支援 CORS,可用於前端應用
|
|
|
- 📊 自動生成的 API 文檔
|
|
|
- 🗂️ 文件管理功能
|
|
|
|
|
|
## 快速開始
|
|
|
|
|
|
### 1. 訪問服務
|
|
|
|
|
|
- **API 服務**: 點擊右上角的 "View API" 按鈕
|
|
|
- **API 文檔**: `https://your-space-name.hf.space/docs`
|
|
|
- **健康檢查**: `https://your-space-name.hf.space/health`
|
|
|
|
|
|
### 2. 使用 API
|
|
|
|
|
|
#### 獲取語音列表
|
|
|
```http
|
|
|
GET /voices
|
|
|
```
|
|
|
|
|
|
#### 文字轉語音 (POST)
|
|
|
```http
|
|
|
POST /tts
|
|
|
Content-Type: application/json
|
|
|
|
|
|
{
|
|
|
"text": "你好,世界!",
|
|
|
"voice": "zh-TW-HsiaoChenNeural",
|
|
|
"rate": "+0%",
|
|
|
"volume": "+0%",
|
|
|
"pitch": "+0Hz"
|
|
|
}
|
|
|
```
|
|
|
|
|
|
#### 文字轉語音 (GET)
|
|
|
```http
|
|
|
GET /tts?text=你好世界&voice=zh-TW-HsiaoChenNeural&rate=+0%&volume=+0%&pitch=+0Hz
|
|
|
```
|
|
|
|
|
|
## 使用範例
|
|
|
|
|
|
### Python 客戶端
|
|
|
|
|
|
```python
|
|
|
import requests
|
|
|
|
|
|
# 替換為您的 Hugging Face Space URL
|
|
|
base_url = "https://your-space-name.hf.space"
|
|
|
|
|
|
# 使用 POST 方法
|
|
|
response = requests.post(f"{base_url}/tts", json={
|
|
|
"text": "你好,這是測試文字",
|
|
|
"voice": "zh-TW-HsiaoChenNeural"
|
|
|
})
|
|
|
|
|
|
if response.json()["success"]:
|
|
|
audio_url = response.json()["audio_url"]
|
|
|
print(f"音頻文件:{base_url}{audio_url}")
|
|
|
|
|
|
# 使用 GET 方法
|
|
|
response = requests.get(f"{base_url}/tts", params={
|
|
|
"text": "你好,這是測試文字",
|
|
|
"voice": "zh-TW-HsiaoChenNeural"
|
|
|
})
|
|
|
|
|
|
# 直接下載音頻文件
|
|
|
with open("output.mp3", "wb") as f:
|
|
|
f.write(response.content)
|
|
|
```
|
|
|
|
|
|
### JavaScript 客戶端
|
|
|
|
|
|
```javascript
|
|
|
// 替換為您的 Hugging Face Space URL
|
|
|
const baseUrl = "https://your-space-name.hf.space";
|
|
|
|
|
|
// 使用 POST 方法
|
|
|
fetch(`${baseUrl}/tts`, {
|
|
|
method: 'POST',
|
|
|
headers: {
|
|
|
'Content-Type': 'application/json',
|
|
|
},
|
|
|
body: JSON.stringify({
|
|
|
text: '你好,這是測試文字',
|
|
|
voice: 'zh-TW-HsiaoChenNeural'
|
|
|
})
|
|
|
})
|
|
|
.then(response => response.json())
|
|
|
.then(data => {
|
|
|
if (data.success) {
|
|
|
console.log('音頻文件:', `${baseUrl}${data.audio_url}`);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// 使用 GET 方法
|
|
|
const audioUrl = `${baseUrl}/tts?text=你好世界&voice=zh-TW-HsiaoChenNeural`;
|
|
|
window.open(audioUrl, '_blank');
|
|
|
```
|
|
|
|
|
|
## 常用語音
|
|
|
|
|
|
### 🇹🇼 台灣語音
|
|
|
- `zh-TW-HsiaoChenNeural` - 台灣女聲 (HsiaoChen)
|
|
|
- `zh-TW-HsiaoYuNeural` - 台灣女聲 (HsiaoYu)
|
|
|
- `zh-TW-YunJheNeural` - 台灣男聲 (YunJhe)
|
|
|
|
|
|
### 🇨🇳 中國語音
|
|
|
- `zh-CN-XiaoxiaoNeural` - 中國女聲 (Xiaoxiao)
|
|
|
- `zh-CN-XiaoyiNeural` - 中國女聲 (Xiaoyi)
|
|
|
- `zh-CN-YunjianNeural` - 中國男聲 (Yunjian)
|
|
|
- `zh-CN-YunxiNeural` - 中國男聲 (Yunxi)
|
|
|
- `zh-CN-YunxiaNeural` - 中國男聲 (Yunxia)
|
|
|
- `zh-CN-YunyangNeural` - 中國男聲 (Yunyang)
|
|
|
|
|
|
### 🇺🇸 美國語音
|
|
|
- `en-US-JennyNeural` - 美國女聲 (Jenny)
|
|
|
- `en-US-GuyNeural` - 美國男聲 (Guy)
|
|
|
|
|
|
### 🇬🇧 英國語音
|
|
|
- `en-GB-SoniaNeural` - 英國女聲 (Sonia)
|
|
|
- `en-GB-RyanNeural` - 英國男聲 (Ryan)
|
|
|
|
|
|
## 參數說明
|
|
|
|
|
|
### 語速調整 (rate)
|
|
|
- `+50%` - 加快 50%
|
|
|
- `-50%` - 減慢 50%
|
|
|
- `+0%` - 正常速度
|
|
|
|
|
|
### 音量調整 (volume)
|
|
|
- `+50%` - 增加音量 50%
|
|
|
- `-50%` - 減少音量 50%
|
|
|
- `+0%` - 正常音量
|
|
|
|
|
|
### 音調調整 (pitch)
|
|
|
- `+50Hz` - 提高音調
|
|
|
- `-50Hz` - 降低音調
|
|
|
- `+0Hz` - 正常音調
|
|
|
|
|
|
## 注意事項
|
|
|
|
|
|
1. 生成的音頻文件會保存在臨時目錄中
|
|
|
2. 文件會自動生成唯一 ID,避免衝突
|
|
|
3. 服務需要網路連接才能使用 Microsoft Edge TTS
|
|
|
4. 在 Hugging Face Spaces 上,音頻文件會在短時間後自動清理
|
|
|
|
|
|
## 授權
|
|
|
|
|
|
本項目基於 MIT 授權條款開源。
|
|
|
|