29 KiB
(简体中文|English)
PaddleSpeech 是基于飞桨 PaddlePaddle 的语音方向的开源模型库,用于语音和音频中的各种关键任务的开发,包含大量基于深度学习前沿和有影响力的模型,一些典型的应用示例如下:
语音识别
语音翻译 (英译中)
语音合成
更多合成音频,可以参考 PaddleSpeech 语音合成音频示例。
标点恢复
输入文本 | 输出文本 |
---|---|
今天的天气真不错啊你下午有空吗我想约你一起去吃饭 | 今天的天气真不错啊!你下午有空吗?我想约你一起去吃饭。 |
特性
本项目采用了易用、高效、灵活以及可扩展的实现,旨在为工业应用、学术研究提供更好的支持,实现的功能包含训练、推断以及测试模块,以及部署过程,主要包括
- 📦 易用性: 安装门槛低,可使用 CLI 快速开始。
- 🏆 对标 SoTA: 提供了高速、轻量级模型,且借鉴了最前沿的技术。
- 🏆 流式ASR和TTS系统:工业级的端到端流式识别、流式合成系统。
- 💯 基于规则的中文前端: 我们的前端包含文本正则化和字音转换(G2P)。此外,我们使用自定义语言规则来适应中文语境。
- 多种工业界以及学术界主流功能支持:
- 🛎️ 典型音频任务: 本工具包提供了音频任务如音频分类、语音翻译、自动语音识别、文本转语音、语音合成、声纹识别、KWS等任务的实现。
- 🔬 主流模型及数据集: 本工具包实现了参与整条语音任务流水线的各个模块,并且采用了主流数据集如 LibriSpeech、LJSpeech、AIShell、CSMSC,详情请见 模型列表。
- 🧩 级联模型应用: 作为传统语音任务的扩展,我们结合了自然语言处理、计算机视觉等任务,实现更接近实际需求的产业级应用。
近期更新
- 👑 2022.05.13: PaddleSpeech 发布 PP-ASR 流式语音识别系统、PP-TTS 流式语音合成系统、PP-VPR 全链路声纹识别系统
- 👏🏻 2022.05.06: PaddleSpeech Streaming Server 上线! 覆盖了语音识别(标点恢复、时间戳),和语音合成。
- 👏🏻 2022.05.06: PaddleSpeech Server 上线! 覆盖了声音分类、语音识别、语音合成、声纹识别,标点恢复。
- 👏🏻 2022.03.28: PaddleSpeech CLI 覆盖声音分类、语音识别、语音翻译(英译中)、语音合成,声纹验证。
- 🤗 2021.12.14: PaddleSpeech ASR and TTS Demos on Hugging Face Spaces are available!
🔥 加入技术交流群获取入群福利
- 3 日直播课链接: 深度解读 PP-TTS、PP-ASR、PP-VPR 三项核心语音系统关键技术
- 20G 学习大礼包:视频课程、前沿论文与学习资料
微信扫描二维码关注公众号,点击“马上报名”填写问卷加入官方交流群,获得更高效的问题答疑,与各行各业开发者充分交流,期待您的加入。
安装
我们强烈建议用户在 Linux 环境下,3.7 以上版本的 python 上安装 PaddleSpeech。 目前为止,Linux 支持声音分类、语音识别、语音合成和语音翻译四种功能,Mac OSX、 Windows 下暂不支持语音翻译功能。 想了解具体安装细节,可以参考安装文档。
快速开始
安装完成后,开发者可以通过命令行快速开始,改变 --input
可以尝试用自己的音频或文本测试。
声音分类
paddlespeech cls --input input.wav
声纹识别
paddlespeech vector --task spk --input input_16k.wav
语音识别
paddlespeech asr --lang zh --input input_16k.wav
语音翻译 (English to Chinese)
paddlespeech st --input input_16k.wav
语音合成
paddlespeech tts --input "你好,欢迎使用百度飞桨深度学习框架!" --output output.wav
- 语音合成的 web demo 已经集成进了 Huggingface Spaces. 请参考: TTS Demo
文本后处理
- 标点恢复
paddlespeech text --task punc --input 今天的天气真不错啊你下午有空吗我想约你一起去吃饭
批处理
echo -e "1 欢迎光临。\n2 谢谢惠顾。" | paddlespeech tts
Shell管道 ASR + Punc:
paddlespeech asr --input ./zh.wav | paddlespeech text --task punc
更多命令行命令请参考 demos
快速使用服务
安装完成后,开发者可以通过命令行快速使用服务。
启动服务
paddlespeech_server start --config_file ./paddlespeech/server/conf/application.yaml
访问语音识别服务
paddlespeech_client asr --server_ip 127.0.0.1 --port 8090 --input input_16k.wav
访问语音合成服务
paddlespeech_client tts --server_ip 127.0.0.1 --port 8090 --input "您好,欢迎使用百度飞桨语音合成服务。" --output output.wav
访问音频分类服务
paddlespeech_client cls --server_ip 127.0.0.1 --port 8090 --input input.wav
更多服务相关的命令行使用信息,请参考 demos
快速使用流式服务
启动流式 ASR 服务
paddlespeech_server start --config_file ./demos/streaming_asr_server/conf/application.yaml
访问流式 ASR 服务
paddlespeech_client asr_online --server_ip 127.0.0.1 --port 8090 --input input_16k.wav
启动流式 TTS 服务
paddlespeech_server start --config_file ./demos/streaming_tts_server/conf/tts_online_application.yaml
访问流式 TTS 服务
paddlespeech_client tts_online --server_ip 127.0.0.1 --port 8092 --protocol http --input "您好,欢迎使用百度飞桨语音合成服务。" --output output.wav
模型列表
PaddleSpeech 支持很多主流的模型,并提供了预训练模型,详情请见模型列表。
PaddleSpeech 的 语音转文本 包含语音识别声学模型、语音识别语言模型和语音翻译, 详情如下:
语音转文本模块类型 | 数据集 | 模型类型 | 脚本 |
---|---|---|---|
语音识别 | Aishell | DeepSpeech2 RNN + Conv based Models | deepspeech2-aishell |
Transformer based Attention Models | u2.transformer.conformer-aishell | ||
Librispeech | Transformer based Attention Models | deepspeech2-librispeech / transformer.conformer.u2-librispeech / transformer.conformer.u2-kaldi-librispeech | |
TIMIT | Unified Streaming & Non-streaming Two-pass | u2-timit | |
对齐 | THCHS30 | MFA | mfa-thchs30 |
语言模型 | Ngram 语言模型 | kenlm | |
语音翻译(英译中) | TED En-Zh | Transformer + ASR MTL | transformer-ted |
FAT + Transformer + ASR MTL | fat-st-ted |
PaddleSpeech 的 语音合成 主要包含三个模块:文本前端、声学模型和声码器。声学模型和声码器模型如下:
语音合成模块类型 | 模型类型 | 数据集 | 脚本 |
---|---|---|---|
文本前端 | tn / g2p | ||
声学模型 | Tacotron2 | LJSpeech / CSMSC | tacotron2-ljspeech / tacotron2-csmsc |
Transformer TTS | LJSpeech | transformer-ljspeech | |
SpeedySpeech | CSMSC | speedyspeech-csmsc | |
FastSpeech2 | LJSpeech / VCTK / CSMSC / AISHELL-3 | fastspeech2-ljspeech / fastspeech2-vctk / fastspeech2-csmsc / fastspeech2-aishell3 | |
声码器 | WaveFlow | LJSpeech | waveflow-ljspeech |
Parallel WaveGAN | LJSpeech / VCTK / CSMSC / AISHELL-3 | PWGAN-ljspeech / PWGAN-vctk / PWGAN-csmsc / PWGAN-aishell3 | |
Multi Band MelGAN | CSMSC | Multi Band MelGAN-csmsc | |
Style MelGAN | CSMSC | Style MelGAN-csmsc | |
HiFiGAN | LJSpeech / VCTK / CSMSC / AISHELL-3 | HiFiGAN-ljspeech / HiFiGAN-vctk / HiFiGAN-csmsc / HiFiGAN-aishell3 | |
WaveRNN | CSMSC | WaveRNN-csmsc | |
声音克隆 | GE2E | Librispeech, etc. | ge2e |
GE2E + Tacotron2 | AISHELL-3 | ge2e-tacotron2-aishell3 | |
GE2E + FastSpeech2 | AISHELL-3 | ge2e-fastspeech2-aishell3 |
任务 | 数据集 | 模型类型 | 脚本 |
---|---|---|---|
声音分类 | ESC-50 | PANN | pann-esc50 |
声纹识别
任务 | 数据集 | 模型类型 | 脚本 |
---|---|---|---|
Speaker Verification | VoxCeleb12 | ECAPA-TDNN | ecapa-tdnn-voxceleb12 |
标点恢复
任务 | 数据集 | 模型类型 | 脚本 |
---|---|---|---|
标点恢复 | IWLST2012_zh | Ernie Linear | iwslt2012-punc0 |
教程文档
对于 PaddleSpeech 的所关注的任务,以下指南有助于帮助开发者快速入门,了解语音相关核心思想。
语音合成模块最初被称为 Parakeet,现在与此仓库合并。如果您对该任务的学术研究感兴趣,请参阅 TTS 研究概述。此外,模型介绍 是了解语音合成流程的一个很好的指南。
⭐ 应用案例
- PaddleBoBo: 使用 PaddleSpeech 的语音合成模块生成虚拟人的声音。
-
VTuberTalk: 使用 PaddleSpeech 的语音合成和语音识别从视频中克隆人声。
引用
要引用 PaddleSpeech 进行研究,请使用以下格式进行引用。
@inproceedings{zhang2022paddlespeech,
title = {PaddleSpeech: An Easy-to-Use All-in-One Speech Toolkit},
author = {Hui Zhang, Tian Yuan, Junkun Chen, Xintong Li, Renjie Zheng, Yuxin Huang, Xiaojie Chen, Enlei Gong, Zeyu Chen, Xiaoguang Hu, dianhai yu, Yanjun Ma, Liang Huang},
booktitle = {Proceedings of the 2022 Conference of the North American Chapter of the Association for Computational Linguistics: Human Language Technologies: Demonstrations},
year = {2022},
publisher = {Association for Computational Linguistics},
}
@inproceedings{zheng2021fused,
title={Fused acoustic and text encoding for multimodal bilingual pretraining and speech translation},
author={Zheng, Renjie and Chen, Junkun and Ma, Mingbo and Huang, Liang},
booktitle={International Conference on Machine Learning},
pages={12736--12746},
year={2021},
organization={PMLR}
}
参与 PaddleSpeech 的开发
热烈欢迎您在 Discussions 中提交问题,并在 Issues 中指出发现的 bug。此外,我们非常希望您参与到 PaddleSpeech 的开发中!
贡献者
致谢
-
非常感谢 yeyupiaoling/PPASR/PaddlePaddle-DeepSpeech/VoiceprintRecognition-PaddlePaddle/AudioClassification-PaddlePaddle 多年来的关注和建议,以及在诸多问题上的帮助。
-
非常感谢 mymagicpower 采用PaddleSpeech 对 ASR 的短语音及长语音进行 Java 实现。
-
非常感谢 JiehangXie/PaddleBoBo 采用 PaddleSpeech 语音合成功能实现 Virtual Uploader(VUP)/Virtual YouTuber(VTuber) 虚拟主播。
-
非常感谢 745165806/PaddleSpeechTask 贡献标点重建相关模型。
-
非常感谢 kslz 补充中文文档。
-
非常感谢 awmmmm 提供 fastspeech2 aishell3 conformer 预训练模型。
-
非常感谢 phecda-xu/PaddleDubbing 基于 PaddleSpeech 的 TTS 模型搭建带 GUI 操作界面的配音工具。
-
非常感谢 jerryuhoo/VTuberTalk 基于 PaddleSpeech 的 TTS GUI 界面和基于 ASR 制作数据集的相关代码。
-
非常感谢 vpegasus/xuesebot 基于 PaddleSpeech 的 ASR与TTS 设计的可听、说对话机器人
此外,PaddleSpeech 依赖于许多开源存储库。有关更多信息,请参阅 references。
License
PaddleSpeech 在 Apache-2.0 许可 下提供。