计算机可以比实时播放更快地分析音频吗?

Dav*_*ave 19 audio transcription digital-audio

因此,假设您的计算机正在将(某人讲话的)音频转录为文本。因为它正在查看音频的数字值,所以它“呈现”转录的速度是否比实时播放所需的时间更快?我想它不像人类那样“倾听”,而是以数字方式处理它。我的这个假设是对的吗?

同样的问题也适用于分析视频。

我的困惑是:当以更快的速度播放音频时,单词变得不清楚,那么计算机如何补偿?对不起,如果我在这里遗漏了一些基本的和基本的东西。


编辑:当我在这个问题中使用“实时”一词时,我的意思不是在录制时,然后是实时转录。相反,我的意思是以 1 倍速度(或实时播放速度)播放。似乎有些人没有明白我的意思。

Ita*_*tai 55

是的。绝对地。

算法可以尽可能快地处理数据,并通过 CPU 读取数据。

例如,如果数据在磁盘上,现代 NVMe 可以以 5+ GB/s 的速度读取,这比通常用于存储语音数据的比特率要快得多。当然,实际应用的算法可能或多或少复杂,所以我们不能保证它会以最大读取速度处理,但没有任何内在限制这种分析以实时速度进行。

相同的原则适用于视频,但由于此类文件中的数据量很大,因此需要更高的吞吐量。这显然取决于分析的分辨率、帧速率和复杂性。实际上很难实时进行复杂的视频分析,因为分析几乎总是在解压后的视频上进行,因此处理器必须有时间在短时间内解码和分析并保持数据流动,以便在进行一些分析时完成后,下一个视频块已经解码并在内存中。这是我工作了近十年的事情。

当你播放视频速度更快,言语不清楚,但是数据是完全一样的。处理音频的速度不会影响算法理解它的能力。软件确切知道每个音频样本代表多少时间。

  • @Michael 音高为您增加,因为录音速度加快,但您正在处理它,就好像它以正常速度播放一样。这种不匹配使正弦波对您来说更加密集。计算机不会出现这种现象,因为它对记录中时间的感知不是基于实际过去的时间,而是基于处理的数据量。换句话说,音频处理算法不看挂钟,而是看文件内时钟——它总是与读取文件的速度完美匹配,因此没有不匹配和音高变化。 (20认同)
  • *“换句话说,音频处理算法不看挂钟,而是看文件内时钟”*——这个*“文件内时钟”*的技术术语是采样率。 (12认同)
  • @NPSF3000 你说的绝对是垃圾,而且很明显不知道通信理论中的符号是什么。 (2认同)

Man*_*nfP 30

我会比当前的答案更进一步,并且想反驳计算机以某种方式“回放”文件的想法。这意味着处理必然是一个严格的顺序过程,从文件的开头开始,一直到最后。

实际上,大多数音频处理算法都会有些顺序——毕竟,这就是在播放供人类消费时解释声音文件的方式。但其他方法也是可以想象的:例如,假设您要编写一个程序来确定声音文件的平均响度。您可以浏览整个文件并测量每个片段的响度;但它也是一种有效的(虽然可能不太准确)策略,随机抽样一些片段并测量它们。请注意,现在文件根本没有“回放”;该算法只是查看它自己选择的一些数据点,它可以按照它喜欢的任何顺序自由地这样做。

这意味着谈论“回放”文件在这里根本不是正确的术语 - 即使处理确实按顺序发生,计算机也不是“听”声音,它只是处理数据集(音频文件除了随时间记录的气压值列表之外,实际上并没有其他任何东西)。也许更好的比喻不是人类音频,而是通过查看音频文件的波形来分析它:

采样音频波形

在这种情况下,您完全不受音频的实际时间尺度的限制,但可以查看您想要的波形的任何部分,无论您想要多久(如果您足够快,您确实可以“读取”波形的时间比播放原始音频所需的时间更短)。当然,如果是很长的波形打印输出,您可能仍然需要“走”一段时间才能到达您感兴趣的部分(或者如果您是计算机,请寻找硬盘驱动器上的正确位置)。但是您走路或阅读的速度与 x 轴上的(假想)时间标签没有内在联系,即音频的“实时”。

  • @Dave 重点并不是顺序处理不寻常(您说得对,语音识别可能是一个主要是顺序处理的过程),但重点是软件不限于这些限制,因此音频被“回放”是一种错误的思考模式。这只是一个数据点列表;如果它想乱序读取它们,它可以;如果它想要比实时更快,它也可以。 (8认同)
  • @Dave 这实际上只是某种形式的模式识别,尽管有很多聪明的数学技巧。可能第一步是将音频切割成非常短(几毫秒长)的窗口,然后对这些窗口执行所谓的傅立叶变换。结果包含有关频率的信息,有点类似于我们耳朵中的不同毛发对不同音调的反应,但它仍然是一个纯粹的数字和数学过程;然后可以进一步分析声音模式(尽管我对语音识别的工作原理知之甚少)。 (2认同)
  • 您不仅可以对片段进行采样,还可以使用大规模并行处理器来分块处理输入。可能更适用于视频——GPU 本质上是在做相反的操作。 (2认同)

