跳到主要内容
警告

本教程由社区贡献,不获得 Open WebUI 团队的支持。它仅作为演示,说明如何根据您的特定用例定制 Open WebUI。想要贡献?请查看贡献教程。

openai-edge-tts 🗣️ 集成到 Open WebUI

什么是 openai-edge-tts?

OpenAI Edge TTS 是一个文本转语音 API,它模仿 OpenAI API 端点,允许在您可以定义端点 URL 的场景中直接替代使用,例如 Open WebUI。

它使用 edge-tts 软件包,该软件包利用 Edge 浏览器的免费“朗读”功能,模拟向 Microsoft/Azure 发出请求,以便免费获得高质量的文本转语音服务。

在此处试听语音样本

它与 'openedai-speech' 有何不同?

openedai-speech 类似,openai-edge-tts 是一个文本转语音 API 端点,它模仿 OpenAI API 端点,允许在 OpenAI Speech 端点可调用且服务器端点 URL 可配置的场景中直接替代使用。

openedai-speech 是一个更全面的选择,它支持完全离线生成语音,并提供多种模式可供选择。

openai-edge-tts 是一个更简单的选择,它使用名为 edge-tts 的 Python 包来生成音频。

要求

  • 系统上已安装 Docker
  • Open WebUI 正在运行

⚡️ 快速开始

最简单的入门方法是运行以下命令,无需进行任何配置

docker run -d -p 5050:5050 travisvn/openai-edge-tts:latest

这将在端口 5050 运行服务,并使用所有默认配置

设置 Open WebUI 以使用 openai-edge-tts

  • 打开管理面板并导航至 Settings -> Audio
  • 将您的 TTS 设置调整为与下方截图一致
  • 注意:您可以在此处指定 TTS 语音

Screenshot of Open WebUI Admin Settings for Audio adding the correct endpoints for this project

信息

默认 API 密钥是字符串 your_api_key_here。如果您不需要额外的安全性,则不必更改此值。

就是这样!您可以在这里结束

如果您觉得 OpenAI Edge TTS 有用,请在 GitHub 上为该仓库 ⭐️ 点星

使用 Python 运行

🐍 使用 Python 运行

如果您更喜欢直接使用 Python 运行此项目,请按照以下步骤设置虚拟环境、安装依赖项并启动服务器。

1. 克隆仓库

git clone https://github.com/travisvn/openai-edge-tts.git
cd openai-edge-tts

2. 设置虚拟环境

创建并激活虚拟环境以隔离依赖项

# For macOS/Linux
python3 -m venv venv
source venv/bin/activate

# For Windows
python -m venv venv
venv\Scripts\activate

3. 安装依赖项

使用 pip 安装 requirements.txt 中列出的所需软件包

pip install -r requirements.txt

4. 配置环境变量

在根目录中创建 .env 文件并设置以下变量

API_KEY=your_api_key_here
PORT=5050

DEFAULT_VOICE=en-US-AvaNeural
DEFAULT_RESPONSE_FORMAT=mp3
DEFAULT_SPEED=1.0

DEFAULT_LANGUAGE=en-US

REQUIRE_API_KEY=True
REMOVE_FILTER=False
EXPAND_API=True

5. 运行服务器

配置完成后,使用以下命令启动服务器

python app/server.py

服务器将在 https://:5050 运行。

6. 测试 API

您现在可以通过 https://:5050/v1/audio/speech 和其他可用端点与 API 交互。请求示例请参见使用部分。

使用详情
端点:/v1/audio/speech(别名为 /audio/speech

根据输入文本生成音频。可用参数:

必填参数

  • input (字符串): 要转换为音频的文本(最多 4096 个字符)。

可选参数

  • model (字符串): 设置为 "tts-1" 或 "tts-1-hd" (默认值: "tts-1")。
  • voice (字符串): OpenAI 兼容的语音之一(alloy, echo, fable, onyx, nova, shimmer)或任何有效的 edge-tts 语音(默认值: "en-US-AvaNeural")。
  • response_format (字符串): 音频格式。选项: mp3, opus, aac, flac, wav, pcm (默认值: mp3)。
  • speed (数字): 播放速度(0.25 到 4.0)。默认值为 1.0
提示

您可以在 tts.travisvn.com 浏览可用语音并试听样本。

使用 curl 请求并将输出保存到 mp3 文件的示例

curl -X POST https://:5050/v1/audio/speech \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key_here" \
-d '{
"input": "Hello, I am your AI assistant! Just let me know how I can help bring your ideas to life.",
"voice": "echo",
"response_format": "mp3",
"speed": 1.0
}' \
--output speech.mp3

或者,与 OpenAI API 端点参数保持一致的示例

curl -X POST https://:5050/v1/audio/speech \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key_here" \
-d '{
"model": "tts-1",
"input": "Hello, I am your AI assistant! Just let me know how I can help bring your ideas to life.",
"voice": "alloy"
}' \
--output speech.mp3

以及非英语语言的示例

curl -X POST https://:5050/v1/audio/speech \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your_api_key_here" \
-d '{
"model": "tts-1",
"input": "じゃあ、行く。電車の時間、調べておくよ。",
"voice": "ja-JP-KeitaNeural"
}' \
--output speech.mp3
附加端点
  • POST/GET /v1/models: 列出可用的 TTS 模型。
  • POST/GET /v1/voices: 列出给定语言/区域设置的 edge-tts 语音。
  • POST/GET /v1/voices/all: 列出所有 edge-tts 语音,并附带语言支持信息。
信息

/v1 现在是可选的。

此外,还有 Azure AI SpeechElevenLabs 的端点,以便在 Open WebUI 允许这些选项的自定义 API 端点时,为未来提供潜在支持。

可以通过设置环境变量 EXPAND_API=False 来禁用这些功能。

🐳 Docker 快速配置

您可以在运行项目时使用的命令中配置环境变量

docker run -d -p 5050:5050 \
-e API_KEY=your_api_key_here \
-e PORT=5050 \
-e DEFAULT_VOICE=en-US-AvaNeural \
-e DEFAULT_RESPONSE_FORMAT=mp3 \
-e DEFAULT_SPEED=1.0 \
-e DEFAULT_LANGUAGE=en-US \
-e REQUIRE_API_KEY=True \
-e REMOVE_FILTER=False \
-e EXPAND_API=True \
travisvn/openai-edge-tts:latest
注意

Markdown 文本现在通过过滤器处理,以增强可读性和支持。

您可以通过设置环境变量 REMOVE_FILTER=True 来禁用此功能。

其他资源

有关 openai-edge-tts 的更多信息,您可以访问其 GitHub 仓库

如需直接支持,您可以访问 语音 AI & TTS Discord

🎙️ 语音样本

播放语音样本并查看所有可用的 Edge TTS 语音