(简体中文|English)
PaddleSpeech 是一个基于 PaddlePaddle 平台的开源工具包,涵盖了语音和音频领域的多种关键任务,并集成了业界先进且有影响力的模型。
PaddleSpeech 荣获 NAACL2022 最佳演示奖,相关论文可在 Arxiv 查看。
更多合成音频示例,请参考 PaddleSpeech 语音合成示例。
| 输入文本 | 输出文本 |
|---|---|
| 今天的天气真不错啊你下午有空吗我想约你一起去吃饭 | 今天的天气真不错啊!你下午有空吗?我想约你一起去吃饭。 |
通过易用、高效、灵活且可扩展的实现,我们的愿景是赋能工业应用和学术研究,包括训练、推理与测试模块以及部署流程。具体而言,本工具包具有以下特点:
PaddleSpeech 流式服务端 可用于支持标点恢复和时间戳的流式 ASR 以及 TTS。PaddleSpeech 服务端 可用于 音频分类、自动语音识别、TTS、声纹识别和标点恢复。PaddleSpeech CLI 可用于 声纹识别。PaddleSpeech CLI 可用于 音频分类、自动语音识别、语音翻译(英译中)和 TTS。扫描下方微信二维码,即可加入官方技术交流群,并获取福利(超过 20GB 的学习资料,包括论文、代码和视频)以及课程的直播链接。期待您的参与。
我们强烈建议用户在 Linux 系统上,使用 python>=3.8 安装 PaddleSpeech。
PaddleSpeech 依赖于 paddlepaddle。安装时,请参考 paddlepaddle 官方网站 并根据您的机器选择。以下是 CPU 版本的示例。
pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
您也可以指定 paddlepaddle 的版本或安装开发版。
# 安装 2.4.1 版本。注意,2.4.1 仅是一个示例,请根据您的选择遵循 paddlepaddle 的最低依赖要求
pip install paddlepaddle==2.4.1 -i https://mirror.baidu.com/pypi/simple
# 安装开发版本
pip install paddlepaddle==0.0.0 -f https://www.paddlepaddle.org.cn/whl/linux/cpu-mkl/develop.html
PaddleSpeech 有两种快速安装方式:pip 安装和源码编译(推荐)。
pip install pytest-runner
pip install paddlespeech
git clone https://github.com/PaddlePaddle/PaddleSpeech.git
cd PaddleSpeech
pip install pytest-runner
pip install .
# 如果需要以可编辑模式安装,需要使用 --use-pep517。命令如下:
# pip install -e . --use-pep517
更多安装问题,如 conda 环境、librosa 依赖、gcc 问题、kaldi 安装等,请参考安装文档。如果在安装过程中遇到问题,您可以在 #2150 留言查找相关问题。
开发者可以通过 PaddleSpeech 命令行 或 Python 来体验我们的模型。通过更改 --input 参数来测试您自己的音频/文本,支持 16k wav 格式音频。
您也可以在 AI Studio 快速体验 👉🏻 PaddleSpeech API Demo
测试音频样本下载:
wget -c https://paddlespeech.cdn.bcebos.com/PaddleAudio/zh.wav
wget -c https://paddlespeech.cdn.bcebos.com/PaddleAudio/en.wav
paddlespeech asr --lang zh --input zh.wav
**Python API 体验**
>>> from paddlespeech.cli.asr.infer import ASRExecutor
>>> asr = ASRExecutor()
>>> result = asr(audio_file="zh.wav")
>>> print(result)
我认为跑步最重要的就是给我带来了身体健康
paddlespeech tts --input "你好,欢迎使用百度飞桨深度学习框架!" --output output.wav
**Python API 体验**
>>> from paddlespeech.cli.tts.infer import TTSExecutor
>>> tts = TTSExecutor()
>>> tts(text="今天天气十分不错。", output="output.wav")
- 您可以在 [Huggingface Spaces](https://huggingface.co/spaces) 体验 [TTS Demo](https://huggingface.co/spaces/KPatrick/PaddleSpeechTTS)
paddlespeech cls --input zh.wav
**Python API 体验**
>>> from paddlespeech.cli.cls.infer import CLSExecutor
>>> cls = CLSExecutor()
>>> result = cls(audio_file="zh.wav")
>>> print(result)
Speech 0.9027186632156372
paddlespeech vector --task spk --input zh.wav
**Python API 体验**
>>> from paddlespeech.cli.vector import VectorExecutor
>>> vec = VectorExecutor()
>>> result = vec(audio_file="zh.wav")
>>> print(result) # 187维向量
[ -0.19083306 9.474295 -14.122263 -2.0916545 0.04848729
4.9295826 1.4780062 0.3733844 10.695862 3.2697146
-4.48199 -0.6617882 -9.170393 -11.1568775 -1.2358263 ...]
paddlespeech text --task punc --input 今天的天气真不错啊你下午有空吗我想约你一起去吃饭
**Python API 体验**
>>> from paddlespeech.cli.text.infer import TextExecutor
>>> text_punc = TextExecutor()
>>> result = text_punc(text="今天的天气真不错啊你下午有空吗我想约你一起去吃饭")
今天的天气真不错啊!你下午有空吗?我想约你一起去吃饭。
paddlespeech st --input en.wav
**Python API 体验**
>>> from paddlespeech.cli.st.infer import STExecutor
>>> st = STExecutor()
>>> result = st(audio_file="en.wav")
['我 在 这栋 建筑 的 古老 门上 敲门 。']
开发者可以通过 PaddleSpeech Server 命令行 体验语音服务。
您可以在 AI Studio 快速体验(推荐):SpeechServer
启动服务端
paddlespeech_server start --config_file ./demos/speech_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
更多关于服务端命令行的信息,请参见:语音服务演示
启动流式语音识别服务端
paddlespeech_server start --config_file ./demos/streaming_asr_server/conf/application.yaml
访问流式语音识别服务
paddlespeech_client asr_online --server_ip 127.0.0.1 --port 8090 --input input_16k.wav
启动流式语音合成服务端
paddlespeech_server start --config_file ./demos/streaming_tts_server/conf/tts_online_application.yaml
访问流式语音合成服务
paddlespeech_client tts_online --server_ip 127.0.0.1 --port 8092 --protocol http --input "您好,欢迎使用百度飞桨语音合成服务。" --output output.wav
PaddleSpeech 支持一系列最流行的模型。这些模型总结在发布模型中,并附有可用的预训练模型。
语音转文本 包含 声学模型、语言模型 和 语音翻译,详情如下:
| 语音转文本模块类型 | 数据集 | 模型类型 | 示例 |
|---|---|---|---|
| 语音识别 | Aishell | DeepSpeech2 RNN + Conv 模型 | deepspeech2-aishell |
| 基于 Transformer 的注意力模型 | u2.transformer.conformer-aishell | ||
| Librispeech | 基于 Transformer 的注意力模型 | deepspeech2-librispeech / transformer.conformer.u2-librispeech / transformer.conformer.u2-kaldi-librispeech | |
| TIMIT | 统一流式与非流式双通道 | u2-timit | |
| 对齐 | THCHS30 | MFA | mfa-thchs30 |
| 语言模型 | Ngram 语言模型 | kenlm | |
| 语音翻译(英译中) | TED En-Zh | Transformer + ASR MTL | transformer-ted |
| FAT + Transformer + ASR MTL | fat-st-ted | ||
语音合成 主要包括三个模块:文本前端、声学模型 和 声码器。声学模型和声码器模型如下:
| 语音合成模块类型 | 模型类型 | 数据集 | 示例 |
|---|---|---|---|
| 文本前端 | tn / g2p | ||
| 声学模型 | Tacotron2 | LJSpeech / CSMSC | tacotron2-ljspeech / tacotron2-csmsc |
| Transformer TTS | LJSpeech | transformer-ljspeech | |
| SpeedySpeech | CSMSC | speedyspeech-csmsc | |
| FastSpeech2 | LJSpeech / VCTK / CSMSC / AISHELL-3 / ZH_EN / 微调 | fastspeech2-ljspeech / fastspeech2-vctk / fastspeech2-csmsc / fastspeech2-aishell3 / fastspeech2-zh_en / fastspeech2-finetune | |
| ERNIE-SAT | VCTK / AISHELL-3 / ZH_EN | ERNIE-SAT-vctk / ERNIE-SAT-aishell3 / ERNIE-SAT-zh_en | |
| DiffSinger | Opencpop | ||