当前位置: 首页 > news >正文

Python调用edge-tts实现在线文字转语音

edge-tts是一个 Python 模块,允许通过Python代码或命令的方式使用 Microsoft Edge 的在线文本转语音服务。

项目源码

GitHub - rany2/edge-tts: Use Microsoft Edge's online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an API keyUse Microsoft Edge's online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an API key - rany2/edge-ttsicon-default.png?t=N7T8https://github.com/rany2/edge-tts

安装

pip install edge-tts

用法

命令行方式

  • --write-media:输出音频
  • --write-subtitles:输出字幕
edge-tts --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.vtt

选项检查可用的声音

edge-tts --list-voices

改变声音

  • --voice:指定声音
edge-tts --voice zh-CN-XiaoxiaoNeural --text "君不见黄河之水天上来" --write-media hello.mp3 --write-subtitles hello.vtt

改变速率、音量和音高

edge-tts --rate=-50% --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.vtt
edge-tts --volume=-50% --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.vtt
edge-tts --pitch=-50Hz --text "Hello, world!" --write-media hello.mp3 --write-subtitles hello.vtt

播放音频

edge-playback

edge-playback 用于播放生成的语音。它采用与 edge-tts 相同的参数。

Python代码方式

文字转音频

import asyncio
import edge_ttsTEXT = "Hello World!"
VOICE = "en-GB-SoniaNeural"
OUTPUT_FILE = "test.mp3"async def amain() -> None:"""Main function"""communicate = edge_tts.Communicate(TEXT, VOICE)await communicate.save(OUTPUT_FILE)if __name__ == "__main__":loop = asyncio.get_event_loop_policy().get_event_loop()try:loop.run_until_complete(amain())finally:loop.close()

使用VoicesManager进行动态语音选择的示例

import asyncio
import randomimport edge_tts
from edge_tts import VoicesManagerTEXT = "Hoy es un buen día."
OUTPUT_FILE = "spanish.mp3"async def amain() -> None:"""Main function"""voices = await VoicesManager.create()voice = voices.find(Gender="Male", Language="es")# Also supports Locales# voice = voices.find(Gender="Female", Locale="es-AR")communicate = edge_tts.Communicate(TEXT, random.choice(voice)["Name"])await communicate.save(OUTPUT_FILE)if __name__ == "__main__":loop = asyncio.get_event_loop_policy().get_event_loop()try:loop.run_until_complete(amain())finally:loop.close()

流式传输来自TTS的音频数据

import asyncio
import edge_ttsTEXT = "Hello World!"
VOICE = "en-GB-SoniaNeural"
OUTPUT_FILE = "test.mp3"async def amain() -> None:"""Main function"""communicate = edge_tts.Communicate(TEXT, VOICE)with open(OUTPUT_FILE, "wb") as file:async for chunk in communicate.stream():if chunk["type"] == "audio":file.write(chunk["data"])elif chunk["type"] == "WordBoundary":print(f"WordBoundary: {chunk}")if __name__ == "__main__":loop = asyncio.get_event_loop_policy().get_event_loop()try:loop.run_until_complete(amain())finally:loop.close()

相关文章:

Python调用edge-tts实现在线文字转语音

edge-tts是一个 Python 模块,允许通过Python代码或命令的方式使用 Microsoft Edge 的在线文本转语音服务。 项目源码 GitHub - rany2/edge-tts: Use Microsoft Edges online text-to-speech service from Python WITHOUT needing Microsoft Edge or Windows or an…...

植物病害识别:YOLO甘蔗叶片病害识别分类数据集

YOLO甘蔗叶片病害识别数据集, 包含尾孢菌叶斑病,眼斑病,健康,红腐病,锈病,黄叶病6个常见病类别,3300多张图像,yolo标注完整,全部原始图像,未应用增强。 适用于CV项目&…...

pyqt QTextEdit 捕获enter按键

参考: https://blog.csdn.net/qq_27061049/article/details/101550616 方法一: 在PyQt中,可以通过重写QTextEdit的keyPressEvent()函数来捕获Enter按键。下面是示例代码: from PyQt5.QtWidgets import QApplication, QMainWindo…...

一劳永逸的方法解决:LNK1168无法打开 xxx.exe 进行写入 报错问题

这种错误的产生原因: 运行程序退出不是按正常流退出,是按窗口右上角的 “X” 来关闭程序,但是后台的xxx.exe控制台程序还在运行;修改程序的代码后再运行,就会报LNK1168的错误; 报错示例: 解决方…...

程序员的金三银四求职宝典:面试技巧分享

​​​​​​​随着春天的到来,程序员们迎来了求职的旺季——金三银四。在这个时期,各大公司纷纷开放招聘,为求职者提供了丰富的选择机会。然而,如何在众多的面试中脱颖而出,成功获得心仪的职位,就需要掌握一些有效的面试技巧。下面,就让我们一起来探讨一下金三银四求职…...

