51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

4K Star! 这款开源edge-tts效果超过ChatTTS,支持粤语方言、陕西方言、台湾方言等语音合成,关键是还免费~

背景介绍

今天给大家分享一款开源语音合成技术TTS项目edge-tts, 其底层是使用微软edge的在线合成服务。在中文语音合成方面,除了普通话外,支持地方口音(比如: 陕西方言、台湾口音、粤语等等),ChatTTS目前是不支持方言语音合成。 下面进入我们今天的主题~

本文目录

  • edge-tts开源项目介绍

  • edge-tts语音合成教程

    • 安装对应的环境

    • 查看edge-tts支持的语言

  • 基于命令行端-来生成语音教程

    • 合成对应的香港话、粤语语音-效果展示

    • 合成对应陕西方言语音-效果展示

    • 合成对应男语音-效果展示

    • 合成对应台湾口音-效果展示

    • 调整合成语音的语速--rate参数

    • 调整合成语音的音量--volume

    • 调整合成语音的频率--pitch

    • 基于python代码-来合成语音

  • 参考文档

edge-tts开源项目介绍

edge-tts是github上高赞的开源文本合成语音TTS项目,该项目截止目前点赞累计点赞达4k! 该项目核心就是调用微软edge的在线语音合成服务,支持40多种语言,318种声音;其中在中文方面,除了普通话外,支持地方口音(比如: 陕西方言、台湾口音、粤语等等),效果可以说是吊打ChatTTS。下面我给大家实操如何利用edge-tts来实现多种方言的语音合成。

edge-tts语音合成教程

安装对应的环境

!pip install edge-tts
!pip install torchaudio
import edge_tts
print("edge_tts:", edge_tts.__version__) 
#edge_tts: 6.1.12

查看edge-tts支持的语言

!edge-tts  --list-voices # 查看其支持的所有声音

基于命令行端-来生成语音教程

合成对应的香港话、粤语语音-效果展示

获得支持的香港话、粤语语音明细

!edge-tts  --list-voices| grep HK # TW
Name: en-HK-SamNeural
Name: en-HK-YanNeural
Name: zh-HK-HiuGaaiNeural
Name: zh-HK-HiuMaanNeural
Name: zh-HK-WanLungNeural

命令行合成生成对应的粤语效果

!edge-tts --voice zh-HK-WanLungNeural \
--text "曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。\
如果上天能够给我一个再来一次的机会,我会对那个女孩子说三个字:我爱你。\
如果非要在这份爱上加上一个期限,我希望是......一万年" --write-media test.mp3
import torchaudio
from IPython.display import Audio
waveform, sample_rate = torchaudio.load("test.mp3")
Audio(waveform, rate=sample_rate, autoplay=True)

运行的效果展示:

语音效果如下:

合成对应陕西方言语音-效果展示

!edge-tts  --list-voices |grep CN# 查看其支持的中国话
Name: zh-CN-XiaoxiaoNeural
Name: zh-CN-XiaoyiNeural
Name: zh-CN-YunjianNeural
Name: zh-CN-YunxiNeural
Name: zh-CN-YunxiaNeural
Name: zh-CN-YunyangNeural
Name: zh-CN-liaoning-XiaobeiNeural
Name: zh-CN-shaanxi-XiaoniNeural

命令行合成生成对应的陕西方言语音

!edge-tts --voice zh-CN-shaanxi-XiaoniNeural \
--text "曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。\
如果上天能够给我一个再来一次的机会,我会对那个女孩子说三个字:我爱你。\
如果非要在这份爱上加上一个期限,我希望是......一万年" --write-media test.mp3
import torchaudio
from IPython.display import Audio
waveform, sample_rate = torchaudio.load("test.mp3")
Audio(waveform, rate=sample_rate, autoplay=True)

语音效果如下:

合成对应男语音-效果展示

