ASR项目实战-前处理

这篇具有很好参考价值的文章主要介绍了ASR项目实战-前处理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文深入探讨前处理环节。
首先介绍一些基本的名词,比如

  • 文件名后缀
  • 文件格式
  • 音频格式
  • 采样率和位深

预备知识

文件名后缀、文件格式和音频格式

常见的音频文件,比如.wav.mp3.m4a.wma等,这些都代表什么?
仅仅是这类音频文件的后缀而已,不一定和音频文件的编码、音频数据的编码相关。

举例说明:

  • 比如.pcm
  • 比如.wav,一般保存的是带有wav规范文件头的,PCM格式的音频。
  • 比如.mp3,指的是保存Moving Picture Experts Group Audio Layer III格式的音频数据的文件。
  • 比如.m4a,和前两个后缀不同,并没有名为m4a的规范,实际指的是保存MPEG-4格式的音频数据的文件。虽然没有以.mp4为结尾,但实际上和.mp4文件遵循了相同的规范,仅仅是由于APPLE的数码产品大热,才让m4a流行起来。而m4a文件存储数据时,可以保存AAC格式编码的音频数据,也可以保存mp3格式编码的音频数据。
  • 比如.wma,微软公司出品,在Windows上可用的音频文件。

从上述介绍可知,各种文件的格式,和音频数据自身的格式,可以不同。了解到这一点,很重要。

