OpenAI-Edge-TTS:本地化 OpenAI 兼容的文本转语音 API,免费高效!
文本转语音(TTS)技术已经成为人工智能领域的重要一环,无论是语音助手、教育内容生成,还是音频文章创作,TTS 工具都能显著提高效率。今天要为大家介绍的是 OpenAI-Edge-TTS,一款基于 Microsoft Edge 在线文本转语音服务的开源项目,它提供了一个与 OpenAI API 兼容的本地 TTS 端点,让你能够通过简单的配置轻松实现文本到语音的转换,而且完全免费!
一、什么是 OpenAI-Edge-TTS?
OpenAI-Edge-TTS 是一个模拟 OpenAI TTS 端点(/v1/audio/speech)的本地服务,使用 Microsoft Edge 在线 TTS 服务来生成语音。通过这款工具,用户无需访问 OpenAI 的官方 API,只需通过本地服务器即可实现文本转语音的功能,同时还支持多种语音和音频格式选项。
项目地址:https://github.com/travisvn/openai-edge-tts
核心特点
- OpenAI 兼容 API
提供/v1/audio/speech端点,与 OpenAI API 端点结构一致,方便用户无缝切换到本地化服务。 - 支持丰富的语音类型
将 OpenAI 的语音选项(如 alloy、echo、fable 等)映射到 Edge-TTS 的等效语音,同时支持直接指定任何 Microsoft Edge-TTS 语音。 - 多种音频格式支持
支持输出多种音频格式,包括 mp3、opus、aac、flac、wav 和 pcm,适配不同使用场景。 - 灵活调整播放速度
支持 0.25 倍到 4.0 倍的播放速度调整,满足特殊场景需求。 - 免费使用
依赖 Microsoft Edge 的在线 TTS 服务,完全免费,降低使用门槛。 - 多语言支持
除英语外,还支持其他语言和地区的语音生成,如日语、中文等。

