Edge-TTS是一个由微软推出的Python库,用于将文本转换为语音。它利用了微软Azure Cognitive Services的功能,无需Microsoft Edge、Windows或API密钥即可使用。该库支持40多种语言和300种声音,为用户提供高质量的语音输出。作为国内付费TTS服务的替代品,Edge-TTS在GitHub上获得了超过3000颗星,受到了开发者们的广泛欢迎。 Edge-TTS的主要特点包括:

  1. 无需安装Microsoft Edge或Windows操作系统。2. 无需API密钥,直接使用。3. 支持40多种语言和300种声音选择。4. 提供高质量的语音输出,满足不同开发需求。5. 适用于需要语音功能的开发者。 总之,Edge-TTS是一个方便、高效的文本转语音工具,可以帮助开发者快速实现语音功能,提高用户体验。

     

1.安装部署

首先,你需要通过Python包管理工具pip来安装Edge-TTS库。只需在命令行中输入以下命令(没有python环境的自行配置一下):

1
pip install edge-tts

如果只想使用edge-tts和edge-playback命令,最好使用 pipx:

1
pipx install edge-tts

安装完成后,你就可以开始使用Edge-TTS来将文本转换为语音了。Edge-TTS支持多种语言和不同的声音选项,你可以根据需要选择合适的声音。

2.文本转语音

我们先来个hello world,只需要一行代码!

1
edge-tts --text "hello world" --write-media hello.mp3

执行完毕之后,会在你执行的目录下,生成hello.mp3文件

如果你想立即播放带有字幕的内容,可以使用以下edge-playback命令:

1
edge-playback --text "Hello, world!"

注意以上需要安装mpv命令行播放器。所有命令也都edge-tts可以工作。edge-playback

3.支持的语言和音色

edge-tts支持英语、汉语、日语、韩语、法语等40多种语言,共300多种可选声音,执行以下命令查询:

1
edge-tts --list-voices

如下图所示:

语音合成参数说明

在进行语音合成时,可以通过指定参数来选择不同的声音。以下是参数的详细说明:

  • Gender: 声音的性别。

  • Name: 声音的名称,格式为语言-国家或地区-声音名称,例如zh-CN-YunjianNeural

  • zh 表示语言为中文。

  • CN 表示国家或地区为中国。

  • YunjianNeural 为声音的具体名称。

使用示例

要使用特定的声音进行语音合成,可以使用--voice参数。例如,使用zh-CN-YunyangNeural声音合成中文音频的命令如下:

1
--voice zh-CN-YunyangNeural

注意事项

  • 确保选择的声音名称符合格式要求。

  • 根据需要选择合适的语言和国家或地区代码。

1
edge-tts --voice zh-CN-YunyangNeural --text "大家好,欢迎关注语音之家,语音之家是一个助理AI语音开发者的社区。" --write-media hello_in_cn.mp3

4.调整语速、音量和音调

可以对生成的语音进行细微修改。

1
2
3
4
5
$ edge-tts --rate=-50% --text "Hello, world!" --write-media hello_with_rate_halved.mp3 --write-subtitles hello_with_rate_halved.vtt

$ edge-tts --volume=-50% --text "Hello, world!" --write-media hello_with_volume_halved.mp3 --write-subtitles hello_with_volume_halved.vtt

$ edge-tts --pitch=-50Hz --text "Hello, world!" --write-media hello_with_pitch_halved.mp3 --write-subtitles hello_with_pitch_halved.vtt

语音合成服务的命令行和代码转换方法

1. 命令行转换

在使用命令行进行语音合成时,需要注意参数的正确格式。例如,使用 --rate=-50% 而不是 --rate -50%。如果缺少等号,-50% 将被错误地解释为另一个参数。

2. 代码转换

除了使用命令行,我们还可以通过编写代码来实现语音合成服务,并通过HTTP接口提供服务。

示例代码

以下是一个Python代码示例,该代码实现了语音合成功能。你可以将这段代码保存到一个名为 tts.py 的文件中。 python# 这里假设有一个名为tts.py的文件,包含了语音合成的代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
"""

Basic example of edge_tts usage.

"""

import asyncio

import edge_tts

TEXT = "大家好,欢迎关注语音之家,语音之家是一个助理AI语音开发者的社区。"

VOICE = "zh-CN-YunyangNeural"

OUTPUT_FILE = "d:/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()

运行python tts.py,稍等即可在d盘生成合成后的音频test.mp3。

关于 edge-playback 命令的说明

edge-playback 实际上是 edge-tts 的一个封装,用于播放生成的语音。它接受与 edge-tts 选项相同的参数。