1.本公开的各方面涉及音频信号,尤其涉及压缩和解压缩音频数据。
背景技术:2.许多设备使用一组特定的音调、声音或音乐来向用户传达操作状态。例如,许多游戏系统会发出不同的声音来指示设备正在开机、关机、弹出磁盘或根本没有磁盘。压缩算法被用来使存储相关联的音频数据更高效,但从成本和资源的角度来看,所需的解压缩通常是昂贵的。使用未经压缩的音频数据克服了这些限制,但存储效率低下。
3.折衷办法是降低音频信号的保真度。音调首先被以24位格式采样,并且随后被转换为16位格式。大约65,000个不同的值可以由16位(二进制)表示,但要以存储为代价。通过将音调的深度减少到8位,存储成本几乎减半,但信号的大部分保真度被丢失,因为仅128个不同的值可由8位表示。数据可被扩展回16位,但一旦保真度已被丢失,其便无法被恢复。
4.然而,音频数据的这种压缩和扩展已经在各种应用中被采用,以使它们的存储或带宽效率更高,即使以保真度为代价。例如,许多电话系统降低了承载语音通信的信号的保真度以便节省带宽。这具有使电话呼叫的声音不那么忠实于面对面交谈的声音的效果。
5.音频信号的大部分动态范围集中在其正弦波形的少数样本内。这意味着在音频信号被压缩时发生的保真度损失集中在动态范围的较低(或较柔和)部分上。将数据扩展到更大的深度可能有助于将数据置于适合进一步处理的格式中,但其不会返回到其原始保真度。结果是质量不良的可听信号,该可听信号缺少太多其原始动态范围——尤其是范围内的较低部分。
6.概览
7.本文公开了增强音频数据的压缩和解压缩的技术,从而在减轻解压缩的性能和成本影响的情况下相比其他方式允许在信号的较低范围内维持更大保真度。
8.在一实现中,音频信号的采样值具有动态范围。动态范围到至少一个较低范围和一个较高范围的划分是基于一些采样值到定量值(quanta)集合中的具有小于采样值的深度的深度的定量值子集的固定映射来被标识的。然后,采样值的剩余部分到定量值集合中的剩余定量值子集的自适应映射还至少基于较高范围的大小来被标识。固定映射用于编码采样值的较低范围,而自适应映射用于编码采样值的较高范围。
9.在另一实现中,存储器具有存储在其上的包括第一经编码值和第二经编码值的文件。第一经编码值包括在信号的动态范围的较低范围内、通过采样值的较低部分到定量值集合中的定量值子集的固定映射来被编码的采样值的较低部分。定量值集合具有小于采样值的深度的深度。第二经编码值包括在信号的动态范围的较高范围内、通过采样值的较高部分到定量值集合中的剩余定量值子集的自适应映射来被编码的采样值的较高部分。
10.该文件还包括用于将定量值集合映射到具有大于定量值集合的深度的深度的对应经解码值集合的密钥。与存储器可操作地耦合的一个或多个处理器读取文件,使用密钥将第一经编码值和第二经编码值映射到经解码值,并输出经解码值。
11.提供本概览以便以简化的形式介绍以下在技术公开中进一步描述的概念的选集。可以理解,本概览并不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。
12.附图简述
13.参考以下附图可更好地理解本公开的许多方面。附图中的组件不一定按比例绘制,而是重点放在清楚地解说本公开的原理上。而且,贯穿若干视图,附图中相同的附图标记表示对应的部分。尽管结合这些附图描述了若干实施例,但是本公开不局限于本文中所公开的这些实施例。相反,意图是要覆盖所有的替换方案、修改和等价物。
14.图1解说了音频数据压缩的一实现中的操作环境和相关场景。
15.图2解说了一实现中的编码过程。
16.图3解说了在解压缩或扩展的一实现中的操作环境和相关场景。
17.图4解说了一实现中的解码处理。
18.图5解说了一实现中的音频数据编码的示例。
19.图6解说了一实现中的音频数据解码的示例。
20.图7解说了一实现中的音频数据编码的示例。
21.图8解说了一实现中的音频数据解码的示例。
22.图9a和9b解说了固定映射和自适应映射的示例。
23.图10解说了适合于实现以下关于附图讨论的各种操作环境、架构、过程、场景和序列的计算设备。
24.详细描述
25.本文公开了用于使用固定和自适应映射方案来压缩音频数据以使得与先前的解决方案相比在更大程度上节省存储空间并保持保真度的技术。下面讨论的固定映射确保当音频数据从一个深度被向下转换到另一深度时信号动态范围的较低部分中的采样值被保留。自适应映射与可通过从一种音调或声音到另一种音调或声音的固定映射而获得的覆盖范围相适配。由固定和自适应映射产生的经编码值可连同用于解码这些值的密钥一起被写入音频文件。
26.该文件(相对于其原始对应物在大小上减小)可被部署在存储受约束的环境的上下文中,诸如为游戏机控制台、家庭和娱乐电器以及甚至一些贺卡驱动可听声音的微控制器。与资源匮乏的解压缩方案相比,将经编码值向上转换为适合播出的较大深度的板上(on
‑
board)过程是对这些值的直截了当的映射。并且如所提及的,解码可以由便宜的微控制器来执行,该微控制器可以在设备上的主处理单元准备就绪之前操作。因而,本文公开的(诸)解决方案尤其适用于产生表示诸如开机、关机等各种状态的相对短暂的音调或音调组的设备。
27.现在参考附图,图1解说了一实现中的操作环境100。操作环境100包括计算机110和媒体设备120。计算机110代表能够基于固定和动态映射处理音频数据并产生其中存储有经编码音频数据的文件的任何计算设备。示例包括但不限于膝上型和台式计算机、服务器计算机以及具有适合于压缩音频数据的架构的其他此类计算设备,其中图10中的计算机架构1001是代表性的。
28.媒体设备120代表能够基于存储在由计算机110产生的文件中的经编码音频数据
来播出可听声音的任何设备。媒体设备120的示例包括但不限于所有类型的计算机、电话、游戏控制台、数字电器、娱乐设备、以及采用微控制器来驱动音调、声音、音乐等的输出的任何其他设备。事实上,即使是非常简单的设备(诸如具有音频特征的贺卡)也是媒体设备120的示例。
29.在操作中,记录装备(未示出)记录音频信号101并对信号进行采样以产生其中存储有采样值的文件105。采样值具有“x”的深度,诸如16位(尽管信号最初可能被以更高的深度采样,例如24位,并且被向下转换为16位)。文件105代表具有根据各种格式(诸如脉冲编码调制(pcm)格式、波形音频文件(wav)格式和音频交换文件格式(aiff))中的任一种来存储的原始音频数据的任何文件。采样值可以表示电压、安培、功率或任何其他度量单位。在一些场景中,采样值可表示分贝。
30.计算机110将文件105作为输入并产生文件115作为输出。文件115代表其中存储有具有比文件105中的采样值小的深度的经编码值的任何文件。文件115还包括用于解码媒体设备120上的经编码值并播出音频数据中所表示的可听声音的密钥116。密钥116的示例包括将经编码值(或编码定量值)映射到经解码值的表。在一些场景中,密钥116可以是一维列表,其中经解码值的顺序隐式地标识其对应的经量化值而不必显式地表达对应关系(进一步节省空间)。经解码值可以表示电压、安培、功率或其他度量单位。在一些场景中,可以按照分贝给出经解码值,在这种情形中,转换计算可被执行。
31.图2解说了由计算机110上的硬件、固件和/或软件实现以压缩音频数据的编码过程200。编码过程200可以在计算机110的任何模块、组件或其他这样的硬件、固件或软件元素的上下文中用程序指令来实现。程序指令指导计算机110如针对编码过程200(附带地参考图2中的步骤)所描述的那样操作。
32.首先,编码过程200标识音频信号的采样值的动态范围(步骤201)。采样值可以对应于诸如电压、安培或功率之类的度量单位,在这种情形中,到分贝的转换计算可被执行以便获得以分贝为单位的动态范围。音频信号的动态范围是所记录声音的响度的表示。例如,信号的动态范围可以作为用分贝(db)表示的最响声音与最柔和声音的比率给出,并且有时被表示为最大采样值与最柔和采样值(其通常为零)之间的差异(以db为单位)。最大采样值可能出现在信号的正弦波形的峰处。标识动态范围可因此涉及标识最大采样值和最小采样值并确定它们之间的差异。
33.接下来,编码过程200标识动态范围到较低范围和较高范围的划分(步骤203)。动态范围的划分是基于采样值的较低部分到定量值集合中的具有小于采样值的深度的深度的定量值子集的固定映射来被确定的。换言之,编码过程确定有多少动态范围被固定映射覆盖。动态范围中固定映射停止的点是动态范围可被划分之处。动态范围的划分可以按照分贝来计算,但也可以按照音频数据的度量单位来计算。在此类场景中,从分贝到度量单位的转换计算可被执行(并且当需要时反之亦然)。
34.固定映射可以基于采样值与定量值的任何比率或对应关系而发生。例如,固定映射可以在1:1的基础、2:1的基础、3:1的基础或更大的基础上将采样值映射到定量值。映射比率也可以在每定量值基础上变化并且可以根据经验、在算法上和/或使用机器学习模型来确定。在此类场景中,划分动态范围的分界线不是先验已知的,而是在固定映射的范围一旦已被确定后被标识的。
35.在其他场景中,定量值的数目及其相对间距可能是先验已知的,在这种情形中,较低范围的大小也将是已知的。例如,k个定量值可以按n
‑
db的间距分配给较低范围。因此,较低范围的大小将是k乘以n分贝,并且较低范围与较高范围之间的分界将被设置为该值。在一变体中,分配给较低范围的定量值的间距可以通过算法、根据经验或经由机器学习而变化,但总体原则将保持不变,即较低范围的大小可被先验地计算。
36.在两种情形中,较高范围的大小将取决于采样值中的最大值和较低范围的大小。简单来说,较高范围的大小将基于样本中的最大值与由固定映射覆盖的较低范围内的样本中的最大值之间的差异来被计算。
37.编码过程200随后继续标识动态范围的较高范围到定量值集合中的剩余定量值的自适应映射(步骤205)。剩余多少定量值可取决于固定映射使用了多少定量值以及每个给定编码方案可用的总定量值有多少而变化。例如,8位方案允许总共128个定量值。假设22个定量值被分配给固定映射过程,则106个定量值将留给自适应映射。如果20个定量值被分配给固定映射过程,则108个定量值将留给自适应映射,等等。
38.除了确定有多少定量值要分配给自适应映射之外,编码过程200还可以确定如何在音频信号域中间隔开定量值。例如,定量值可被均匀地间隔开,使得每个值与下一个值隔开相同距离(以db为单位)。在另一示例中,定量值可以通过渐进地增大的距离、随机距离或其他方式间隔开。这种间距可以在算法上、根据经验或使用机器学习模型来确定。
39.在已标识要应用的固定和自适应映射模式的情况下,编码过程200基于固定映射来编码采样值的较低部分(步骤207)并基于自适应映射来编码采样值的较高部分(步骤209)。固定映射包括,对于采样值的较低部分中的给定值,标识定量值集合中的对应值(在1:1映射的情形中)或定量值集合中的最接近值(在多对一映射的情形中)并将所标识值写入音频文件。自适应映射包括,对于采样值的较高部分中的给定值,标识定量值集合中的最接近值并将所标识值写入相同文件。该文件随后可被安装在设备上以在运行时被解码和播出以例如指示设备的操作状态。
40.返回参考图1,编码场景150提供了编码过程200的高度简化的示例实现。关于编码场景150,编码过程200检查文件105中的采样值以标识音频信号101的动态范围。该示例中的动态范围152的范围从采样值s
‑
v1到采样值s
‑
v9。因此,动态范围的大小是s
‑
v9减去s
‑
v1(或s
‑
v9–
0)。编码过程200基于动态范围的较低部分到定量值子集的固定映射153将动态范围152划分成较低范围155和较高范围156。这里,采样值s
‑
v1到s
‑
v3在1:1的基础上映射到编码定量值e
‑
q1到编码定量值e
‑
q3,但是如上面所讨论,其他间距也是可能的。
41.此外在该示例中,出于示例性目的,假设存在六个可能的编码定量值e
‑
q1到e
‑
q6。相应地,在使前三个定量值分配给较低范围155之后剩下三个编码定量值。自适应映射154将较高范围156中的剩余采样值映射到由三个剩余定量值表示的自适应定量值158。在该示例中,自适应映射154在2:1的基础上发生(每个经量化值两个采样值),但是如上面所讨论,可以使用各种映射模式。
42.当从文件105读取采样值151时,采样值按照固定映射153和自适应映射154分别被映射到固定定量值157和自适应定量值158。所得的经编码值159连同描述映射的密钥116一起被写入文件115。在此示例中,采样值151按顺序包括:s
‑
v1、s
‑
v3、s
‑
v6、s
‑
v7和s
‑
v9。采样值151映射到经编码值159,其按顺序包括:e
‑
q1、e
‑
q3、e
‑
q5、e
‑
q5、e
‑
q6。可以领会,经编码值159
需要较少的存储,因为它们具有小于采样值151的深度的深度。然而,如从针对s
‑
v6和s
‑
v7两者的重复值e
‑
q5可以看出,一些保真度已被丢失。
43.图3解说了另一实现中的操作环境300。操作环境300包括与存储器303耦合的一个或多个处理器(由处理器301表示)。操作环境300还包括能够播出可听信号的音频子系统319。处理器301代表能够解压缩音频文件的任何处理器,诸如微控制器。存储器303代表能够存储音频文件的任何类型的微控制器存储器,诸如sram、flash和eeprom存储器。处理器301、存储器303和音频子系统319可以在各种设备中实现,诸如计算机、游戏控制台、家用电器、机器人电器、具有音频特征的贺卡等等。
44.在操作中,音频文件305被存储在存储器303的能够在断电状态下保存数据的部分中。音频文件305包括具有小于“x”的深度的经编码值。可以假设这些值是通过与编码过程200相同或类似的编码过程来编码的。因而,一些经编码值是由固定映射过程产生的,而另一些经编码值是由自适应映射过程产生的。
45.音频文件305还包括密钥306,该密钥用于将经编码值转换为具有至少大于经编码值的深度的深度的经解码值。例如,新的深度可等于或大于x,但也可以在仍然大于经编码值的深度的情况下小于x。密钥306的示例包括将经编码值(或编码定量值)映射到经解码值的表。在一些场景中,密钥306可以是一维列表,其中经解码值的顺序隐式地标识其对应的经量化值而不必显式地表达对应关系。
46.图4解说了可以在处理器301上的硬件、固件和/或软件的上下文中用程序指令实现的解码过程400。程序指令在由处理器301执行时指导处理器301和/或其内部署了处理器301的媒体设备如针对解码过程400(附带地参考图4中所解说的步骤)所描述的那样操作。
47.首先,处理器301将音频文件305的文件大小读入可由处理器301读取和写入的存储器303的一部分(步骤401)。处理器301还将由密钥306表示的查找表或列表写入存储器303(其有时可被称为高速暂存(scratch
‑
pad)存储器)的该部分。
48.对于音频文件305中的每个经编码值,处理器301继续使用密钥306找到其对应的具有更大深度的经解码值(步骤403)。这可以通过例如在查找表中找到经编码值并从那里找到其对应的经解码值来达成。在另一示例中,这可以通过在列表中由经编码值表示的位置处找到对应的经解码值来达成。
49.可任选地,处理器301可以将经解码值与一个或多个先前经解码值和/或一个或多个之后经解码值进行平均(步骤405)。当前、先前或之后经解码值可以在求平均中相对于彼此不同地加权以进一步增加输出经解码值的保真度。
50.最后,处理器301将经解码值写入音频文件315(步骤407),其可以与音频文件305相同或不同。音频子系统319用从音频文件315中的经解码值产生的输出信号317驱动扬声器。
51.图4还解说了解码过程400的高度简化示例中的解码场景350。在操作中,解码过程400从音频文件305的内容中标识编码定量值355和它们对应的经解码值357。编码定量值355包括用于编码采样值的所有定量值。编码定量值355在解码场景350中示出,但是可以领会,在一些场景中它们可能不存在于密钥306中,如上面所讨论,而仍然隐式地或在逻辑上为解码过程400所知晓。该场景中的编码定量值355由e
‑
q1到e
‑
q9表示。经解码值由d
‑
v1到d
‑
v9表示。
52.当从音频文件305读取经编码值351时,这些值按照映射353被转换为其对应的经解码值,其具有大于经编码值的深度的深度。在此示例中,经编码值351按顺序包括:e
‑
v1、e
‑
v3、e
‑
v5、e
‑
v5和e
‑
v6。映射353产生经解码值359,其按顺序包括:d
‑
v6、d
‑
v5、d
‑
v5、d
‑
v3和d
‑
v1。如所提及的,经解码值可利用不同程度的加权和插值来进一步增强,以进一步提高它们对原始信号的保真度。经解码值359被写入音频文件315以供音频子系统319播出。
53.图5解说了如应用于音频信号501的编码过程200的示例中的另一操作场景500。可以领会,下半部分是上半部分的映像,并且相同或类似的原理在编码信号的底部方面适用。
54.音频信号501代表模拟音频信号,其可以被数字采样并存储在诸如pcm文件、wav文件等音频文件中。音频信号501在时域中具有峰值为67db的正弦波形。在操作中,采用编码过程200的编码设备从音频文件中的采样值中标识音频信号501的动态范围。在该示例中,对于波形的上半部分,动态范围512从0db向上扩展到67db。
55.出于示例性目的,假设采样值采用能够表示信号上半部分中的大约32,000个不同值的16位二进制格式。动态范围512包括从音频信号501采样的每个值的一个实例。例如,范围的底部包括以下值:0db、6db和17db。范围的顶部包括:57db、61db、62db、64db、65db和67db。可以领会,这些值以十进制表示法给出,但表示16位二进制数。
56.采用编码过程200的编码设备继续将动态范围512划分成较低范围515和较高范围516。这可以通过首先确定有多少动态范围512被固定映射513覆盖来达成。这里,固定映射513将动态范围512的较低部分中的值映射到固定定量值517,其之所以被这样指称是因为它们被用于固定映射。动态范围512中固定映射513停止的点是动态范围512可被划分之处。
57.固定映射513可以基于采样值与定量值的任何比率或对应关系(诸如1:1、2:1、3:1等)而发生。映射比率也可以在每定量值基础上变化并且可以根据经验、在算法上和/或使用机器学习模型来确定。在此类场景中,划分动态范围的分界线是在固定映射的范围一旦已被确定后被标识的。替换地,定量值的数目及其相对间距可能是提前知晓的,在这种情形中,较低范围的大小也将是已知的。
58.在两种情形中,较高范围516的大小将取决于采样值中的最大值和较低范围515的大小。换言之,较高范围的大小将基于样本中的最大值与由固定映射覆盖的较低范围内的样本中的最大值之间的差异来被计算。
59.在此示例场景中,1:1映射被用于将采样值映射到编码定量值:0db映射到0;6db映射到1;并且17db映射到2。固定映射513在17db处耗尽其定量值。相应地,动态范围512在17db处被拆分成较低范围和较高范围。可以领会,固定定量值517和自适应定量值518以十进制表示法给出但表示8位二进制值。如此,编码值的位深度(8)是采样值的深度(16)的一半。
60.编码设备继续标识采样值的较高范围516到由自适应定量值518(其之所以被这样指称是因为它们被用于自适应映射)表示的剩余定量值的自适应映射514。剩余多少定量值可取决于固定映射使用了多少定量值以及每个给定编码方案可用的总定量值有多少而变化。此处假设使用了允许总共128个定量值的8位方案。由于3个值被用于编码较低范围515,因此125个值留给对较高范围516进行编码。如果模式要求使用22个值来编码较低范围515,则106个定量值将留下以分配给自适应映射。
61.除了确定有多少定量值要分配给自适应映射514之外,编码过程200还可以确定如
何在音频信号域中间隔开定量值。例如,定量值可被均匀地间隔开,使得每个值与下一个值隔开相同距离(以db为单位)。在另一示例中,定量值可以通过渐进地增大的距离、随机距离或其他方式间隔开。这种间距可以在算法上、根据经验或使用机器学习模型来确定。
62.在已标识要应用的固定和自适应映射模式的情况下,编码过程200经由固定映射513将较低范围515编码到固定定量值517并且将较高范围516编码到自适应定量值518。固定映射包括,对于采样值的较低部分中的给定值,标识定量值集合中的对应值(在1:1映射的情形中)或定量值集合中的最接近值(在多对一映射的情形中)并将所标识值写入音频文件。自适应映射包括,对于采样值的较高部分中的给定值,标识定量值集合中的最接近值并将所标识值写入相同文件。该文件随后可被安装在设备上以在运行时被解码和播出以例如指示设备的操作状态。在该示例场景中,16位格式的采样值511到8位格式的定量值的固定和自适应映射导致经编码值519。即:0db映射到0;6db映射到1;61db映射到126;62db映射到126;17db映射到2;64db映射到127;并且67db映射到127。
63.图6解说了用于解说解码过程400的一实现的操作场景600。在操作中,编码过程在音频文件中已产生经编码值集合。这些值被从文件中读出并由经编码值601表示。另外,解码过程(例如在微控制器上实现)从文件中的数据或隐式地标识编码定量值集合605、以及定量值到经解码值607的映射603。解码过程基于映射603将传入的经编码值直接映射到经解码值。
64.例如,编码定量值集合包括以十进制表示法表示的8位值,范围从0到127。经解码值607包括以十进制表示法表示的128个16位值。映射603将每一个编码定量值映射到一个不同的经解码值607。结果是由经解码值609表示的经解码值集合。更具体地,经编码值601如下地产生经解码值609:0映射到0db;1映射到6db;126映射到62db;126映射到62db;127映射到67db;并且127再次映射到67db。
65.图7解说了如应用于音频信号701的编码过程200的另一示例中的操作场景700。可以领会,下半部分是上半部分的映像,并且相同或类似的原理在编码信号的底部方面适用。还可以领会,音频信号701在其最大值方面不同于图5中的音频信号501(70db对比67db)。该差异可具有改变较低范围与较高范围分开所处的分界点的效果。换言之,相同的固定映射模式当被应用于两个不同的信号时会导致针对每个信号的不同自适应映射。
66.操作场景700中的音频信号701代表模拟音频信号,其可以被数字采样并存储在诸如pcm文件、wav文件等音频文件中。音频信号701在时域中具有峰值为70db的正弦波形。在操作中,采用编码过程200的编码设备从音频文件中的采样值中标识音频信号701的动态范围。在该示例中,对于波形的上半部分,动态范围712从0db向上扩展到70db。
67.出于示例性目的假设采样值是16位二进制格式。动态范围712包括从音频信号701采样的每个值的一个实例。例如,范围的底部包括以下值:0db、6db和15db。范围的顶部包括:57db、61db、62db、64db、65db和67db。可以领会,这些值以十进制表示法给出,即使它们表示16位二进制数。还要注意,范围的较低部分中的值与动态范围512的较低部分中的那些值相差至少一个值。这是因为音频信号701与音频信号501不同(假设采样率相同)。
68.编码过程200继续将动态范围712划分成较低范围715和较高范围716。这可以通过首先确定有多少动态范围712被固定映射713覆盖来达成。这里,固定映射713将动态范围712的较低部分中的值映射到固定定量值717。动态范围712中固定映射停止的点是动态范
围可被划分之处。
69.固定映射713可以基于采样值与定量值的任何比率或对应关系(诸如1:1、2:1、3:1等)来进行。映射比率也可以在每定量值基础上变化并且可以根据经验、在算法上和/或使用机器学习模型来确定。在此类场景中,划分动态范围的分界线是在固定映射的范围一旦已被确定后被标识的。替换地,定量值的数目及其相对间距可能是提前知晓的,在这种情形中,较低范围的大小也将是已知的。
70.在两种情形中,较高范围716的大小将取决于采样值中的最大值和较低范围715的大小。换言之,较高范围的大小将基于样本中的最大值与由固定映射覆盖的较低范围内的样本中的最大值之间的差异来被计算。
71.在此示例场景中,1:1映射被用于将采样值映射到编码定量值:0db映射到0;6db映射到1;并且15db映射到2。固定映射因此在15db处耗尽其定量值,而图5中的固定映射在17db处完成。相应地,动态范围712在15db处被拆分成较低范围和较高范围。可以领会,固定定量值717和自适应定量值718以十进制表示法给出但表示8位二进制值。如此,编码值的位深度(8)是采样值的位深度(16)的一半。
72.编码设备继续标识采样值的较高范围716到由自适应定量值718表示的剩余定量值的自适应映射714。剩余多少定量值可取决于固定映射使用了多少定量值以及每个给定编码方案可用的总定量值有多少而变化。此处假设使用了允许总共128个定量值的8位方案。由于3个值被用于编码较低范围715,因此125个值留给对较高范围716进行编码。
73.除了确定有多少定量值要分配给自适应映射714之外,编码过程200还可以确定如何在音频信号域中间隔开定量值。例如,定量值可被均匀地间隔开,使得每个值与下一个值隔开相同距离(以db为单位)。在另一示例中,定量值可以通过渐进地增大的距离、随机距离或其他方式间隔开。这种间距可以通过算法、根据经验或使用机器学习模型来确定。
74.在已标识要应用的固定和自适应映射模式的情况下,编码过程200利用固定映射713将较低范围715编码到固定定量值717并且使用自适应映射714和自适应定量值718来对较高范围716进行编码。固定映射713包括,对于采样值的较低部分中的给定值,标识定量值集合中的对应值(在1:1映射的情形中)或定量值集合中的最接近值(在多对一映射的情形中)并将所标识值写入音频文件。自适应映射包括,对于采样值的较高部分中的给定值,标识定量值集合中的最接近值并将所标识值写入相同文件。该文件随后可被安装在设备上以在运行时被解码和播出以例如指示设备的操作状态。在该示例场景中,16位格式的采样值711到8位格式的定量值的固定和自适应映射导致经编码值719。即:0db映射到0;6db映射到1;61db映射到125;62db映射到126;15db映射到2;64db映射到126;并且70db映射到127。
75.图8解说了用于解说解码过程400的一实现的操作场景800。在操作中,编码过程在音频文件中已产生经编码值集合。这些值被从文件中读出并由经编码值801表示。另外,解码过程(例如在微控制器上实现)从文件中的数据或隐式地标识编码定量值集合805、以及定量值到经解码值807的映射803。解码过程基于映射803将传入的经编码值直接映射到经解码值。
76.例如,编码定量值集合包括以十进制表示法表示的8位值,范围从0到127。经解码值807包括以十进制表示法表示的128个16位值。映射803将每一个编码定量值映射到一个不同的经解码值807。结果是由经解码值809表示的经解码值集合。更具体地,经编码值801
如下地产生经解码值809:0映射到0db;1映射到6db;125映射到61db;126映射到64db;2映射到15db;126映射到64db;并且127再次映射到70db。
77.图9a和9b解说了两个相关场景,以更好地领会固定映射和自适应映射。在这些场景中,固定映射是通过将最低的n个采样值映射到前n个定量值来达成的。对于场景900a和场景900b两者,假设128个8位定量值是可能的并且n=28。因此,采样值集合中最低的28个值映射到较低的28个定量值。剩余100个定量值被分配给自适应映射过程。
78.两种场景中的自适应映射过程跨采样值的较高范围在对数域中均匀地分配剩余定量值。在图9a中,动态范围扩展总共70db,并且固定定量值覆盖该范围的20db,从而使50db的范围留给由自适应定量值覆盖。自适应定量值在对数域中的均匀间距导致用于剩余定量值中的每一个定量值的.5db扩展。
79.作为对比,图9b中的动态范围也扩展到70db,但固定定量值覆盖仅10db的范围,从而使60db留给自适应定量值。自适应定量值的均匀间距导致用于100个剩余定量值中的每一个定量值的.6db扩展。
80.在图9a中,场景900a包括音频信号901,其具有从0db扩展到20db的静态或固定范围。其自适应范围从20db扩展到70db。固定范围是在1:1基础上通过将前二十八(28)个定量值映射到最低的28个采样值来被确定的。出于示例性目的,假设这种映射覆盖高达20db的采样值。
81.由于前28个定量值在固定基础上被分配给最低的28个采样值,因此有100个定量值留下以分配给自适应映射。在此示例中假设一百个定量值的均匀分布,这意味着剩余50db的范围可以按.5db的增量被映射到这一百个定量值。然后,随着采样值流经(诸)映射,它们要么针对值的较低范围基于1:1映射来被映射,要么针对较高范围经由均匀间隔的映射来被映射。
82.作为示例,采样值911要么流经固定映射要么流经自适应映射。20db或更小的值(913)按照固定映射来被映射,而大于20db的值(912)按照自适应映射来被映射。固定映射将特定值915映射到特定固定定量值917。自适应映射将值916的.5db范围映射到特定定量值918,其可被称为自适应定量值。
83.固定范围内的采样值通过在值915中找到它们的对应值并且随后在固定定量值917中标识对应定量值来被映射。较高范围内的采样值通过找到采样值落入的一组值或值范围并且随后找到与该组值或值范围相对应的定量值来被映射。此处,各组是基于组的最高成员来被标记的,但可以使用任何命名法。例如,值69.1db属于标记为69.5db的组,值69.2也是如此,而值67.3则属于标记为67.5的组。相应地,这三个值分别映射到126、126和122,如经编码值922所解说的。来自较低范围的值映射到值921(0、27和1)。组合结果是用经编码值923表示的数字序列。
84.采样值具有16位二进制格式,而经编码值923具有8位格式。1:1映射在相反方向上被用于将8位经编码值解码成16位经解码值。这里,经解码值917是0、67.5、20.0、69.5、69.5和1.6,均以分贝为单位。
85.图9b解说了信号特性或甚至采样值特性中的差异能够如何改变音频数据被编码的方式。在场景900b中,音频信号902具有从0db扩展到10db(与场景900a中的20db相反)的静态或固定范围。其自适应范围因此从10db扩展到70db。固定范围是在1:1基础上通过将前
二十八(28)个定量值映射到最低的28个采样值来被确定的。出于示例性目的,假设这种映射覆盖高达10db的采样值。
86.由于前28个定量值在固定基础上被分配给最低的28个采样值,因此有100个定量值留下以分配给自适应映射。在此示例中假设一百个定量值的均匀分布,这意味着剩余60db的范围可以按.6db的增量被映射到这一百个定量值。然后,随着采样值流经(诸)映射,它们要么针对值的较低范围基于1:1映射来被映射,要么针对较高范围经由均匀间隔的映射来被映射。
87.作为示例,采样值911要么流经固定映射要么流经自适应映射。10db或更小的值(913)按照固定映射来被映射,而大于10db的值(912)按照自适应映射来被映射。固定映射将特定值915映射到特定固定定量值917。自适应映射将值916的.6db范围映射到特定定量值918,其可被称为自适应定量值。
88.固定范围内的采样值通过在值915中找到它们的对应值并且随后在固定定量值917中标识对应定量值来被映射。较高范围内的采样值通过找到采样值落入的一组值或值范围并且随后找到与该组值或值范围相对应的定量值来被映射。此处,各组是基于组的最高成员来被标记的,但可以使用任何命名法。例如,值69.1db属于标记为69.4db的组,值69.2也是如此,而值67.3则属于标记为67.6的组。相应地,这三个值分别映射到126、126和123,如经编码值922所解说的。来自较低范围的值映射到经编码值921(0和1)。组合结果是经编码值923。
89.采样值具有16位二进制格式,而经编码值923具有8位格式。1:1映射在相反方向上被用于将8位经编码值解码成16位经解码值。这里,经解码值925是0、67.6、20.2、69.4、69.4和1.6,均以分贝为单位。
90.虽然图1
‑
9b中的值是以分贝给出的,但可以领会,如果以电压、安培、功率或任何其他度量单位给出值,则相同或类似的概念将适用。度量单位与分贝之间的转换可被计算,以便例如将自适应定量值的均匀间距转换为音频数据被编码的度量单位。音频数据中的采样值可以从度量单位转换为分贝(并且经编码数据可以从分贝转换为度量单位),或者固定和自适应映射可以用度量单位来表达。
91.例如,包含代表电压的采样值的音频文件可以使用同样以电压表示的固定和自适应定量值进行编码。假设总共x个定量值、n个固定定量值且k=x
‑
n个自适应定量值,则最低的n个经采样电压值被映射到最低的n个定量值。剩余k个经采样电压值被映射到剩余k个定量值。然而,剩余定量值的值必须首先从分贝转换为电压。
92.为了这么做,两个电压值(q1,q2)的比率的对数被给出为等于所需的以分贝(s)为单位的扩展。系数20也可以乘以该对数值。比率中的分母是已知定量值(q1),而分子是未知定量值(q2),其为自适应定量值的递增系列中的下一定量值。每个步骤的未知定量值可被求解如下:
93.a.20*log(q2/q1)=s db;
94.b.20*inv log(q2/q1)=10^s
95.c.20*(q2/q1)=10^s
96.d.20*q2=(10^s)*q1
97.e.q2=[(10^s)*q1]/20
[0098]
可以从音频数据的增强压缩(或“强力压缩(squanching)”)的前述公开中领会各种技术效果,诸如由于将音频数据从一个深度转换为较小深度而导致的音频文件的大小减小。所得音频文件可因而被部署到存储空间非常宝贵的存储受约束的环境。另外,与典型的解压缩算法相比,解码音频文件中的值需要较少的处理循环和/或较少的功率,从而使得本文公开的策略适用于处理受约束的环境、应用和场景。
[0099]
在一些实现中,自适应定量值在对数(db)域中相对于彼此均匀地间隔开。该技术具有以下技术效果:在对人类听觉最敏感的范围内保存定量值,从而允许以比其他范围更高的保真度对这些范围进行编码。
[0100]
图10解说了计算机架构1001,其代表其中可以实现本文公开的各种过程、程序、服务和场景的任何系统或系统的集合。可采用计算机架构1001的计算设备的示例包括但不限于服务器计算机、云计算平台和数据中心装备、以及任何其他类型的物理或虚拟服务器机器、容器、以及其任何变体或组合。其他示例包括桌上型计算机、膝上型计算机、台式计算机、物联网(iot)设备、可穿戴设备及其任何其他物理或虚拟组合或变体。
[0101]
计算机架构1001可被实现为单个装置、系统或设备,或者可以按分布式方式被实现为多个装置、系统或设备。计算机架构1001包括但不限于处理系统1008、存储系统1003、软件1005、通信接口系统1007和用户接口系统1009(可任选)。处理系统1008可操作地与存储系统1003、通信接口系统1007和用户接口系统1009耦合。
[0102]
处理系统1008从存储系统1003加载并执行软件1005。软件1005包括并实现编码过程1006,其代表参考先前附图所讨论的诸编码过程。当由处理系统1008执行以增强关于查看文档中的改变的用户体验时,软件1005指导处理系统1008如本文至少针对在前述实现中讨论的各种过程、操作场景和序列所描述的那样操作。计算机架构1001可任选地包括出于简化的目的而未被讨论的附加设备、特征或功能性。
[0103]
仍然参考图10,处理系统1008可以包括从存储系统1003中检索并执行软件1005的微处理器以及其他电路系统。处理系统1008可被实现在单个处理设备中,但也可以跨在执行程序指令时协作的多个处理设备或子系统分布。处理系统1008的示例包括通用中央处理单元、图形处理单元、专用处理器、和逻辑设备、以及任何其他类型的处理设备、其组合或变体。
[0104]
存储系统1003可包括能由处理系统1008读取并能够存储软件1005的任何计算机可读存储介质。存储系统1003可包括易失性和非易失性、可移动和不可移动介质,它们以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据这样的信息的任何方法或技术来实现。存储介质的各示例包括随机存取存储器、只读存储器、磁盘、光盘、闪存存储器、虚拟存储器和非虚拟存储器、磁带盒、磁带、磁盘存储或其他磁存储设备,或任何其他类型的存储介质。在任何情况下,计算机可读存储介质都不是传播的信号。
[0105]
除了计算机可读存储介质以外,在一些实现中,存储系统1003还可包括至少一些软件1005可通过其进行内部和外部通信的计算机可读通信介质。存储系统1003可以被实现为单个存储设备,但也可以跨相对于彼此共处或分散的多个存储设备或子系统来实现。存储系统1003可以包括能够与处理系统1008或可能的其他系统通信的附加元件,诸如控制器。
[0106]
软件1005(包括编码过程1006)可用程序指令来实现,并且在被处理系统1008执行
时与其他功能一起指导处理系统1008如参考本文所解说的各种操作场景、序列和过程所描述的那样操作。例如,软件1005可以包括用于实现如本文所描述的编码过程的程序指令。
[0107]
具体而言,程序指令可包括协作或以其他方式交互以执行如本文中所描述的各种过程和操作场景的各种组件或模块。各种组件或模块可被具体化在经编译或经解读的指令中,或被具体化在指令的某其他变体或组合中。各种组件或模块可以以同步或异步方式、串行或并行地、在单线程环境或多线程环境中、或根据任何其他合适的执行范例、变体或其组合来被执行。软件1005可包括附加过程、程序或组件,诸如操作系统软件、虚拟化软件、或其他应用软件。软件1005还可包括可由处理系统1008执行的固件或某一其他形式的机器可读处理指令。
[0108]
一般而言,软件1005在被加载到处理系统1008中并被执行时可将合适的装置、系统或设备整体从通用计算系统变换成被定制为提供音频数据的增强型处理的专用计算系统。事实上,存储系统1003上的编码软件1005可变换存储系统1003的物理结构。在本说明书的不同实现中,物理结构的具体变换可取决于各种因素。此类因素的示例可包括但不仅限于,用于实现存储系统1003的存储介质的技术以及计算机存储介质是被表征为主存储还是二级存储、以及其他因素。
[0109]
例如,如果计算机可读存储介质被实现为基于半导体的存储器,则当在其中编码程序指令时,软件1005可以变换半导体存储器的物理状态,诸如通过变换构成半导体存储器的晶体管、电容器或其他分立电路元件的状态。一种类似的变换可以相对于磁或光学介质发生。在没有偏离本说明书的范围的情况下,物理介质的其他变换也是可能的,前面提供的示例只是为了便于本讨论。
[0110]
通信接口系统1007可包括允许通过通信网络(未示出)与其他计算系统(未示出)进行通信的通信连接和设备。一起允许系统间通信的连接和设备的示例包括网络接口卡、天线、功率放大器、rf电路系统、收发机以及其他通信电路系统。连接和设备可通过通信介质通信以与其他计算系统或系统网络交换通信,诸如金属、玻璃、空气或任何其他合适的通信介质。上述介质、连接和设备是公知的且无需在此处详细讨论。
[0111]
计算机架构1001与其他计算系统(未示出)之间的通信可在通信网络或各网络上并根据各种通信协议、协议的组合或其变体发生。各示例包括内联网、互联网、因特网、局域网、广域网、无线网络、有线网络、虚拟网络、软件定义的网络、数据中心总线和背板(backplane)、或任何其他类型的网络、网络的组合或其变体。上文提及的通信网络和协议是众所周知的且不需要在此详细讨论。
[0112]
如本领域技术人员将领会的,本发明的各方面可以体现为系统、方法或计算机程序产品。相应地,本发明的各方面可以采用完全硬件实施例、完全软件实施例(包括固件、常驻软件、微代码等)或结合软件和硬件方面的实施例的形式,这些在本文中通常可被称为“电路”、“模块”或“系统”。此外,本发明的各方面可以采用包含在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质具有包含在其上的计算机可读程序代码。
[0113]
所包括的说明和附图描绘了用于教导本领域技术人员如何做出和使用最佳模式的特定实施例。出于教导创造性原则的目的,一些传统的方面已被简化或忽略。本领域的技术人员将领会来自这些实施例的变体也落入本公开的范围内。本领域的技术人员还将领会
以上所描述的各特征可以按各种方式被组合以形成多个实施例。作为结果,本发明不局限于以上所描述的特定实施例,而是仅由权利要求和它们的等价物来限定。