DeepSpeech 0.6:Mozilla 的语音转文字引擎变得快速、精简且无处不在

Mozilla 的机器学习团队继续致力于 DeepSpeech,这是一种自动语音识别 (ASR) 引擎,旨在将语音识别技术和训练模型公开提供给开发者。DeepSpeech 是一种基于深度学习的 ASR 引擎,具有简单的 API。我们还提供预训练的英语模型。

我们最新的版本 v0.6 提供了迄今为止质量最高、功能最丰富的模型。在本概述中,我们将展示 DeepSpeech 如何通过启用客户端、低延迟和隐私保护的语音识别功能来改变您的应用程序。

持续低延迟

DeepSpeech v0.6 包含大量性能优化,旨在让应用程序开发者更容易使用该引擎,而无需对系统进行微调。我们新的流式解码器提供了最大的改进,这意味着 DeepSpeech 现在可以提供一致的低延迟和内存利用率,无论要转录的音频长度如何。应用程序开发者可以获取部分转录,而无需担心出现大的延迟峰值。

DeepSpeech 由两个主要子系统组成:声学模型和解码器。声学模型是一个深度神经网络,接收音频特征作为输入,并输出字符概率。解码器使用波束搜索算法将字符概率转换为文本转录,然后由系统返回。

一篇之前的博客文章中,我讨论了我们如何使声学模型可流式传输。现在这两个系统都能够流式传输,应用程序中不再需要仔细调整的静音检测算法。 dabinat 是 DeepSpeech 代码库的长期志愿者贡献者,他贡献了此功能。感谢他!

在下图中,您可以看到同一音频文件在 DeepSpeech 中实时处理,分别是在解码器优化之前和之后。该程序在大约每秒请求一个中间转录,同时转录音频。虚线表示程序已收到最终转录的时间。然后,从音频信号末端到虚线的距离表示用户停止说话后必须等待多长时间才能计算出最终转录,并且应用程序能够做出响应。

This diagram compares the latency of DeepSpeech before and after the decoder optimizations.

在这种情况下,最新版本的 DeepSpeech 在音频结束后的 260 毫秒内提供了转录,比实施流式解码器之前快 73%。对于更长的录音,这种差异会更大。音频文件第 2 秒和第 3 秒的中间转录请求也在短时间内返回。

保持低延迟对于保持用户对应用程序的参与度和满意度至关重要。DeepSpeech 支持低延迟语音识别服务,无论网络状况如何,因为它可以在用户设备上离线运行。

TensorFlow Lite、更小的模型、更快的启动时间

我们添加了对 TensorFlow Lite 的支持,这是一个针对移动和嵌入式设备优化的 TensorFlow 版本。这将 DeepSpeech 包的大小从 98 MB 减少到 3.7 MB。它将我们的英语模型大小从 188 MB 减少到 47 MB。我们通过 训练后量化 完成了此操作,这是一种在训练完成后压缩模型权重的技术。TensorFlow Lite 是为移动和嵌入式设备设计的,但我们发现它在 DeepSpeech 中甚至在桌面平台上也更快。因此,我们将其在 Windows、macOS 和 Linux 以及 Raspberry Pi 和 Android 上提供。使用 TensorFlow Lite 的 DeepSpeech v0.6 在 Raspberry Pi 4 的单个核心上运行速度快于实时。

下图比较了 DeepSpeech 版本 v0.4.1、v0.5.1 和我们最新版本 v0.6.0 的启动时间和峰值内存使用情况。

This bar graph compares start-up time and peak memory utilization for the last three DeepSpeech versions: v0.4.1, v0.5.1, and v0.6.0

我们现在使用少 22 倍的内存启动速度快 500 倍以上。与我们应用于语言模型的优化相结合,包括推理代码和经过训练的英语模型的完整 DeepSpeech 包现在减少了 50% 以上

API 中的置信度值和时间元数据

此外,新的解码器公开了时间和置信度元数据,为应用程序提供了新的可能性。我们现在在 API 中提供了扩展的功能集,而不仅仅是文本转录。您还可以获得转录中每个字符的时间元数据信息,以及每个句子的置信度值。

下面的示例显示了从 DeepSpeech 中提取的来自示例音频文件的时间元数据。API 返回的每个字符的时间都分组为单词时间。您可以在下面看到波形。单击“播放”按钮收听示例。

Te Hiku Media 正在使用 DeepSpeech 开发和部署第一个 毛利语 自动语音识别器。他们一直在探索使用我们新解码器中的置信度元数据来构建毛利语数字发音助手。最近,他们从新西兰的战略科学投资基金获得了 1300 万新西兰元投资,用于构建 Papa Reo,一个多语言平台。他们从新西兰英语和毛利语开始。

Windows/.NET 支持

DeepSpeech v0.6 现在为 Windows 提供了软件包,包括 .NET、Python、JavaScript 和 C 绑定。Windows 支持是人们一直要求的功能,由 Carlos Fonseca 贡献,他编写了 .NET 绑定和示例。感谢 Carlos!

