[Python系列] 文字转语音

2023-12-13 14:38:23

什么是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就可以很清楚地听到一个小女孩的声音,同时在命令行输出了字幕:

WEBVTT

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

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

在python中使用

# coding = utf-8
import asyncio

import edge_tts

sentence = 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 库,可以帮助用户实现文本到语音的转换。

文章来源:https://blog.csdn.net/u013379032/article/details/134873149
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。