0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

在NGC容器中体验中英文混合语音识别方案

NVIDIA英伟达 来源:NVIDIA英伟达 2023-05-05 11:00 次阅读

PaddleSpeech 又带着新功能和大家见面了。本次更新,为开发者们带来了基于端到端语音识别模型 Conformer 的中英文混合语音识别方案,通过命令行和 Python 可以快速体验,也根据 PaddleSpeech 模型训练方案定制与业务场景相关的语音识别模型。欢迎广大开发者使用 NVIDIA 与飞桨联合深度适配的 NGC 飞桨容器,在 NVIDIA GPU 上体验 PaddleSpeech 中英文混合语音识别方案。

本次 PaddleSpeech 发布的中英文语音识别预训练模型 Conformer_talcs 以通过 PaddleSpeech 封装的命令行工具 CLI 或者 Python 接口快速使用,开发者们可以基于此搭建自己的智能语音应用,也可以参考示例训练自己的中英文语音识别模型。

示例链接:

https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/examples/tal_cs/asr1

快速体验

使用命令行工具 CLI 快速体验语音识别效果,命令如下:

```bash
paddlespeech asr --model conformer_talcs --lang zh_en --codeswitch True --input ./ch_zh_mix.wav -v


# 终端输出:今天是 monday 明天是 tuesday
```

Python 接口快速体验,代码实现如下:

```python
>>> import paddle
>>> from paddlespeech.cli.asr import ASRExecutor
>>> asr_executor = ASRExecutor()
>>> text = asr_executor(
    model='conformer_talcs',
    lang='zh_en',
    sample_rate=16000,
    config=None,
    ckpt_path=None,
    audio_file='./ch_zh_mix.wav',
    codeswitch=True,
    force_yes=False,
    device=paddle.get_device())
>>> print('ASR Result: 
{}'.format(text))
ASR Result:
今天是 monday 明天是 tuesday
```

1.中英文语音识别技术

1.1 中英文语音识别难点

中英文语音识别相较于单语言的语音识别而言,主要难点如下:

1) 数据量少

中英混合数据相较于单语言的数据更少。目前开源的中文语音识别数据集如 WenetSpeech(10000 小时有监督,2500 小时弱监督,10000 小时无监督)、英文语音识别数据集 Giga Speech(10000 小时有监督,33000 小时无监督)都达到了万小时级别,但是混合的开源中英文语音识别数据只有 SEAME (120小时)和 TAL_CSASR (587小时) 两个开源数据,混合数据集比单语言数据集会更少。

2) 中英相似发音易混淆

中英文语音识别需要一个单一的模型来学习多种语音,相似但具有不同含义的发音通常会导致模型的复杂度和计算量增加,同时由于它需要区分处理不同语言的类似发音,因此在模型建模时就需要按照不同语言区分不同的建模单元。

1.2 PaddleSpeech 中英文语音识别方案

1.2.1 模型选择与介绍

本方案使用了一种端到端语音识别模型 Conformer U2 模型,其采用了 Joint CTC/Attention with Transformer or Conformer 的结构。训练时使用 CTC 和 Attention Loss 联合优化,并且通过 dynamic chunk 的训练技巧,使 Shared Encoder 能够处理任意大小的 chunk(即任意长度的语音片段)。其还使用 CTC-Prefix Beam Search 和 Attention Decoder 的方式进行解码,得到最终结果,同时实现了流式和非流式的语音识别,支持控制推理延迟。

本次 PaddleSpeech 开源的预训练模型,是非流式的端到端识别 Conformer U2 模型,chunk 中包含全部上下文信息,需要整句输入进行识别。如果你想训练流式中英文语音识别模型,也可以参考 PaddleSpeech 的 Conformer U2/U2++模型流式语音识别的示例训练自己的流式中英文语音识别模型。

示例链接:

https://github.com/PaddlePaddle/PaddleSpeech/tree/develop/examples/wenetspeech/asr1

39f355a6-e6ab-11ed-ab56-dac502259ad0.png

Conformer U2 结构示意图[1]

1.2.2 数据集介绍

本次使用了 TAL_CSASR 中英混合语音数据集。语音场景为语音授课音频,包括中英混合讲课的情况,总计 587 小时语音。

数据集下载地址:https://ai.100tal.com/dataset

3a0c93ae-e6ab-11ed-ab56-dac502259ad0.png

数据集介绍[2]

1.2.3 中英混合语音识别建模单元

在中文语音识别系统中,常采用音素、汉字、词等作为声学模型的建模单元,在英文语音识别系统中则常采用英文音素、国际音标、子词等作为声学模型的建模单元。

本次 PaddleSpeech 开源的预训练中英文语音识别模型是采用端到端语音识别模型 Conformer U2,未接入语言模型,使用了中文字/词加英文子词的建模方法,将中英文分开建模,通过模型推理,直接得到识别后的结果。

3a24b376-e6ab-11ed-ab56-dac502259ad0.png

1.2.4 试验结果对比

