假设你的计算机正在将音频(某人说话的声音)转录为文本。由于它正在查看音频的数字值,因此它“渲染”转录的速度是否比实时播放转录所需的时间更快?我认为它不是像人类一样“聆听”,而是以数字方式处理转录。我的这个假设对吗?
同样的问题也适用于视频分析。
我的困惑是:当以更快的速度播放音频时,单词变得不清楚,那么计算机如何弥补这一点?如果我在这里遗漏了一些基本的东西,请原谅。
编辑:当我在这个问题中使用“实时”一词时,我的意思不是在录制时,然后实时转录。相反,我指的是以 1 倍速播放(或实时播放速度)。似乎有些人没有明白我的意思。
答案1
是的,一点没错。
算法处理数据的速度与它读取数据并通过 CPU 获取数据的速度一样快。
例如,如果数据在磁盘上,现代 NVMe 的读取速度可达 5+ GB/s,这比通常用于存储语音数据的比特率要快得多。当然,实际应用的算法可能或多或少复杂,因此我们无法保证它会以最大读取速度进行处理,但没有任何内在因素会限制这种分析的实时速度。
同样的原理也适用于视频,但由于此类文件中的数据量巨大,因此需要更高的吞吐量。这显然取决于分辨率、帧速率和分析的复杂性。实时执行复杂的视频分析实际上很困难,因为分析几乎总是在解压缩的视频上进行,因此处理器必须有时间在短时间内解码和分析并保持数据流动,以便在完成某些分析时,下一个视频块已经被解码并存储在内存中。这是我近十年来一直在研究的事情。
当你以更快的速度播放视频时,文字会变得不清楚你但数据是完全相同的。处理音频的速度不会影响算法理解音频的能力。软件确切地知道每个音频样本代表了多少时间。
答案2
我会比目前的答案更进一步,并想反驳计算机以某种方式“播放”文件的想法。这意味着处理必然是一个严格顺序的过程,从文件的开头开始,一直到结尾。
事实上,最多音频处理算法将在某种程度上是连续的——毕竟,声音文件在播放供人类使用时就是如此解释的。但其他方法也是可以想象的:例如,假设你想编写一个程序来确定声音文件的平均响度。你可以浏览整个文件并测量每个片段的响度;但随机抽取一些片段并测量它们也是一种有效(尽管可能不太准确)的策略。请注意,现在文件根本没有“播放”;算法只是查看它自己选择的一些数据点,它可以自由地按照它喜欢的任何顺序进行操作。
这意味着,在这里谈论“播放”文件并不是一个真正合适的术语——即使处理是按顺序进行的,计算机也不是在“听”声音,它只是处理数据集(音频文件其实只是一段时间内记录的气压值列表)。也许更好的比喻不是人类聆听音频,但分析它看着音频文件的波形:
在这种情况下,您完全不受音频实际时间尺度的限制,可以查看波形的任何部分,查看的时间不限(如果您的速度足够快,您确实可以在比播放原始音频更短的时间内“读取”波形)。当然,如果波形打印输出很长,您可能仍需要“走”一会儿才能到达您感兴趣的部分(或者如果您是计算机,则在硬盘上寻找正确的位置)。但您走动或阅读的速度与 x 轴上的(虚拟)时间标签(即音频的“实时”)没有内在联系。
答案3
你的核心问题是:
“计算机能否比实时回放更快地分析音频?”
这里还有其他很好的答案,但这是——我认为——现实世界中非常常见的例子,即计算机分析音频的速度比实时音频播放的速度更快……
在现代计算机系统上将音频 CD 转换为 MP3 文件是总是比该 CD 上的音频的实时播放速度更快。
这完全取决于您的系统和硬件的速度,但即使在 20 年前,将 CD 转换为 MP3 文件也总是比实时播放 CD 音频更快。
那么,例如,如何能在不到 45 分钟的时间内将 45 分钟的音频 CD 转换为 MP3?如果计算机受到音频播放限制,这怎么可能发生?在数据方面,一切都是数据,但在播放方面却受到人类水平的限制。
想想看:计算机以比正常音频播放更快的速度从 CD 中读取原始音频数据,并对其运行算法将原始音频转换为压缩音频数据格式。
而从音频转录文本时,数字分析过程也类似,只是输出结果不同。这个过程比将音频从一种格式转换为另一种格式要复杂得多,但它仍然是另一种数字分析过程。
附言:似乎有无数的评论者想要指出 1995 年以前的 PC 无法比实时更快地编码 MP3……是的,我知道……这就是为什么我要对我所发布的内容进行限定,说“……在现代计算机系统上……”,以及说“……但即使是 20 年前……”。
首先MP3 编码器于 1994 年 7 月 7 日问世,扩展.mp3
于 1995 年 7 月 14 日正式当选。这个答案的目的是解释一个非常高水平在现代 PC 上,比实时播放更快的音频分析行为已经以我们都使用的方式存在:将音频 CD 转换为 MP3 文件的行为。
答案4
尽管这里有很好的答案,我还是要寻找一个可靠的
这取决于
有些算法依赖于强力处理能力。处理能力越强,处理能力就越强(或处理越准确)。现在大多数音频处理不再受资源限制。但视频处理仍然受资源限制,这一点可以从游戏领域的持续发展中看出。
但在此之后,实时处理的问题在于潜伏- 在这种情况下,您说出某句话和计算机将文本显示出来之间的延迟。所有处理算法都存在延迟,但任何基于傅立叶变换的算法都特别受此限制。根据数学定理,您希望能够识别的频率越低,您需要的数据就越多,因此计算机给您结果之前的延迟就越长。所以你确实会遇到这样一个情况:无论你做数学题的速度有多快,你总是落后至少那么远。
实时处理的挑战在于找到一个最佳平衡点,既能获得合理有效的处理,又能让用户感觉不到延迟。这总是需要在较低的延迟和较高质量的结果之间进行权衡,而最佳算法可能与个人喜好有关。
在极端情况下,有些算法根本无法实时运行。例如,有些非常有效的过滤算法需要数据反向运行。这些算法可以为记录数据的后处理提供非常好的结果,但当然完全不可能用实时数据运行。