[Python系列] 文字转语音

什么是TTS

        TTS 是 Text-to-Speech 的缩写,中文称为“文本到语音”。它是一种将书面文本转换为自然听起来的语音的技术。TTS 技术广泛应用于各种场景,如智能助手、语音合成、电子阅读器等。
        TTS 技术通过机械的、电子的方法产生人造语音。它隶属于语音合成,是将计算机生成的或外部输入的文字信息转变为可以听得懂的、流利的汉语口语输出的技术。TTS 技术可以方便地为视力障碍人士阅读文本,为智能设备提供人性化的交互方式等。
        常见的 TTS 技术实现方式有拼接合成、参数合成和端到端合成等。其中,拼接合成是将多个预录制的语音片段拼接成完整的语音;参数合成是通过调整语音参数生成自然音色的语音;端到端合成则是直接将文本转换为语音,无需中间环节。

常用的TTS工具

微软的tts工具,由于非常真实,现在很多营销号都在使用

文本转语音 – 真实 AI 语音生成器 | Microsoft Azure

Google 文字转语音:https://texttospeech.google.com/
Amazon Polly:https://aws.amazon.com/polly/
Adobe Acrobat:https://www.adobe.com/products/acrobat.html
Balabolka:https://www.balabolka.com/
Natural Reader:https://www.naturalreaders.com/

Python实现文字转语音

edge-tts介绍

edge-tts 是一个 Python 库,它基于微软的 Azure Cognitive Services 实现了文本到语音转换(TTS)的功能。这个库提供了一个简单的 API,可以将文本转换为语音,并且支持多种语言和声音。edge-tts 继承了 Azure 的文本转语音功能,但它是免费使用的,这让用户能够方便地在本地进行文本到语音的转换。

安装

使用 edge-tts 需要先安装这个库,可以通过 pip 命令来安装:

pip install edge-tts

安装完成后,可以通过命令行或者 Python 代码来使用 edge-tts。例如,通过命令行,用户可以输入以下命令来将文本转换为语音:

edge-tts --text "你好,世界" --voice zh-CN-XiaoyiNeural --write-media output.mp3

其中 --voice参数是选择具体的语音,我们可以用以下命令查看具体有哪些语音

edge-tts --list-voices
Name: af-ZA-AdriNeural Gender: Female
........
........
........
Name: zh-CN-XiaoxiaoNeural Gender: Female
Name: zh-CN-XiaoyiNeural Gender: Female
Name: zh-CN-YunjianNeural Gender: Male
Name: zh-CN-YunxiNeural Gender: Male
Name: zh-CN-YunxiaNeural Gender: Male
Name: zh-CN-YunyangNeural Gender: Male
Name: zh-CN-liaoning-XiaobeiNeural Gender: Female
Name: zh-CN-shaanxi-XiaoniNeural Gender: Female
Name: zh-HK-HiuGaaiNeural Gender: Female
Name: zh-HK-HiuMaanNeural Gender: Female
Name: zh-HK-WanLungNeural Gender: Male
Name: zh-TW-HsiaoChenNeural Gender: Female
Name: zh-TW-HsiaoYuNeural Gender: Female
Name: zh-TW-YunJheNeural Gender: Male
Name: zu-ZA-ThandoNeural Gender: Female
Name: zu-ZA-ThembaNeural Gender: Male

我们查看output.mp3就可以很清楚地听到一个小女孩的声音,同时在命令行输出了字幕:

WEBVTT00:00:00.100 --> 00:00:01.550
你好 世界

我们可以把这些字幕输入到视频剪辑文件中,就可以自动添加字幕了。

在python中使用

