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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python可以通过两种不同的方法来实现将文字转成语音。第一种方法是将文字转成语音文件,然后通过读取语音文件实现发音。第二种方法是直接调用系统内置的语音引擎来实现发音,这种方法通常需要使用第三方库。 下面是一个示例代码,展示了如何使用Python实现将文字转成语音: ```python import pygame def chinese_to_pinyin(x): y = '' dic = {} with open("unicode_pinyin.txt") as f: for i in f.readlines(): dic[i.split()[0]] = i.split()[1] for i in x: i = str(i.encode('unicode_escape'))[-5:-1].upper() try: y += dic[i + ' ' except: y += 'XXXX ' return y def make_voice(x): pygame.mixer.init() voi = chinese_to_pinyin(x).split() for i in voi: if i == 'XXXX': continue pygame.mixer.music.load("voice/" + i + ".mp3") pygame.mixer.music.play() while pygame.mixer.music.get_busy() == True: pass return None while True: p = input("请输入文字:") make_voice(p) ``` 这段代码实现了将文字转成拼音,并通过调用pygame库来播放相应的语音文件。需要注意的是,在运行代码之前,需要将"unicode_pinyin.txt"文件和语音文件放在同一目录下。此代码只是一个简单的示例,因为主要用于教学目的,所以没有处理多音字(默认使用第一个使用频率最高的音)。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Python将文字转成语音并读出来](https://blog.csdn.net/sinat_29957455/article/details/86352095)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Python文字(汉字)转语音https://zhuanlan.zhihu.com/p/26726297](https://blog.csdn.net/john_snowly/article/details/77253302)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值