可视化 PCM 样本的体积

Posted

技术标签:

【中文标题】可视化 PCM 样本的体积【英文标题】:Visualizing volume of PCM samples 【发布时间】:2010-03-26 22:52:07 【问题描述】:

我的 C++ 应用程序中有几块 PCM 音频 (G.711)。我想可视化每个块中不同的音量。

我的第一次尝试是计算每个块的样本值的平均值并将其用作音量指标,但这并不适用。对于具有静音的块,我确实得到 0,对于具有音频的块,我得到不同的值,但这些值只是略有不同,并且似乎与实际音量不相似。

计算体积的更好算法是什么?

我听说 G.711 音频是对数 PCM。我应该如何考虑这一点?

【问题讨论】:

【参考方案1】:

请注意,我自己没有使用过 G.711 PCM 音频,但我认为您在处理值之前执行了从编码幅度到实际幅度的正确转换。

您会期望大多数样本的平均值大约为零,因为声音波形会在零的任一侧振荡。

粗略的体积计算将是 rms(均方根),即取样本平方的滚动平均值并取该平均值的平方根。当有声音时,这会给你一个正数;量与波形中表示的功率有关。

为了更好地与人类对音量的感知相关,您可能需要研究Replay Gain 中使用的技术。

【讨论】:

【参考方案2】:

如果您有雄心壮志,您可以在 ITU 网站上download G.711,并在接下来的几周(或更多时间)实施它。

如果您比这更懒(或更明智),您可以 download G.191 代替 - 它包含用于压缩和解压缩 G.711 编码数据的源代码。

解码后,可视化音量应该整体容易得多。

【讨论】:

以上是关于可视化 PCM 样本的体积的主要内容,如果未能解决你的问题,请参考以下文章

Android 使用 JTransform 库可视化 PCM 数据

通过 Spotify iOS SDK 获取用于可视化的 pcm 音频

Android 如何使用 MediaRecorder 录制音频并输出为原始 PCM?

透视投影,标准可视体积

R语言ggplot2可视化:可视化人口金字塔图人口金字塔显示不同性别不同年龄段的人口数,是了解人口组成的最优可视化方法人口金字塔图可以用来表示按体积排序的群体的分布形成漏斗结构

如何可视化 k 最近邻分类器的测试样本?