# coding = utf-8
import asyncioimport edge_ttssentence = r'这是一个句子'
voice = 'zh-CN-XiaoxiaoNeural'async def convert_to_mp3(text, rate, volume):tts = edge_tts.Communicate(text=text, voice=voice, rate=rate, volume=volume)await tts.save('output.mp3')asyncio.run(convert_to_mp3(sentence, '+10%', '+50%'))

        这段代码会创建一个 EdgeTTS 对象,将文本 “这是一个句子” 转换成语音,并使用中文的语音,最后将输出的音频文件保存为 output.mp3。
        edge-tts 还提供了许多其他的选项,例如可以通过 --rate 和 --volume 选项来调整语速和音量,或者通过 --list-voices 选项来查看可用的语音列表。

总之,edge-tts 是一个方便、免费且功能强大的 Python 库,可以帮助用户实现文本到语音的转换。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/206904.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

对Spring源码的学习:一

目录 BeanFactory开发流程 ApplicationContext BeanFactory与ApplicationContext对比 基于XML方式的Bean的配置 自动装配 BeanFactory开发流程 这里的第三方指的是Spring提供的BeanFactory,Spring启动时会初始化BeanFactory,然后读取配置清单&#…

外汇天眼:什么时段做外汇交易最好,有所谓的“最佳时间点”吗?

在外汇交易的时候,很多手动交易的投资者不知道到底什么时间段操作交易最适合自己。 我们在进行选择最佳交易时间的时候,一定要明白各时间段的全球各个市场的交易状况,这样你才能分配好自己的时间。 当然在通过技术分析与基本分析选择好币种后…

PostgreSQL 索引介绍和使用事项

索引内容 关键点 索引是一种数据结构,用于加快数据库查询的速度。它类似于书籍的目录,可以快速定位到特定的数据页。 PG数据库支持多种类型的索引,包括B树索引、哈希索引、GiST索引、SP-GiST索引和GIN索引等。 B树索引是PG数据库中最常用的…

Google刚发布AlphaCode 2,让我们码农多了个小伙伴一起干活

除了其Gemini生成式人工智能模型之外,谷歌今天早上发布了AlphaCode 2,这是谷歌DeepMind实验室大约一年前推出的代码生成AlphaCode的改进版本。 事实上,AlphaCode 2实际上由Gemini提供支持,或者至少是由Gemini的某个变体&#xff…

Linux学习教程(第十五章 Linux系统日志管理)

第十五章 Linux系统日志管理 系统日志详细地记录了在什么时间,哪台服务器、哪个程序或服务出现了什么情况。不管是哪种操作系统,都详细地记录了重要程序和服务的日志,只是我们很少养成查看日志的习惯。 日志是系统信息最详细、最准确的记录者…

煤炭物流行业分析:中国各个分布地区生产占比调研

煤炭物流是指从煤炭生产所需物料进入企业开始,直至把商品煤运达客户为止的全过程的物流活动。广义的讲,煤炭物流包括煤炭企业原材料的采购、原煤开采、洗选加工、储存、运输、销售以及矿岩等废弃物的综合利用诸多环节。狭义的讲,煤炭物流是指…

基于个微机器人的开发

简要描述: 下载消息中的动图 请求URL: http://域名/getMsgEmoji 请求方式: POST 请求头Headers: Content-Type:application/jsonAuthorization:login接口返回 参数: 参数名必选类型说明…

spring boot 事件机制

目录 概述实践监听spring boot ready事件代码 源码初始化流程调用流程 结束 概述 spring boot 版本为 2.7.17 。 整体看一下spring及spring boot 相关事件。 根据下文所给的源码关键处,打上断点,可以进行快速调试。降低源码阅读难度。 实践 spring…

TCP聊天

