File size: 5,183 Bytes
9d571d9
 
 
 
 
 
 
 
 
 
 
70f297d
 
 
 
 
 
 
 
 
 
 
 
feb8411
 
 
70f297d
 
 
 
 
 
 
feb8411
70f297d
 
 
 
 
 
 
 
 
 
 
 
feb8411
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70f297d
 
 
 
 
 
 
feb8411
70f297d
feb8411
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70f297d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
feb8411
70f297d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
feb8411
 
70f297d
 
feb8411
70f297d
 
 
 
 
feb8411
 
 
 
70f297d
 
 
 
 
 
 
 
feb8411
 
70f297d
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
---
title: PDF2podcast 2 Tts
emoji: 💻
colorFrom: indigo
colorTo: red
sdk: gradio
sdk_version: 5.23.2
app_file: app.py
pinned: false
short_description: 原tbdavid2019/PDF2podcast拆出的語音生成(2)
---
# TTS Generator (語音合成器)

這是一個基於OpenAI TTS API的語音合成應用程式,可將文字腳本轉換為自然流暢的語音。應用程式支援雙說話者對話,並提供簡潔的網頁界面,適合製作播客、有聲書或對話式內容。

## 功能特點

- 🎙️ **雙說話者支援**:可分配不同聲音給兩位說話者,適合對話式內容
- 🔄 **智能文本優化**:自動合併相同說話者的連續文本,減少API調用次數
- 🎛️ **多種聲音選項**:支援OpenAI的全部6種TTS聲音(alloy、echo、fable、onyx、nova、shimmer)
- 🎚️ **模型選擇**:支援標準(tts-1)和高清(tts-1-hd)音頻模型
- 🌐 **友好界面**:基於Gradio的簡潔網頁界面,易於使用
- 💾 **自動文件管理**:自動保存生成的音頻並清理過期文件
- 🔊 **音量調整**:內建音量增益功能,可調整輸出音頻音量
- 🌍 **API支援**:提供獨立的API服務,支援外部應用程式呼叫
- 🔑 **環境變量**:支援通過.env文件配置API金鑰

## 安裝說明

### 前置需求

- Python 3.7+
- OpenAI API金鑰(需要啟用TTS功能)
- 可選:創建`.env`文件存儲API金鑰(從`.env.example`複製並修改)

### 安裝步驟

1. 克隆此專案或下載源碼
2. 安裝依賴項:

```bash
pip install -r requirements.txt
```

## 使用方法

### 環境設置

```bash
# 複製環境變量範本
cp .env.example .env

# 編輯 .env 文件,添加您的 OpenAI API Key
nano .env  # 或使用其他編輯器

# 安裝依賴項
pip install -r requirements.txt
```

### 通過網頁界面使用 (app.py)

1. 運行Gradio應用程式:

```bash
python app.py
```

2. 在瀏覽器中打開顯示的URL(通常是 http://127.0.0.1:7860)
3. 在文本框中輸入您的腳本
4. 輸入您的OpenAI API金鑰(或預先在`.env`文件中配置)
5. 選擇所需的音頻模型和說話者聲音
6. 調整音量增益(建議值:6-10 dB)
7. 點擊「生成音頻」按鈕
8. 等待處理完成後,您可以播放或下載生成的音頻

### 通過API使用 (api.py)

如果您需要從外部應用程式呼叫TTS功能,可以使用API:

1. 運行API服務:

```bash
python api.py
```

2. API服務將在 http://localhost:8000 啟動

#### API端點

##### 生成音頻

```
POST /generate-audio
```

請求體示例:
```json
{
  "script": "speaker-1: 你好,歡迎來到播客!\nspeaker-2: 謝謝邀請,很高興來到這裡。",
  "api_key": "your_openai_api_key",
  "model": "tts-1",
  "speaker1_voice": "onyx",
  "speaker2_voice": "nova",
  "volume_boost": 6.0,
  "return_url": false
}
```

- 如果`return_url``false`,將直接返回音頻文件
- 如果`return_url``true`,將返回音頻文件的URL

##### 獲取可用選項

```
GET /options
```

返回可用的音頻模型和聲音選項。

##### API文檔

啟動API服務後,可以訪問自動生成的API文檔:

- Swagger UI: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc

## 腳本格式

腳本應按以下格式編寫:

```
speaker-1: 這是第一位說話者的台詞。
speaker-2: 這是第二位說話者的台詞。
這行沒有標記說話者,將默認使用說話者1的聲音。
speaker-1: 繼續對話...
```

**提示**:相同說話者的連續文本會自動合併處理,以提高API調用效率。

## 參數說明

| 參數 | 說明 |
|------|------|
| 音頻模型 | 選擇TTS模型:標準(tts-1)或高清(tts-1-hd) |
| 說話者1聲音 | 第一位說話者使用的聲音 |
| 說話者2聲音 | 第二位說話者使用的聲音 |
| 音量增益 | 增加音頻音量的分貝值(dB),建議值:6-10 dB |
| OpenAI API Key | 您的OpenAI API金鑰 |

## 聲音選項

應用程式支援以下OpenAI TTS聲音:

- **alloy**: 全能且平穩的聲音
- **echo**: 深沉且有力的聲音
- **fable**: 溫暖且適合講故事的聲音
- **onyx**: 明確且專業的聲音
- **nova**: 友好且自然的聲音
- **shimmer**: 清晰且愉悅的聲音

## 技術細節

- 使用OpenAI的TTS API進行語音合成
- 使用Gradio建立網頁界面(app.py)
- 使用FastAPI提供RESTful API(api.py)
- 自動管理臨時音頻文件(24小時後自動清理)
- 支援流式處理大型音頻文件
- 使用pydub處理音頻音量調整

## 依賴項

- gradio: 網頁界面
- openai: OpenAI API客戶端
- fastapi: API框架
- uvicorn: ASGI服務器
- pydub: 音頻處理
- python-dotenv: 環境變量管理
- pathlib: 文件路徑處理
- io: 二進制數據處理

## 注意事項

- 使用此應用程式需要有效的OpenAI API金鑰
- API使用會產生費用,請參考OpenAI的[價格頁面](https://openai.com/pricing)
- 生成的臨時音頻文件會在24小時後自動刪除
- 在Hugging Face Space上運行時,app.py會自動啟動,提供Gradio界面
- 如需API功能,需要單獨運行api.py

## 授權信息

[MIT授權](https://opensource.org/licenses/MIT)