!edge-tts --voice zh-CN-YunyangNeural \
--text "曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。\
如果上天能够给我一个再来一次的机会,我会对那个女孩子说三个字:我爱你。\
如果非要在这份爱上加上一个期限,我希望是......一万年" --write-media test.mp3
import torchaudio
from IPython.display import Audio
waveform, sample_rate = torchaudio.load("test.mp3")
Audio(waveform, rate=sample_rate, autoplay=True)

语音效果如下:

合成对应台湾口音-效果展示

获得支持的台湾语音明细

!edge-tts  --list-voices| grep TW
Name: zh-TW-HsiaoChenNeural
Name: zh-TW-HsiaoYuNeural
Name: zh-TW-YunJheNeural

合成对应台湾语音

!edge-tts --voice zh-TW-YunJheNeural \
--text "曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。\
如果上天能够给我一个再来一次的机会,我会对那个女孩子说三个字:我爱你。\
如果非要在这份爱上加上一个期限,我希望是......一万年" --write-media test.mp3
import torchaudio
from IPython.display import Audio
waveform, sample_rate = torchaudio.load("test.mp3")
Audio(waveform, rate=sample_rate, autoplay=True)

语音效果如下:

调整合成语音的语速--rate参数

通过rate参数来设置播放的语速快慢,-30%表示语速变慢30%,+30%表示语速增加30%。

!edge-tts  --rate=-30%  --voice  zh-HK-WanLungNeural  \
--text "曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。\
如果上天能够给我一个再来一次的机会,我会对那个女孩子说三个字:我爱你。\
如果非要在这份爱上加上一个期限,我希望是......一万年" --write-media test.mp3
import torchaudio
from IPython.display import Audio
waveform, sample_rate = torchaudio.load("test.mp3")
Audio(waveform, rate=sample_rate, autoplay=True)

语音效果如下:

调整合成语音的音量--volume

通过--volume参数来设置播放的语速快慢,-60%表示语速变慢60%,+60%表示语速增加60%。

!edge-tts --volume=-50%  --voice  zh-HK-WanLungNeural  \
--text "曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。\
如果上天能够给我一个再来一次的机会,我会对那个女孩子说三个字:我爱你。\
如果非要在这份爱上加上一个期限,我希望是......一万年" --write-media test.mp3
import torchaudio
from IPython.display import Audio
waveform, sample_rate = torchaudio.load("test.mp3")
Audio(waveform, rate=sample_rate, autoplay=True)

调整合成语音的频率--pitch

通过pitch参数来调整合成语音的频率

!edge-tts --pitch=-50Hz  --voice  zh-HK-WanLungNeural  \
--text "曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。\
如果上天能够给我一个再来一次的机会,我会对那个女孩子说三个字:我爱你。\
如果非要在这份爱上加上一个期限,我希望是......一万年" --write-media test.mp3
import torchaudio
from IPython.display import Audio
waveform, sample_rate = torchaudio.load("test.mp3")
Audio(waveform, rate=sample_rate, autoplay=True)

语音效果如下:

基于python代码-来合成语音

import asyncio
import edge_tts
import torchaudio
from IPython.display import Audio
TEXT = """曾经有一份真诚的爱情放在我面前,我没有珍惜,等我失去的时候我才后悔莫及,人世间最痛苦的事莫过于此。
如果上天能够给我一个再来一次的机会,我会对那个女孩子说三个字:我爱你。如果非要在这份爱上加上一个期限,我希望是......一万年"""
VOICE = "zh-HK-HiuGaaiNeural" #选择对应的声音
OUTPUT_FILE = "test.mp3"
communicate = edge_tts.Communicate(TEXT, 
        VOICE,
        rate='+0%',
        volume= '+0%',
        pitch= '+50Hz')
communicate.save_sync(OUTPUT_FILE)
waveform, sample_rate = torchaudio.load(OUTPUT_FILE)
Audio(waveform, rate=sample_rate, autoplay=True)

语音效果如下:

参考文档

  1. https://github.com/rany2/edge-tts
赞(5)
未经允许不得转载:工具盒子 » 4K Star! 这款开源edge-tts效果超过ChatTTS,支持粤语方言、陕西方言、台湾方言等语音合成,关键是还免费~