由于本项目使用的是中英文混合数据集,所以我们选择混合错误率(MER,Mix Error Rate)作为评价指标,中文部分计算字错误率(CER,Character Error Rate),英文部分计算词错误率(Word Error Rate)。测试数据集选择 TAL_CSASR 中已经划分好的测试集。由于不同的解码方式识别的效果不同,这里我们使用 Attention、CTC Greedy Search、CTC Prefix Beam Search、Attention Rescoring 四种解码方式进行试验,解码效果最佳为 Attention Rescoring,混合错误率 MER 为 0.084,折算为我们常说的语音识别正确率 91.6%。

3a37b4c6-e6ab-11ed-ab56-dac502259ad0.png

1.2.5 进一步优化与效果提升

当前中英文语音识别方案的效果还有进一步提升的空间,比如在 Conformer U2 模型后面加入 Language Model,通过语言模型学习中英文语言信息, PaddleSpeech 中提供了基于 N-Gram 的语言模型训练方案。此外,可以在训练过程中加入 Language ID,使用 token 级别或者帧级别的语言 ID 标注信息,可以进一步提高中英文语音识别的效果。如果你有更大的中英文混合数据集或者是场景相关的数据集,可以通过微调或者进一步训练,提高在业务场景中的识别效果。

2.PaddleSpeech 语音识别技术介绍

除了中英文混合的 Conformer U2 模型以外,飞桨语音模型库 PaddleSpeech 中包含了多种语音识别模型,能力涵盖了声学模型、语言模型、解码器等多个环节,支持多种语言。目前 PaddleSpeech 已经支持的语音识别声学模型包括 DeepSpeech2、Transfromer、Conformer U2/U2 ++,支持中文和英文的单语言识别以及中英文混合识别;支持 CTC 前束搜索(CTC Prefix Beam Search)、CTC 贪心搜索(CTC Greedy Search)、注意力重打分(Attention Rescoring)等多种解码方式;支持 N-Gram 语言模型、有监督多语言大模型 Whisper、无监督预训练大模型 wav2vec2;同时还支持服务一键部署,可以快速封装流式语音识别和非流式语音识别服务。

通过 PaddleSpeech 提供的命令行工具 CLI 和 Python 接口可以快速体验上述功能。通过 PaddleSpeech 精品项目合集,可以在线体验 PaddleSpeech 的优秀项目,上面更有核心开发者精心打造的《飞桨 PaddleSpeech 语音技术课程》,帮助开发者们快速入门。

3. NGC 飞桨容器介绍

如果您希望体验 PaddleSpeech 的新特性,欢迎使用 NGC 飞桨容器。NVIDIA 与百度飞桨联合开发了 NGC 飞桨容器,将最新版本的飞桨与最新的 NVIDIA 的软件栈(如 CUDA)进行了无缝的集成与性能优化,最大程度的释放飞桨框架在 NVIDIA 最新硬件上的计算能力。这样,用户不仅可以快速开启 AI 应用,专注于创新和应用本身,还能够在 AI 训练和推理任务上获得飞桨+ NVIDIA 带来的飞速体验。

最佳的开发环境搭建工具 - 容器技术

容器其实是一个开箱即用的服务器。极大降低了深度学习开发环境的搭建难度。例如你的开发环境中包含其他依赖进程(redis,MySQL,Ngnix,selenium-hub 等等),或者你需要进行跨操作系统级别的迁移

容器镜像方便了开发者的版本化管理

容器镜像是一种易于复现的开发环境载体

容器技术支持多容器同时运行

3a63c49e-e6ab-11ed-ab56-dac502259ad0.png

最好的 PaddlePaddle 容器

NGC 飞桨容器针对 NVIDIA GPU 加速进行了优化,并包含一组经过验证的库,可启用和优化 NVIDIA GPU 性能。此容器还可能包含对 PaddlePaddle 源代码的修改,以最大限度地提高性能和兼容性。此容器还包含用于加速 ETL (DALI, RAPIDS)、训练(cuDNN, NCCL)和推理(TensorRT)工作负载的软件。

PaddlePaddle 容器具有以下优点:

适配最新版本的 NVIDIA 软件栈(例如最新版本 CUDA),更多功能,更高性能

更新的 Ubuntu 操作系统,更好的软件兼容性

按月更新

满足 NVIDIA NGC 开发及验证规范,质量管理

通过飞桨官网快速获取

3a7564ba-e6ab-11ed-ab56-dac502259ad0.png

环境准备

使用 NGC 飞桨容器需要主机系统(Linux)安装以下内容:

Docker 引擎

NVIDIA GPU 驱动程序

NVIDIA 容器工具包

有关支持的版本,请参阅 NVIDIA 框架容器支持矩阵NVIDIA 容器工具包文档

不需要其他安装、编译或依赖管理。无需安装 NVIDIA CUDA Toolkit。

NGC 飞桨容器正式安装:

要运行容器,请按照 NVIDIA Containers For Deep Learning Frameworks User’s Guide 中 Running A Container 一章中的说明发出适当的命令,并指定注册表、存储库和标签。有关使用 NGC 的更多信息,请参阅 NGC 容器用户指南。如果您有 Docker 19.03 或更高版本,启动容器的典型命令是:

docker run --gpus all --shm-size=1g --ulimit memlock=-1 -it --rm nvcr.io/nvidia/paddlepaddle:22.08-py3

4.飞桨与 NVIDIA NGC 合作介绍

NVIDIA 非常重视中国市场,特别关注中国的生态伙伴,而当前飞桨拥有超过 535 万的开发者。在过去五年里我们紧密合作,深度融合,做了大量适配工作,如下图所示。

3a963e92-e6ab-11ed-ab56-dac502259ad0.png

今年,我们将飞桨列为 NVIDIA 全球前三的深度学习框架合作伙伴。我们在中国已经设立了专门的工程团队支持,赋能飞桨生态。

为了让更多的开发者能用上基于 NVIDIA 最新的高性能硬件和软件栈。当前,我们正在进行全新一代 NVIDIA GPU H100 的适配工作,以及提高飞桨对 CUDA Operation API 的使用率,让飞桨的开发者拥有优秀的用户体验及极致性能。

以上的各种适配,仅仅是让飞桨的开发者拥有高性能的推理训练成为可能。但是,这些离行业开发者还很远,门槛还很高,难度还很大。

为此,我们将刚刚这些集成和优化工作,整合到三大产品线中。其中 NGC 飞桨容器最为闪亮。

NVIDIA NGC Container – 最佳的飞桨开发环境,集成最新的 NVIDIA 工具包(例如 CUDA)。

3aaaa29c-e6ab-11ed-ab56-dac502259ad0.png      

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    4592

    浏览量

    101713
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4417

    浏览量

    126689
  • 语音识别
    +关注

    关注

    37

    文章

    1635

    浏览量

    111833
  • 容器
    +关注

    关注

    0

    文章

    481

    浏览量

    21876
  • NGC
    NGC
    +关注

    关注

    0

    文章

    8

    浏览量

    3777

原文标题:开发者必看:在 NGC 容器中体验中英文混合语音识别方案

文章出处:【微信号:NVIDIA_China,微信公众号:NVIDIA英伟达】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    labview中英文界面切换小程序

    课程推荐>>每天1小时,龙哥手把手教您LabVIEW视觉设计许多程序都有中英文界面切换功能,这边网友动手做了一个中英文界面切换的小程序labview8.5:[hide][/hide]labview2009:[hide] [/hide]
    发表于 12-12 16:09

    Altium 中英文对照表

    求Altium 中英文对照表!{:soso_e163:}
    发表于 09-02 10:40

    LABview中英文切换

    哪位大神有labview8.5中英文切换的插件!!!求发一份不胜感激!!
    发表于 06-26 20:57

    AD元器件中英文对照

    AD元器件中英文对照
    发表于 04-19 15:56

    LabVIEW文本控件的中英文编码问题?

    Unicode,当然文本要在控件中正常显示,而不是显示编码的十六进制。主要是为了对中英文混合的字符串进行操作。最好能提供实例的程序供我参考,谢谢!
    发表于 04-29 09:32

    protues元件中英文对照

    protues元件中英文对照。。。。。。。。。。。。。。。。。。
    发表于 12-11 13:53

    Proteus器件库 中英文对照

    proteus 器件库中英文对照
    发表于 07-29 16:54

    Verilog黄金参考(中英文

    Verilog黄金参考(中英文
    发表于 09-26 14:10

    如何实现选项卡控件的中英文切换!!!

    我要做一个中英文切换的功能,现在按钮什么的都能切换(用的标签和标题切换实现),但是选项卡不能切换成中英文,现在我用lce试了试也是没有头绪,希望大神们帮帮忙!!!!!
    发表于 01-17 16:37

    元器件中英文对照

    元器件中英文对照
    发表于 02-09 23:33

    关于程序中英文切换的问题

    程序界面要实现中英文切换,现在都有哪些方法,目前自己用的LCE工具包。但是程序有点庞大,界面有点多,全部切换起来有点费时,给位大佬还有什么快捷的方法吗。。
    发表于 10-24 09:21

    LABVIEW程序怎么设置中英文切换

    我做了一个程序,上级要求最好能做成中英双文(不是软件语言,是写出来的程序的语言),然后我就像通过控件标签文本属性来设置,做一个中英文的枚举,英文显示默认标签,中文显示中文,可是运行程序切换语言会出现如图报错,请问有人帮忙解答一下
    发表于 02-29 21:20

    电机铭牌参数中英文对照

    电机铭牌参数中英文对照及简介
    发表于 01-28 06:25

    讲讲AD的中英文切换方法

    如何去切换Altium Designer界面的中英文输入法呢?
    发表于 02-14 06:10

    DFRobot Gravity: 中英文语音合成模块

    语音合成模块 DFRobot-Gravity: 中英文语音合成模块 无论是中文还是英文对于语音合成模块来说都是so easy,播报当前时间,
    发表于 09-07 16:29 883次阅读