一、项目创建 二、代码 Client类 package tcp;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; import java.util.Scanner;public class Client {public static void m…

电子学会C/C++编程等级考试2022年06月(四级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:公共子序列 我们称序列Z = < z1, z2, ..., zk >是序列X = < x1, x2, ..., xm >的子序列当且仅当存在 严格上升 的序列< i1, i2, ..., ik >,使得对j = 1, 2, ... ,k, 有xij = zj。比如Z = < a, b, f, c &…

QT Windos平台下打包应用程序

一、windeployqt.exe windeployqt&#xff1a;是 Qt 框架自带的一个工具&#xff0c;用于将一个 Qt 应用程序在 Windows 操作系统下进行打包。它可以通过扫描应用程序的依赖项获取所需的 Qt 库文件、插件和翻译文件&#xff0c;以及复制应用程序可执行文件和所需的依赖项到指定…

电商价格数据监测接口/品牌商品控价接口/商品数据分析接口/比价搜索API接口,超详细的接口说明

电商价格数据监测API接口是一种用于监测电商平台上商品价格的API接口&#xff0c;可以帮助品牌和商家及时获取商品价格信息&#xff0c;掌握价格动态&#xff0c;进行价格对比和分析&#xff0c;以更好地制定价格策略和进行价格调整。 该接口可以监测多个电商平台的商品价格信…

VM:Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256m

Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize256m; support was removed in 8.0 “JDK 8兼容性指南” 指出&#xff0c;在Java 8中&#xff0c;命令行标志 MaxPermSize 已被删除。原因是永久代从热点堆中被移除并被转移到本地内存。所以为了删除…

【C++】:搜索二叉树

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关多态的知识点&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a;从入门到精通 数据结…

C语言之动态内存管理(malloc calloc realloc)

C语言之动态内存管理 文章目录 C语言之动态内存管理1. 为什么要有动态内存管理2. malloc 和 free2.1 malloc2.2 free2.3 例子 3. calloc 和 realloc3.1 calloc3.2 realloc 4. 常见的动态内存错误4.1 对NULL指针的解引⽤操作4.2 对动态开辟空间的越界访问4.3 对⾮动态开辟内存使…

女装品牌网站建设的作用如何

服装是任何人都需要的必备品&#xff0c;尤其是女装&#xff0c;由于女性群体爱美追求时尚的心理更高&#xff0c;因此市场中有大量女装品牌以及大量消费者&#xff0c;其规模非常高&#xff0c;众多大小品牌林立及消费征集下&#xff0c;商家们经营也并不太容易&#xff0c;企…

Themis: Fast, Strong Order-Fairness in Byzantine Consensus

目录 笔记后续的研究方向摘要引言秩序井然 Themis: Fast, Strong Order-Fairness in Byzantine Consensus CCS 2023 笔记 后续的研究方向 摘要 我们介绍了Themis&#xff0c;这是一种将交易的公平排序引入&#xff08;许可的&#xff09;拜占庭共识协议的方案&#xff0c;最…

参加百度Apollo技术沙龙—感受自动驾驶的魅力

2023年12月2日下午2点&#xff0c;我有幸参加了百度Apollo技术沙龙&#xff0c;这是一个围绕Apollo新版本Beta的全面升级展开的深度交流活动。作为一名工程师&#xff0c;我深感荣幸能够与众多同行和专家一同探讨自动驾驶技术的快速发展 在这次沙龙中&#xff0c;我了解到Apo…

Python:核心知识点整理大全7-笔记

目录 4.2.5 遗漏了冒号 4.3 创建数值列表 4.3.1 使用函数 range() 4.3.2 使用 range()创建数字列表 结果如下&#xff1a; 4.3.3 对数字列表执行简单的统计计算 4.3.4 列表解析 4.4 使用列表的一部分 4.4.1 切片 4.4.2 遍历切片 4.4.3 复制列表 4.2.5 遗漏了冒号 fo…

使用vue-quill-editor(富文本框)禁用粘贴图片

问题描述&#xff1a;富文本框复制粘贴未走上传图片接口&#xff0c;会将复制的图片解析为base64编码&#xff0c;为了控制这种情况可选择禁用粘贴图片&#xff0c;或者监听有复制粘贴的图片走上传图片接口 获取到 quill 对象&#xff0c;可以通过 refs 或者 Quill 对象的 getI…