使用 8 位样本进行语音比较

信息处理 声音的 语音处理 演讲
2022-02-15 06:46:18

我正在用 javascript 制作语音比较应用程序。

我发现了这个 dsp.SE 帖子:

用于对相似性进行评级的语音比较算法

我在哪里读到最好使用mfccdtw算法。

我找到了我想使用的mfcc的 Node.js 实现。但是,它仅适用于 8 位音频样本。这会影响语音比较的质量吗?会影响多少?如果差异足够大,我将编辑算法以支持 16 位样本。

1个回答

这会影响语音比较的质量吗?会影响多少?

如果不知道 Node.js 在内部做什么,这是不可能说出来的。我认为要求我们搜索您的意思有点过分。作为评论:JavaScript 中的信号处理听起来是个坏主意,无论是性能还是开发方面;这真的不是 JS 的设计和优化目标,而且严重缺乏库,更不用说高效的库了。我总是敦促人们为他们的工作使用正确的工具,我认为 JS 不在这里。</comment>

话虽如此:

从纯信号的角度来看,您可以将量化效果建模为噪声。这里的问题是这种噪声既不是与信号不相关的,也不一定是白色的。为了使补偿方面的事情变得更加困难,它的幅度通常甚至不是高斯的。哦,好吧,但是这里是量化噪声功率,这个数字对于理解您可以从数字系统中获得的最大 SNR 非常重要,并且只要您不说信号处理的好坏就不会说太多可以处理这种特定的噪音。

幸运的是,对于“足够小”的量化步骤,稍微考虑一下随机因素¹表示量化噪声(此后称为 QN)是相加的假设是非常合理的。

现在,假设您的信号幅度确实是均匀分布的,并且您的 ADC 完全均匀,则M 位 ADCSNRQ

SNRQ=2MSNRQ[dB]=20log10(2M)=20log10(2)M6M,
这意味着对于 8bit,你的,对于 16 位SNRQ,8b48dBSNRQ,16b96dB

现在,语音的幅度肯定是不均匀的。在不知道你的录音是什么样子的情况下证明这个模型有点困难,但我宁愿说它是由正弦组成的;在这种情况下,这两种情况都会产生额外的噪声。1.8dB

这里的要点是,我怀疑“真实世界、非录音室设备、非消声室静音”的语音记录是否会接近,所以可能,不,这是一个不错的选择,顺便说一下你问这个问题的方式,我有点怀疑将算法(它可能在内部使用很多优雅的数值数学)扩展到 16 位是微不足道的。48dB


¹与信号相关的噪声功率的数量必然非常有限,并且如果它们的时刻不太不同,那么一组相互独立的足够多的 iid 实现(由于 CLT 是正常的)加起来仍然是正常的......