二、OpenAI-Edge-TTS 的主要应用场景
1. 音频内容创作
快速将文本内容转换为自然流畅的语音,适用于音频文章、播客脚本或教育视频的音频配音。
2. 开发与测试环境
为需要 OpenAI TTS 的开发者提供本地替代方案,便于开发和测试,节省调用官方 API 的成本。
3. 多语言语音输出
支持多语言生成,无论是创建本地化内容,还是测试跨语言功能,OpenAI-Edge-TTS 都能满足需求。
4. 定制化服务
通过可调的播放速度和语音类型,提供更加灵活的语音定制能力,适配特定的项目需求。
三、快速上手 OpenAI-Edge-TTS
1. 环境准备
推荐使用 Docker 部署
- 安装 Docker 和 Docker Compose,确保运行环境就绪。
可选使用 Python 本地运行
- 需要 Python 3.8+ 和 FFMPEG(如果需要进行音频格式转换)。
2. 部署服务
(1)使用 Docker 一键部署
-
克隆项目:
git clone https://github.com/travisvn/openai-edge-tts.git cd openai-edge-tts -
配置环境变量:
在根目录创建.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或者直接复制默认配置:
cp .env.example .env -
启动服务:
使用 Docker Compose 启动服务:docker compose up --build在后台运行服务:
docker compose up -d
(2)使用 Python 本地运行
-
克隆项目并进入目录:
git clone https://github.com/travisvn/openai-edge-tts.git cd openai-edge-tts -
创建虚拟环境并安装依赖:
python3 -m venv venv source venv/bin/activate # macOS/Linux # 或者 venv\Scripts\activate # Windowspip install -r requirements.txt -
配置环境变量(参考
.env文件)。 -
启动服务:
python app/server.py
3. 测试 API
服务启动后,访问 API 端点:
http://localhost:5050/v1/audio/speech
示例请求
使用 curl 将文本转化为语音并保存为 MP3 文件:
curl -X POST http://localhost:5050/v1/audio/speech \-H "Content-Type: application/json" \-H "Authorization: Bearer your_api_key_here" \-d '{"input": "Hello, I am your AI assistant!","voice": "alloy","response_format": "mp3","speed": 1.1}' \--output speech.mp3
支持其他语言:
curl -X POST http://localhost:5050/v1/audio/speech \-H "Content-Type: application/json" \-H "Authorization: Bearer your_api_key_here" \-d '{"input": "こんにちは、私はAIアシスタントです。","voice": "ja-JP-KeitaNeural"}' \--output speech.mp3
四、与官方 OpenAI TTS 的对比
| 功能维度 | OpenAI-Edge-TTS | OpenAI TTS API |
|---|---|---|
| 成本 | 完全免费 | 需按调用量付费 |
| 多语音支持 | 支持 Edge-TTS 全部语音 | 支持官方指定语音 |
| 兼容性 | 模拟 OpenAI API 端点 | 官方支持 |
| 扩展能力 | 可自行扩展语音类型与功能 | 功能固定 |
| 部署方式 | 本地化运行,支持 Docker 部署 | 依赖云端 |
五、总结:文本转语音的本地化高效方案
OpenAI-Edge-TTS 通过模拟 OpenAI TTS API,结合 Microsoft Edge 在线 TTS 服务,为开发者提供了一款免费、高效且功能丰富的文本转语音解决方案。无论是用于本地开发、测试,还是构建音频内容创作平台,这款工具都能极大降低使用成本,同时提供出色的扩展能力。
相关文章:
OpenAI-Edge-TTS:本地化 OpenAI 兼容的文本转语音 API,免费高效!
文本转语音(TTS)技术已经成为人工智能领域的重要一环,无论是语音助手、教育内容生成,还是音频文章创作,TTS 工具都能显著提高效率。今天要为大家介绍的是 OpenAI-Edge-TTS,一款基于 Microsoft Edge 在线文本…...
P4681 [THUSC 2015] 平方运算 Solution
Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an) 和常数 p p p ,有 m m m 个操作,分以下两种: modify ( l , r ) \operatorname{modify}(l,r) modify(l,r):对每个 i ∈ [ …...
【apt源】RK3588 平台ubuntu20.04更换apt源
RK3588芯片使用的是aarch64架构,因此在Ubuntu 20.04上更换apt源时需要使用针对aarch64架构的源地址。以下是针对RK3588芯片在Ubuntu 20.04上更换apt源到清华源的正确步骤: 步骤一:打开终端 在Ubuntu 20.04中,按下Ctrl Alt T打…...
Angular 2 表单深度解析
Angular 2 表单深度解析 引言 Angular 2作为现代前端开发的框架之一,以其灵活性和强大的功能赢得了众多开发者的青睐。在Angular 2中,表单处理是其中一个重要且复杂的部分。本文将深入解析Angular 2的表单,从基础知识到高级应用,旨在帮助开发者更好地理解和运用Angular 2…...
PHP 7 新特性
PHP 7 新特性 引言 PHP 作为一种广泛使用的服务器端脚本语言,自1995年诞生以来,已经经历了多个版本的迭代。PHP 7 是 PHP 的发展历程中的一个重要里程碑,它带来了许多新特性和改进,旨在提高性能、增强安全性和简化开发过程。本文将详细介绍 PHP 7 的新特性,帮助开发者更…...
vim如何解决‘’文件非法关闭后,遗留交换文件‘’的问题
过程描述: 由于我修改文件时(一定得修改了文件,不做任何修改不会产生这个问题)的非法关闭,比如直接关闭虚拟机,或者直接断开远程工具的远程连接,产生了以下遗留交换文件的问题: 点击…...
【练习】树形dp
G. Group Homework time limit per test: 3 s memory limit per test: 512 MB input: standard input output: standard output No, we don’t want group homework. It’s the place where KaTeX parse error: Expected EOF, got & at position 7: 1 1 &̲lt; 1 …...
Mybatis是如何进行分页的?
大家好,我是锋哥。今天分享关于【Mybatis是如何进行分页的?】面试题。希望对大家有帮助; Mybatis是如何进行分页的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 MyBatis 实现分页的方式有很多种,最常见…...
【新春特辑】2025年春节技术展望:蛇年里的科技创新与趋势预测
🔥【新春特辑】2025年春节技术展望:蛇年里的科技创新与趋势预测 📅 发布日期:2025年01月29日(大年初一) 在这个辞旧迎新的美好时刻,我们迎来了充满希望的2025年,也是十二生肖中的蛇…...
论文笔记(六十三)Understanding Diffusion Models: A Unified Perspective(五)
Understanding Diffusion Models: A Unified Perspective(五) 文章概括基于得分的生成模型(Score-based Generative Models) 文章概括 引用: article{luo2022understanding,title{Understanding diffusion models: A…...
C++并发:C++内存模型和原子操作
C11引入了新的线程感知内存模型。内存模型精确定义了基础构建单元应当如何被运转。 1 内存模型基础 内存模型牵涉两个方面:基本结构和并发。 基本结构关系到整个程序在内存中的布局。 1.1 对象和内存区域 C的数据包括: 内建基本类型:int&…...
JavaScript函数中this的指向
总结:谁调用我,我就指向谁(es6箭头函数不算) 一、ES6之前 每一个函数内部都有一个关键字是 this ,可以直接使用 重点: 函数内部的 this 只和函数的调用方式有关系,和函数的定义方式没有关系 …...
【java学习笔记】@Autowired注解 使用方法和作用 | 配合@Component注解使用 | IOC控制反转
原本在类中,要用什么对象,就直接new一个对象。这种原始的方式 是由应用本身去控制实例的。 用了Autowired注解后,就相当于把实例(对象)的控制权 交给外部容器来统一管理(降低耦合)。(…...
数论问题76一一容斥原理
容斥原理是一种计数方法,用于计算多个集合的并集中元素的个数,以避免重复计算。以下是其基本内容及相关公式: 两个集合的容斥原理 若有集合A和集合B,那么A与B的并集中元素的个数等于A集合元素个数加上B集合元素个数,再…...
python-leetcode-从中序与后序遍历序列构造二叉树
106. 从中序与后序遍历序列构造二叉树 - 力扣(LeetCode) # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # self.left left # self.right r…...
【Oracle篇】使用Hint对优化器的执行计划进行干预(含单表、多表、查询块、声明四大类Hint干预)
💫《博主介绍》:✨又是一天没白过,我是奈斯,从事IT领域✨ 💫《擅长领域》:✌️擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控;并对SQLserver、NoSQL(…...
设置jmeter外观颜色
设置jmeter外观颜色 方法: 步骤一、点击顶部选项 ->外观,这里提供了不同的主题,可选自己喜欢的风格。 步骤二、选择后,弹框提示点击Yes。...
计算机网络 IP 网络层 2 (重置版)
IP的简介: IP 地址是互联网协议地址(Internet Protocol Address)的简称,是分配给连接到互联网的设备的唯一标识符,用于在网络中定位和通信。 IP编制的历史阶段: 1,分类的IP地址: …...
神经网络和深度学习
应用 类型 为什么近几年飞速发展 数据增长,算力增长,算法革新 逻辑回归 向量化 浅层神经网络(Shallow neural network) 单条训练数据前向传播计算表达式 batch训练数据前向传播计算表达式 反向传播计算表达式 参数随机初始化 不能全部设为0 原因是同一…...
MySQL 基础学习(3):排序查询和条件查询
MySQL 查询与条件操作:详解与技巧 在本文中,我们将探讨 MySQL 中的查询操作及其相关功能,包括别名、去重、排序查询和条件查询等,并总结一些最佳实践和注意事项。 一、使用别名(AS) 在查询中,…...
.Net框架,除了EF还有很多很多......
文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...
376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
scikit-learn机器学习
# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...
MySQL 主从同步异常处理
阅读原文:https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主,遇到的这个错误: Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一,通常表示ÿ…...
ZYNQ学习记录FPGA(一)ZYNQ简介
一、知识准备 1.一些术语,缩写和概念: 1)ZYNQ全称:ZYNQ7000 All Pgrammable SoC 2)SoC:system on chips(片上系统),对比集成电路的SoB(system on board) 3)ARM:处理器…...
CSS3相关知识点
CSS3相关知识点 CSS3私有前缀私有前缀私有前缀存在的意义常见浏览器的私有前缀 CSS3基本语法CSS3 新增长度单位CSS3 新增颜色设置方式CSS3 新增选择器CSS3 新增盒模型相关属性box-sizing 怪异盒模型resize调整盒子大小box-shadow 盒子阴影opacity 不透明度 CSS3 新增背景属性ba…...
在Zenodo下载文件 用到googlecolab googledrive
方法:Figshare/Zenodo上的数据/文件下载不下来?尝试利用Google Colab :https://zhuanlan.zhihu.com/p/1898503078782674027 参考: 通过Colab&谷歌云下载Figshare数据,超级实用!!࿰…...
