PDF2podcast-2-tts / README.md
tbdavid2019's picture
新增 api
feb8411
---
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)