您可以通过查看 WPF 示例(如下图所示)找到有关 Windows 支持的更多详细信息。它使用 .NET 绑定在 DeepSpeech 周围创建一个小型 UI。我们的 .NET 软件包在 NuGet Gallery 中提供。您可以直接从 Visual Studio 安装它。

This image shows a screenshot of the WPF example.

您可以看到我们存储库中提供的 WPF 示例。它包含演示从音频文件以及从麦克风或其他音频输入设备进行转录的代码。

集中式文档

我们已将所有语言绑定的文档集中在一个网站上,deepspeech.readthedocs.io。您可以找到 C、Python、.NET、Java 和 NodeJS/Electron 软件包的文档。鉴于提供的各种语言绑定,我们希望让查找适合您平台的正确文档变得更容易。

训练模型的改进

随着 TensorFlow 1.14 的升级,我们现在利用了 CuDNN RNN API 用于我们的训练代码。此更改使我们的训练时间快了大约 2 倍,这意味着更快的实验和更好的模型。

除了更快的训练,我们现在还支持在线特征增强,如 Google 的 SpecAugment 论文 中所述。此功能由 Iara Health 贡献,这是一家巴西初创公司,为医疗专业人员提供转录服务。Iara Health 已使用在线增强来改进他们的生产 DeepSpeech 模型。

上面的视频展示了一位客户使用 Iara Health 系统。通过使用语音命令和听写,用户指示程序加载模板。然后,在查看 MRI 扫描结果时,他们口述他们的发现。用户可以在不打字的情况下完成报告。Iara Health 已针对这种专门的用例训练了自己的巴西葡萄牙语模型。

最后,我们还删除了所有假定已知采样率为 16kHz 的剩余点。DeepSpeech 现在完全能够以不同的采样率训练和部署模型。例如,您现在可以更容易地使用电话数据训练和使用 DeepSpeech 模型,电话数据通常以 8kHz 记录。

试用 DeepSpeech v0.6

DeepSpeech v0.6 版本 包括我们的语音识别引擎以及经过训练的英语模型。我们为六个平台提供二进制文件,并且如上所述,具有对各种编程语言的绑定,包括 Python、JavaScript、Go、Java 和 .NET。

包含的英语模型是在来自 Common Voice EnglishLibriSpeechFisherSwitchboard 的 3816 小时转录音频上训练的。该模型还包括大约 1700 小时的转录 WAMU(NPR)广播节目。它在 LibriSpeech 测试干净基准上实现了 7.5% 的单词错误率,并且在 Raspberry Pi 4 的单个核心上比实时速度更快。

DeepSpeech v0.6 包含了我们迄今为止最好的英语模型。但是,用于训练它的数据大部分是美式英语。因此,它在其他英语方言和口音上的表现并不像它可能的那样好。其他语言和方言中缺乏公开可用的语音数据是 Common Voice 被创建的部分原因。我们希望构建一个未来,让威尔士语、巴斯克语或苏格兰英语的使用者能够使用与目前美式英语、德语或普通话等拥有大型市场的语言使用者相同的质量标准的语音技术。

想参与 Common Voice 吗?你可以通过阅读一小段文字来捐赠你的声音。或者验证 40 种不同语言的现有录音,更多语言即将推出。目前,Common Voice 代表着世界上最大的公共领域转录语音数据集。该数据集包含近 2400 小时的语音数据,涵盖 29 种语言,包括英语、法语、德语、西班牙语和普通话,以及威尔士语和卡比尔语等。

v0.6 版本现已在 GitHub 以及您最喜欢的包管理器上提供。您可以下载我们的预训练模型,并在几分钟内开始使用 DeepSpeech。如果您想了解更多信息,可以在 GitHub 版本 中找到详细的版本说明;安装和使用说明可以在我们的 README 中找到。如果您没有找到所需内容,也可以使用我们的 讨论论坛

关于 Reuben Morais

Reuben Morais 是 Mozilla 机器学习团队的高级研究工程师。他目前专注于缩短机器学习研究与现实世界应用之间的差距,为用户带来隐私保护的语音技术。

更多 Reuben Morais 的文章…