【DevOps基础篇之k8s】如何应用Kubernetes中的Role Based Access Control(RBAC)

【DevOps基础篇之k8s】如何应用Kubernetes中的Role Based Access Control(RBAC) 目录 【DevOps基础篇之k8s】如何应用Kubernetes中的Role Based Access Control(RBAC)背景Kubernetes身份验证和授权基于角色的访问控制(RBAC)用户账户 vs. 服务账户角色 vs. 集群角色RoleBi…...

python知网爬虫论文pdf下载+立即可用(动态爬虫)

文章目录 使用代码 使用 自己工作需要,分享出来,刚刚修改完。 知需要修改keyword就可以完成自动搜索和下载同时翻页。 但是需要安装Chrome,也支持linux爬虫,也要安装linux Chrome非可视化版。 代码 import selenium.webdriver …...

DataFunSummit 2023:洞察现代数据栈技术的创新与发展(附大会核心PPT下载)

随着数字化浪潮的推进,数据已成为企业竞争的核心要素。为了应对日益增长的数据挑战,现代数据栈技术日益受到业界的关注。DataFunSummit 2023年现代数据栈技术峰会正是在这样的背景下应运而生,汇聚了全球数据领域的精英,共同探讨现…...

运行 Jmeter 文件生成 HTML 测试报告,我选择 ANT 工具

概述 ant 是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于 Java 环境中的软件开发。 在与 Jmeter 生成的 jmx 文件配合使用中,ant 会完成jmx计划的执行和生成jtl文件,并将jtl文件转化为html页面进行查看。 还可…...

TensorRT是什么,有什么作用,如何使用

TensorRT 是由 NVIDIA 提供的一个高性能深度学习推理(inference)引擎。它专为生产环境中的部署而设计,用于提高在 NVIDIA GPU 上运行的深度学习模型的推理速度和效率。以下是关于 TensorRT 的详细介绍: TensorRT 是 NVIDIA 推出的…...

同比和环比

1.同比就是今年的某时期与去年这个时期 进行对比 (消除季节性差异) 例子:2018年一季度销量 2019年一季度销量 上升/下滑 2.环比是今年的某个时期与当前上一个时期进行对比(两个时期是连续的) 例子:2024年1月 营收额1000万元 2024年2月营收额3000万元 同比增长...

js中批量修改对象属性

首先,有这个对象 let a {id: 1,name: 张三,age: 18,sex: 0 }需求:同时修改name,id,并添加一个新属性c 常规写法: a.id 2; a.name 李四; a.c 1;但这种写法遇到批量就会很麻烦 解决方法: 方法1: 使用Object.assi…...

应用案例 | Softing echocollect e网关助力汽车零部件制造商构建企业数据库,提升生产效率和质量

为了提高生产质量和效率,某知名汽车零部件制造商采用了Softing echocollect e多协议数据采集网关——从机器和设备中获取相关数据,并直接将数据存储在中央SQL数据库系统中用于分析处理,从而实现了持续监控和生产过程的改进。 一 背景 该企业…...

使用大带宽服务器对网站有什么好处?

近年来大带宽服务器频频出现在咱们的视野当中,选用的用户也在与日增长。那么究其主要原因是什么?租用大带宽服务器的好处又有哪些? 今天德迅云安全带您来了解下。1.有效提升网站访问速度 一般来说,正规的网站对用户体验度都是非常有讲究的,…...

17-Java解释器模式 ( Interpreter Pattern )

Java解释器模式 摘要实现范例 解释器模式(Interpreter Pattern)实现了一个表达式接口,该接口解释一个特定的上下文 这种模式被用在 SQL 解析、符号处理引擎等 解释器模式提供了评估语言的语法或表达式的方式,它属于行为型模式 …...

mysql的安装启动

下载 2.解压后放在某个目录下: 3.修改系统变量 4.修改配置文件 (创建一个ini文件放在解压后的目录下) 内容如下 5.初始化mysql 1.用管理员模式下输入: mysqld --initialize --console C:\WINDOWS\system32>mysqld --initia…...

[Java安全入门]三.CC1链

1.前言 Apache Commons Collections是一个扩展了Java标准库里的Collection结构的第三方基础库,它提供了很多强大的数据结构类型和实现了各种集合工具类。Commons Collections触发反序列化漏洞构造的链叫做cc链,构造方式多种,这里先学习cc1链…...

为什么虚拟dom比真实dom更快

虚拟DOM(Virtual DOM)之所以在某些情况下比直接操作真实DOM更快,主要有以下几个原因: 批量更新:虚拟DOM可以将多个DOM操作批量更新为一次操作。当需要对真实DOM进行多次修改时,直接操作真实DOM会导致浏览器…...

力扣---腐烂的橘子

题目&#xff1a; bfs思路&#xff1a; 感觉bfs还是很容易想到的&#xff0c;首先定义一个双端队列&#xff08;队列也是可以的~&#xff09;&#xff0c;如果值为2&#xff0c;则入队列&#xff0c;我这里将队列中的元素定义为pair<int,int>。第一个int记录在数组中的位…...

