将8位音频信号转换为较低编码

时间:2015-01-14 22:56:25

标签: matlab audio signal-processing

我对给我们的转让问题感到困惑。问题如下:“使用16位,8位,4位,2位,1位代表8KHz采样时的语音信号,观察每种情况下的语音质量和波形差异并记下这些内容。”所以现在我已经看过几个录音工具,甚至在MATLAB中尝试了各种录音API,但其中使用的最少位数为8位。因此,如果我想将它们转换为4位或更低,我该怎么办呢。我是否必须手动循环并更改矩阵的元素,或者我可以获得一个工具。 (注意:这只是一个介绍性的课程,我们不希望对这些事情有太多的了解。更多的是第一次任务)

1 个答案:

答案 0 :(得分:0)

你需要的直觉是欣赏比特移位的意义。让我们假设您从一个16位数开始 - 这里可能值的范围是2 ^ 16,这意味着您可以有65536个不同的值,可能从0到65536 - 1,或者从-32768到+32767现在如果输入表面上可以处理的信号可以在-1到0之间变化到+1(标准音频信号)这个音频曲线可以自由地映射到65536上,所以-1可以映射到-32768和+1到32767 - 如果我们只有8位表示我们的信号,因为它从-1到+1,2 ^ 8 === 256个可能值,这里我们可以映射-1到-128和+1到128.类似的映射为4位,2位。 ..

现在使用位移来实现这一点,如果以16位表示开始并需要将其转换为8位,则只需将16位数字向右移位8位即可丢弃最低有效位位置:

intout = bitshift(A,k) 

返回A向左移位k位,相当于乘以2k。 k的负值对应于右移位。因此,如果变量A是我们的16位整数,而对于k,我们使用-8这将实现我们需要将16位数转换为其8位整数等值的位移。到目前为止,你可能已经猜到了我们逐渐将比特深度从16降低到8 ......我们的分辨率降低了,这将被视为声音,声音更少,深度更小,细微差别和细微差别,直到最后在第1位,只能改变从0到1音频将变得非常难以理解 - 我希望这有助于