19 条评论

  1. Wojtek

    您好,这看起来真的很棒。新版本是否有在线演示?

    2019 年 12 月 5 日 上午 2:19

    1. Reuben Morais

      我们没有在线演示,因为重点是客户端识别。我们尝试过一些在浏览器中运行它的选项,但技术还没有到位。

      2019 年 12 月 5 日 下午 2:13

      1. Jonathan Beri

        您是否尝试过 tensorflow.js 或 WebAssembly?Wasm 在某些浏览器中对线程和 SIMD 提供实验性支持。https://github.com/mozilla/DeepSpeech/issues/2233

        2019 年 12 月 5 日 下午 4:59

        1. Reuben Morais

          我们很久以前就尝试过,但它仍然很粗糙,我们无法让任何东西正常工作。我应该过一段时间再看看它。

          2019 年 12 月 9 日 下午 1:14

          1. Mendy

            真的很想看到这个!感谢您所做的一切出色工作!

            2019 年 12 月 13 日 上午 7:53

  2. MUN

    太棒了

    2019 年 12 月 5 日 下午 2:01

  3. Olaf

    嗨,

    非常感谢您做这个!您的 git 仓库将 cuda 列为唯一 GPU 后端。据我所知,tensorflow 也有 AMD 版本,而且似乎运行得很好(人们声称 Radeon VII 与 2080ti 的速度差不多,参见 https://github.com/ROCmSoftwarePlatform/tensorflow-upstream/issues/362)。您是否有机会在 DeepSpeech 中测试过它?

    2019 年 12 月 8 日 上午 8:46

    1. Reuben Morais

      我们没有明确地针对 CUDA,它只是使用 TensorFlow 的结果。此外,我们的本机客户端针对低延迟进行了优化。优化的用例是软件在用户的机器上本地运行,并在录制时转录单一音频流(可能来自麦克风)。我们的模型在 CPU 上的运行速度已经超过了实时速度,因此无需进行大量的 GPU 优化。我们构建并发布 GPU 软件包,以便人们可以进行实验,并且我们不会意外地破坏 GPU 支持,但不会在那里进行重大的优化推力。

      2019 年 12 月 9 日 下午 1:13

  4. TViT

    您好 Reuben Morais。请告诉我您在哪里可以详细阅读 Deep Speech 所基于的识别原理。也许有视频详细介绍了各个步骤。例如,我正在为一个具有 16kB RAM 的小型微控制器开发自己的语音识别项目——ERS VCRS。在我的视频中,从头到尾都展示了所有内容。

    2019 年 12 月 9 日 下午 1:08

    1. Reuben Morais

      DeepSpeech 不适用于该硬件,该模型对于 16kB 的 RAM 太大了。您可以在此处阅读更多相关信息:https://arxiv.org/abs/1412.5567

      2019 年 12 月 9 日 下午 1:12

  5. Joe

    当您谈论客户端功能时,它还没有在 web 浏览器中的 javascript 上运行在客户端,对吧?

    2019 年 12 月 11 日 上午 6:14

    1. Reuben Morais

      我们正在努力将其集成到 Firefox 中,但还没有任何具体内容可以分享。人们已经在客户端部署了它,与 web 前端交互,但目前它需要在机器上运行一个额外的组件。

      2019 年 12 月 12 日 上午 3:12

  6. ida

    您好,
    我很高兴看到一个图形界面正在被构建,这样即使技术水平较低的用户也可以开始使用 DeepSpeech(与 Google 和 Apple 产品等相比)。
    然而,即使在搜索了 3 个小时并尝试之后,我还是不明白如何让 DeepSpeechWPF 运行。我找到了这段代码 https://deepspeech.readthedocs.io/en/v0.6.0/DotNet-contrib-examples.html 和这个仓库 https://github.com/mozilla/DeepSpeech/tree/v0.6.0/examples/net_framework/DeepSpeechWPF,但是请发布一些对于技术水平较低的用户来说易于理解的说明,因为我认为我们是最需要图形界面的用户。
    祝一切顺利
    ida

    2019 年 12 月 12 日 上午 3:07

    1. Reuben Morais

      您好,
      WPF 示例并非面向技术水平较低的用户,而是面向 Windows 开发人员,以便他们拥有一个使用他们熟悉的框架的示例。我不知道有任何针对技术水平较低用户的 DeepSpeech 图形界面。我认为,拥有这样的东西会很好。

      2019 年 12 月 12 日 上午 3:09

  7. Paul

    我对 DeepSpeech 的主要兴趣是将其用于一个开源家庭自动化系统,该系统不需要我的语音数据离开我的本地网络/产生潜在的安全问题。

    您是否在 DeepSpeech 中做了任何事情将其集成到像 MQTT 这样的程序中?

    由于各种开源解决方案可以轻松使用 MQTT 作为进入多个其他系统的网关,我想知道是否有人打算尝试在 DeepSpeech 和 MQTT 之间创建一个简单的接口。

    2019 年 12 月 20 日 下午 7:36

    1. Reuben Morais

      我不知道有任何 MQTT 集成。

      2019 年 12 月 21 日 上午 2:17

      1. Paul

        如果编写了一个中间应用程序来获取 DeepSpeech 的输出并将其管道传输到 MQTT,则集成可能并不难。甚至可能自己解决这个问题。

        是否有任何方法让 DeepSpeech 在不需要先将其转换为音频文件的情况下收听您的声音?类似于带有触发词的 Alexa。音频文件只是在输入端增加了另一层复杂性,这使得使用 DeepSpeech 比某些云解决方案不太实用。

        2019 年 12 月 21 日 上午 3:12

        1. Reuben Morais

          DeepSpeech 对音频文件没有依赖性。API 接收音频样本作为输入,它们可以来自文件、麦克风或网络流,我们不在乎。

          2019 年 12 月 21 日 上午 4:01

  8. Paul

    酷!

    2019 年 12 月 21 日 上午 4:05

本文的评论已关闭。