【开源物联网平台】FastBee使用EMQX5.0接入步骤

​&#x1f308; 个人主页&#xff1a;帐篷Li &#x1f525; 系列专栏&#xff1a;FastBee物联网开源项目 &#x1f4aa;&#x1f3fb; 专注于简单&#xff0c;易用&#xff0c;可拓展&#xff0c;低成本商业化的AIOT物联网解决方案 目录 一、将java内置mqtt broker切换成EMQX5…...

wan2.1-vae在建筑设计领域的应用:室内效果图生成、立面风格迁移与材质映射示意

wan2.1-vae在建筑设计领域的应用&#xff1a;室内效果图生成、立面风格迁移与材质映射示意 1. 建筑设计领域的AI革命 建筑设计行业正在经历一场由AI技术带来的变革。传统设计流程中&#xff0c;从概念构思到效果图呈现往往需要耗费大量时间和人力成本。而wan2.1-vae这类先进的…...

保姆级教程:用evo把ROS地图和SLAM轨迹画在一起(附避坑指南)

从零实现ROS地图与SLAM轨迹可视化&#xff1a;evo高阶应用实战 在SLAM算法开发过程中&#xff0c;我们经常需要将算法输出的运动轨迹与已知环境地图进行对比验证。这种直观的可视化能快速暴露定位漂移、建图误差等关键问题。本文将手把手教你使用evo工具实现ROS标准地图与SLAM轨…...

死锁(Deadlock)

什么是死锁 死锁是多个进程或线程因竞争资源而陷入相互等待的状态,若无外力干预,所有进程或线程将无法继续执行。例如各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进的现象就是死锁。 什么时候产生死锁 互斥条件:在一段时间内某资源只由一个进程或线程占…...

大疆无人机二次开发:从机载OSDK到云端API的实战选择指南

1. 大疆无人机二次开发的两大路径 第一次接触大疆无人机二次开发的朋友&#xff0c;往往会纠结一个问题&#xff1a;到底该选择机载端的OSDK还是云端的API&#xff1f;这个问题就像买车时要选手动挡还是自动挡——没有绝对的好坏&#xff0c;关键看你的驾驶习惯和路况需求。 我…...

终极指南:Secretive应急备份方案 - Secure Enclave无法访问时的完整恢复策略

终极指南&#xff1a;Secretive应急备份方案 - Secure Enclave无法访问时的完整恢复策略 【免费下载链接】secretive Protect your SSH keys with your Macs Secure Enclave 项目地址: https://gitcode.com/gh_mirrors/se/secretive Secretive是一款专为Mac用户设计的SS…...

TCP 长连接服务:登录注册认证体系实战指南

TCP 长连接服务&#xff1a;登录注册认证体系实战指南 在 IM 即时通讯、游戏服务、物联网设备通信等 TCP 长连接场景中&#xff0c;连接准入认证是服务安全的第一道防线。 我们需要实现一套「先认证、后业务」的流程&#xff1a;客户端 TCP 连接建立后&#xff0c;不直接开放业…...

BFF 架构决策与落地实践:从第一性原理到工程取舍

在主导过多个前后端分离项目的架构演进后&#xff0c;我对 BFF 这一层有了更系统的审视。它并非一个必须存在的组件&#xff0c;而是在特定约束下为解决特定问题而产生的架构模式。理解它&#xff0c;需要回到问题本源&#xff0c;厘清收益与代价&#xff0c;再谈如何落地。 一…...

用Python和sklearn搞定百度慧眼数据:从抓包到坐标转换的完整实战

Python实战&#xff1a;百度慧眼数据爬取与坐标转换全流程解析 当我们需要分析城市人流分布时&#xff0c;百度慧眼提供的热力图数据是个不错的选择。但直接从API获取的数据往往需要经过一系列处理才能用于分析。本文将带你完整走通从数据获取到坐标转换的整个流程&#xff0c;…...

StarRocks数据类型深度解析:从基础到复杂,构建高效数据模型

1. StarRocks数据类型全景概览 第一次接触StarRocks时&#xff0c;我被它丰富的数据类型体系惊艳到了。作为一款面向实时分析场景的MPP数据库&#xff0c;StarRocks的数据类型设计既考虑了传统数仓的严谨性&#xff0c;又兼顾了互联网业务对灵活性的需求。在实际项目中&#xf…...

【GitHub项目推荐--Plane:开源版 JIRA,让项目管理回归“有序”】⭐⭐⭐

GitHub 地址&#xff1a;https://github.com/makeplane/plane 简介 Plane​ 是一个现代化的开源项目管理平台&#xff0c;被广泛认为是 JIRA、Linear 和 Asana 的开源替代品。它专为追求效率的研发和产品团队设计&#xff0c;将问题跟踪、敏捷迭代、文档协作和产品路线图统一在…...