我正在做一个音频速记学项目。我需要在音频信号(.wav文件)中嵌入一些文本。 所以我将音频信号从-1转换为1(双倍)到-32767到+32767(int16),因此我将数据冷嵌入系数的LSB中。 现在的问题是我不知道如何从int16获取它们各自的两倍当量值。
我已使用以下代码进行规范化:
[y, fs, nBits,opts]=wavread('one.wav');
y2=y-(min(y));
y2=y2/max(y2);
y2=y2* (2^16 - 1) - 2^15;
y2b=int16(y2);
任何人都可以指导我这个相反的过程吗?
答案 0 :(得分:0)
您似乎需要保存(并存储)ymin = min(y)
和y2max = max(y2)
以进行撤消。然后获取int16的双版本并根据需要执行反转过程:
y3 = double(y2b);
y3 = (y3 + 2^15) / (2^16 - 1);
y3 = y3 * y2max;
y3 = y3 + ymin;
然后根据需要将y3存储到输出文件中。
答案 1 :(得分:0)
elomage颠倒了正常化,我没有看到任何理由这样做,因为lsb迷失了。
double(x)/intmax(class(x))