PaddleSpeech:首个粤语合成模型开源,识讲粤语真喺大晒嘅

PaddleSpeech发布了首个粤语语音合成模型,基于FastSpeech2和HifiGAN,提供CLI和PythonAPI接口,支持本地离线部署。文章还介绍了如何使用模型并优化粤语合成的口语化表达。此外,建议在前端加入翻译模型以提升合成效果。
摘要由CSDN通过智能技术生成

★★★ 本文源自AlStudio社区精品项目,【点击此处】查看更多精品内容 >>>

背景

✨ 众所周知,粤语是除了普通话之外第二大中文语言(想当年,粤语差点就成了国语),也是世界上为数不多被联合国定义为“语言”的方言。
✨ 据官方统计,目前全球有将近1.2亿人口在使用粤语(冤有头债有主,数据来源:2019年《关于粤语传承与保护现状的调查报告》)。
✨ 同时粤语是香港、澳门的官方语言,除此之外,还有一个冷知识:粤语是美国和加拿大的第三大语言,是澳大利亚的第四大语言。更冷的一个知识点是,如果一个人只身前往东南亚国家旅游,懂粤语可以节省一大笔请翻译的费用。
某个知名二次元视频网站没有粤语审核!🤫

哪怕你不知道这些冷知识,但是你一定看过以下港剧的名场面👀:

特别声明:⬆️上述图片仅用作演示,图片内容不代表个人和平台立场。

根据字幕大家都能知道是什么意思,但却不知道怎么读,有的人会读,但是因为音发不准导致这句话的气势就丧失掉🐶。你们笑广东人说的广(港)式普通话的同时,其实我们也在笑你们的塑料粤语。

为了让大家告别塑料粤语,让自己同时也让机器能说一口标准的粤语——

PaddleSpeech 承载了1.2亿人口的理想,不负众望,开源了社区首个粤语语音合成模型,在此感谢子龙和她强大的实习生 WongLaw 为粤语传承(超越国语称霸世界千秋万代💪)做出的亿点贡献🎉。

事不宜迟,下面就用粤语天花板难度的句子——各个国家有各个国家的国歌,为大家演示如何使用粤语语音合成模型。

快速体验

下载和安装PaddleSpeech

!git clone https://gitee.com/paddlepaddle/PaddleSpeech.git
%cd PaddleSpeech
!pip install . --user
%cd ..

CLI快速体验

!paddlespeech tts --am fastspeech2_canton \
                --voc hifigan_csmsc \
                --lang canton \
                --spk_id 10 \
                --input "各个国家有各个国家嘅国歌" \
                --output test_cli.wav \
                --use_onnx True

试听效果⬇️

import IPython
IPython.display.Audio('test_cli.wav')

Python API

from paddlespeech.cli.tts import TTSExecutor

tts_executor = TTSExecutor()
wav_file = tts_executor(
    text='各个国家有各个国家嘅国歌',
    am='fastspeech2_canton',
    voc='hifigan_csmsc',
    lang='canton',
    spk_id=10,
    use_onnx=True,
    output='api_1.wav',
    cpu_threads=2)
import IPython
IPython.display.Audio('api_1.wav')

本地离线部署

如果你的部署需求是本地离线环境,可以将模型文件和对应的配置文件下载到本地,然后在参数中修改对应文件路径

!wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/fastspeech2/fastspeech2_canton_onnx_1.4.0.zip
!wget https://paddlespeech.bj.bcebos.com/Parakeet/released_models/hifigan/hifigan_csmsc_onnx_0.2.0.zip
!unzip fastspeech2_canton_onnx_1.4.0.zip
!unzip hifigan_csmsc_onnx_0.2.0.zip
from paddlespeech.cli.tts import TTSExecutor

tts_executor = TTSExecutor()
wav_file = tts_executor(
    text='喂!三点几嚟,饮茶先嚟,做咁多都冇用嘅,老细唔锡你嘅嚟',
    output='api_offline.wav',
    am='fastspeech2_canton',
    am_ckpt='fastspeech2_canton_onnx_1.4.0/fastspeech2_canton.onnx',
    phones_dict='fastspeech2_canton_onnx_1.4.0/phone_id_map.txt',
    speaker_dict='fastspeech2_canton_onnx_1.4.0/speaker_id_map.txt',
    voc='hifigan_csmsc',
    voc_ckpt='hifigan_csmsc_onnx_0.2.0/hifigan_csmsc.onnx',
    lang='canton',
    spk_id=10,
    use_onnx=True,
    cpu_threads=2)
import IPython
IPython.display.Audio('api_offline.wav')

定制前端

虽然已经实现了粤语合成,但合成效果的优化工作仍任重道远,比如粤语口语的语法和表达与书面语有很大的差别。举两个例子,抱歉,有钱是真的能为所欲为的大象和猴子在玩耍 这两句话,如果硬要用粤语逐字直接说出来给广东人听,emmm为了你的人身安全着想我建议你还是不要这么干。因此,为了合成的粤语语音效果更加口语化,符合粤语表达习惯,我们需要在合成前,对输入文本进行处理。在PaddleSpeech中,合成前的文本处理工作在文本前端(Frontend)部分完成。

PaddleSpeech粤语前端源代码链接:https://github.com/PaddlePaddle/PaddleSpeech/blob/develop/paddlespeech/t2s/frontend/canton_frontend.py

💡商用落地我推荐在前端部分加入一个中文->粤语的翻译模型(可自行训练或调用百度翻译的商业API)。
💡如果不想投入太多成本,对生成效果要求不高,你可以在前端源代码加入规则,将常用的词汇做转换替代即可。

def diy_frontend(ori_text):
    synonym_dict = {
                "大象":"大笨象",
                "在": "喺度",
                "和": "同紧",
                "猴子": "马骝",
                "玩耍": "玩",
                "抱歉": "对唔住",
                "是真的": "真喺",
                "能": "可以",
                "的": "嘅"
            }
    for w in synonym_dict:
        text = ori_text.replace(w, synonym_dict[w])
        ori_text = text
    return text

# 书面表达直接生成
import os
os.system('paddlespeech tts  --input "抱歉,有钱是真的能为所欲为的" --am fastspeech2_canton --voc hifigan_csmsc --lang canton --spk_id 10 --output test_without_translate.wav --use_onnx True')

# 口语化转换后生成
sentence_translated = diy_frontend("抱歉,有钱是真的能为所欲为的")
os.system(f'paddlespeech tts  --input "{sentence_translated}" --am fastspeech2_canton --voc hifigan_csmsc --lang canton --spk_id 10 --output test_with_translate.wav --use_onnx True')

书面表达直接生成效果:

import IPython
IPython.display.Audio('test_without_translate.wav')

对唔住,3秒的音频听了0.5秒之后血压已经开始飙升了🩸
还是让我们听下正宗地道的口语表达方式吧:

import IPython
IPython.display.Audio('test_with_translate.wav')

还是这个表达听起来正常舒服很多!😄

训练方案

PaddleSpeech的粤语语音合成模型基于大家熟悉的FastSpeech2,详细的数据集、文本对齐(MFA)和训练方法已开源至Github,如果有需要用自己定制的数据集finetune或者重新训练的开发者,可以参考以下文档进行训练:

https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/examples/canton/tts3

关注PaddleSpeech

喜欢的同学可以点个 ⭐️star⭐️ 支持PaddleSpeech,PaddleSpeech传送门:https://github.com/PaddlePaddle/PaddleSpeech
🎁 学习过程中你遇到任何问题,可以加入PaddleSpeech的交流群进行讨论。

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值