一些参考资料:

  • m4a
  • 音频编码
  • PCM数据格式
  • 常见音频编码格式解析
  • 音频 PCM音频编码格式详解
  • AAC(高级音频编码)帧格式及编码介绍
  • 常见音频编码格式(注:编码格式不同于文件格式

采样率和位深

采样率,即1秒种之内,采集数据的频率。比如:

  • 电话录音一般为8K,即1秒钟内采集8000次。
  • CD音质为44.1KHZ,即1秒钟内采集441000次。
    显然,采样频率越高,采集到的数据量越大,丢失的信息越少,越接近于原始数据。

位深,即每个采集点,使用多少个二进制位来表达,常见的有:

  • 8位,对应1个字节。
  • 16位,对应2个字节。
  • 24位,对应3个字节。
    显然,位深越大,针对单个采集点的数据,表达的范围越大,越准确。

从抽象的角度看,人的声音,可以理解为信号,而信号可以通过FFT变换,转换为各种波的迭加。理解这一点,很重要。
人的声音,对于大数人而言,发音频率一般在4K以内,基于前述人声可使用信号来表达的理论,使用8K的采样频率,可以满足常见的诉求。

一些参考资料:

  • 人声频率范围
  • 人声频率表及各频段的处理方式

声道

相关的词汇有环绕立体声、左右声道等。
通常而言,一个收音设备可以产生一个声道的数据。对于高端会议、电影、流行音乐等,一般会有多个收音设备同时采集数据,因此在同一份音频文件中会产生多个声道。
这非常有助于还原现场的音效,给人以身临其境的美妙体验。

前处理的实现

在ASR项目实战-产品分析提到了ASR的前处理过程,包括如下几个环节:

  • 多音频格式的支持
  • 重采样
  • 多声道的处理
  • 降噪和去回声

对于上述多音频格式的支持重采样的支持多声道的支持,简单、有效、低成本的方法,可以使用FFmpeg来实现,有很多资料可以查阅。

不过在将FFmpeg应用到产品里时,特别需要关注其License的相关说明,以及如下文档:

  • GNU Lesser General Public License, version 2.1
  • GNU General Public License, version 2
  • Frequently Asked Questions about the GNU Licenses

从而选择恰当的集成方式。

如ASR项目实战-产品分析所介绍,降噪和去回声一般在收音设备上实现,较少通过软件来实现。主要原因是相关算法比较复杂,导致普通的交付团队会判定投入产出比太低。

对于多声道的处理,这里再多说几句。
分析Google的Speech To Text云服务API的文档,可以发现Google在多声道处理上有独到之处,提供了识别多声道的开关,同时允许指定要处理的声道的数量,代价是每个声道的处理,均要收费。
假如开发者传递的音频里存有多个声道,调用API时:

  • 没有开启声道的识别,则只处理第一个声道的音频数据。
  • 开启了声道的识别,但只指定了一个声道,则仅处理第一个声道的音频数据。
  • 开启了声道的识别,指定了多个声道,则将处理多个声道的音频数据。

对于云服务工程化交付团队而言,多声道的处理,存在一些让人纠结的地方,值得仔细思量,如下:文章来源地址https://www.toymoban.com/news/detail-764149.html

  1. 关于识别的时效性。假如开发者要求识别音频数据中多个声道的数据,那么工程团队首先需要将多个声道的数据抽取出来,保存至不同的音频文件中,接下来的识别有两个选项:
    1. 串行处理。将多个音频文件按照声道的顺序追加在一起,作为一个任务,提交给传递给引擎识别。这时总体的识别时长会变长,可能影响开发者使用API的体验。
    2. 并行处理。将多个音频文件,提交不同的识别任务。对开发者而言,识别的时长和单声道的音频文件类似。但对云服务团队而言,对任务调度、资源管理、结果组装即是一个考验。
  2. 关于识别结果的组装。对于接口如何定义,有比较大的挑战。
  3. 关于计费。Google的策略是一个声道即收一份钱。这里有一个问题,对于处理失败的音频,是否要收费。
    1. 假如识别失败时不收费,工程交付团队在实施时,需要区分识别成功、失败的场景,并做相应的记录,否则无法满足计费的要求。这个策略会引入一个问题,对于某些恶意人群,可能会反复提交存在问题的音频,导致算法引擎处理失败,这会占用云服务的资源,但却不必付出代价。
    2. 假如识别失败时仍然收费,对于工程交付团队而言,这个策略比较容易实现。唯一的问题在于,需要引导开发者乐意为识别失败的场景付费。

到了这里,关于ASR项目实战-前处理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Verilog中的force语句用来强制更改信号的值,特别适用于仿真和调试。本文将深入探讨force语句在FPGA开发中的应用和注意事项。

    Verilog中的force语句用来强制更改信号的值,特别适用于仿真和调试。本文将深入探讨force语句在FPGA开发中的应用和注意事项。 首先,我们需要了解force语句的语法。其基本格式为force [time] signal = value。其中,time是可选参数,表示在何时开始强制更改信号的值;signal是要更改的

    2024年02月12日
    浏览(95)
  • ASR项目实战-项目交付历程

    本文记录,作为项目主要负责人,完整参与语音识别项目的交付历程。 2019年12月中旬 接到项目交付任务,收集基本知识,启动业务分析工作。 2020年1月 完成竞品分析的整理。 梳理合作伙伴的清单,整理项目计划,启动和各合作伙伴的沟通工作。 启动架构方案、设计方案的

    2024年02月04日
    浏览(47)
  • ASR项目实战-语音识别

    本文深入探讨语音识别处理环节。 本阶段的重点特性为语音识别、VAD、热词、文本的时间偏移、讲话人的识别等。 业界流派众多,比如Kaldi、端到端等,具体选择哪一种,需要综合考虑人员能力、训练数据量和质量、硬件设施、交付周期等,作出相对合理的交付规划。 基于

    2024年02月04日
    浏览(49)
  • ASR项目实战-产品分析

    分析Google、讯飞、百度、阿里、QQ、搜狗等大厂的ASR服务,可以罗列出一款ASR服务所需要具备的能力。 ASR云服务产品,从用户体验、时效性、音频时长,可以划分为如下几类: 实时短音频转写,可以用于支撑输入法、搜索、导航等场景。 实时长音频转写,可以用于支撑视频

    2024年02月04日
    浏览(47)
  • ASR项目实战-数据

    使用机器学习方法来训练模型,使用训练得到的模型来预测语音数据,进而得到识别的结果文本,这是实现语音识别产品的一般思路。 本文着重介绍通用语音识别产品对于数据的诉求。 相关要求,如下: 地域,需要覆盖使用人群所在的地域,且数据的比例适中。 口音,需要

    2024年02月04日
    浏览(42)
  • ASR项目实战-架构设计

    一般而言,业务诉求作为架构设计的输入。 对于语音识别产品而言,需满足的需求,举例如下: 功能需求 文件转写。 长文件转写,时长大于60秒,小于X小时,X可以指定为5。 短文件转写,时长小于60秒。 实时语音识别。 长语音识别,时长大于60秒,小于Y小时,Y可以指定为

    2024年02月04日
    浏览(44)
  • ASR项目实战-决策点

    针对语音识别的产品,分别记录设计、开发过程中的决策点。 对于实时语音识别来说,客户端和服务端之间实时交换语音数据和识别的结果。 客户端在启动识别时,即开始发送语音数据,期望在等待较短的时间后,即收到最初的识别结果。第一段语音数据和第一个识别结果

    2024年02月04日
    浏览(54)
  • ASR项目实战-构建Kaldi

    软件清单如下: bzip2 python3 automake libtool cmake gcc g++ gfortran git subversion 不同平台安装软件的方式不同,比如可以使用 yum 或者 apt-get 等。 软件清单如下: Libunwind glog OpenFST OpenBLAS Kaldi 按照一定的规则,将下载后的文件放在指定目录,如下是样例 build.sh 的内容,如下为样例:

    2024年02月04日
    浏览(42)
  • ASR项目实战-方案设计

    对于语音识别产品的实施方案,给出简易的业务流程,仅供参考。 如下流程图,可以使用如下两个站点查看。 web chart Web Sequence Diagrams 创建文件转写任务 执行文件转写任务 获取转写结果 有两个方案,分别如下。二者差别,比如: 在语音识别的过程中,语音数据是否需要经

    2024年02月04日
    浏览(41)
  • ASR项目实战-交付团队的分工

    对于通常的软件项目,参与角色,比如可以有用户,消费者,产品团队,研发团队(研发团队包括开发和测试),运营团队,运维团队,管理团队。 通常认为,用户,负责购买服务的群体,而消费者,负责使用业务的群体。这两个群体,不在本文的讨论范围之内,因此后续的

    2024年02月04日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包