Gia*_*968 12

你的核心问题是:

“计算机可以比实时播放更快地分析音频吗?”

这里还有其他很棒的答案,但我认为这是一个非常普遍的现实世界示例,即计算机分析音频的速度比实时音频播放速度更快……

在现代计算机系统上将音频 CD 转换为 MP3 文件总是比在该 CD 上实时播放音频更快。

这完全取决于您的系统和硬件的速度,但即使在 20 年前,将 CD 转换为 MP3 文件也总是比实时播放 CD 音频更快。

那么,例如,如何才能在不到 45 分钟的时间内将 45 分钟的音频 CD 转换为 MP3?如果计算机受到音频播放限制的限制,怎么会发生这种情况?它是数据端的所有数据,但在播放时受限于人类水平。

想一想:计算机正在以比正常音频播放更快的速度从 CD 读取原始音频数据,并针对它运行算法以将原始音频转换为压缩音频数据格式。

当从音频转录文本时,这是一个类似的数字分析过程,但输出不同。一个比将音频从一种格式转码到另一种格式要复杂得多的过程,但它仍然是另一个数字分析过程。


PS:对于那些想要指出 1995 年之前的 PC 无法比实时更快地编码 MP3 的评论者们似乎源源不断的评论者来说......是的,我知道......这就是为什么我通过说“......在现代计算机系统上”来限定我发布的内容......”以及“......但即使是20年前......”也是如此。

第一个MP3编码器出来于1994年7月7日,并.mp3延长已于7月14日,1995年这个答案的要点是在一个非常解释正式选择高层次上现代PC比实时回放分析音频的行为更快已经以我们都使用的方式存在:将音频 CD 转换为 MP3 文件的行为。


gro*_*taj 8

计算机不像我们那样体验音频。

以更高的速度播放的录音对于人类来说变得难以理解,因为我们接收到的数据超出了我们的处理能力。我们的身体和大脑是有限度的,一旦稍微超过“数据速率”,我们就开始只获取所说内容的一部分。把速度调高,它变得胡言乱语。

计算机不会出现这种现象,因为它对记录中时间的感知不是基于实际过去的时间,而是基于处理的数据量。计算机从磁盘读取数据的速度永远不会超过它处理数据的速度1,因此它永远不会超载。数据速率始终与处理速度完美匹配。


1除非有错误的程序告诉它这样做,但这适用于每个计算机问题。


Gra*_*ham 5

尽管这里有很好的答案,但我将不得不寻求一个坚实的

这取决于

一些算法依赖于蛮力处理能力。您拥有的处理能力越强,您可以进行的处理越多(或处理得越准确)。我们现在处于大多数音频处理不再受资源限制的地步。尽管如此,视频处理仍然是资源有限的,这可以从游戏中持续的最先进技术中看出。

但在那之后,实时处理的问题是延迟——在这种情况下,是你说话和计算机把文本放上之间的延迟。所有处理算法都有一些延迟,但任何基于傅立叶变换的算法都特别受此限制。根据数学定理,您希望能够识别的频率越低,您需要发现的数据就越多,因此计算机给出结果之前的延迟时间也就越长。所以你确实达到了一个点,无论你做数学的速度有多快,你总是至少落后那么远。

实时处理的挑战是找到一个最佳点,在那里您可以获得合理有效的处理,并且延迟对于用户来说相对难以察觉。这始终是较低延迟和较高质量结果之间的权衡,对此的最佳算法与其他任何事情一样可能取决于个人品味。

在极端情况下,某些算法根本无法实时运行。例如,存在一些非常有效的过滤算法,它们需要向后运行数据。这些可以为后处理记录数据提供非常好的结果,但当然完全不可能使用实时数据运行。