如何在从音频文件中过滤基本信号后调制隐藏消息

信息处理 调制 调频
2022-02-13 12:07:03

我有一个 6 秒长的音频文件。该文件在超高频范围内隐藏了一条消息。我绘制采样率为 44100 的梅尔频谱图,并使用高通滤波器过滤基本信号,这是我在滤波之前和滤波之后绘制的梅尔频谱图

过滤前

过滤后

为了过滤,我使用了以下代码:

import librosa
from scipy import signal

x, sr = librosa.load(soundfile_4, sr=44100)
b = signal.firwin(101, cutoff=12000, fs=sr, pass_zero=False)
x = signal.lfilter(b, [1.0], x)

这是滤波信号的波形图:

在此处输入图像描述

我的问题是,过滤后,如何将信息从超高频范围降低到可听范围?!我知道我应该使用幅度解调,但不太清楚如何!

1个回答

如果“AM”是 DSB-SC AM,您只需乘以载波频率和低通滤波器即可解调。我们可以通过观察您的滤波信号随时间(作为波形)来确定更多信息 - 包括如何提取载波,您也可以绘制它吗?

除此之外,假设它是 DSB-SC AM 调制,我建议以下作为一种简单的解调技术(我刚刚编造的,所以需要批评,如果这真的有效):

通过以采样率交替 +1 -1 的交替序列,将调制信号的滤波信号单独相乘。这将反转频谱,例如将调制和频谱对称的波形移动到较低频率(称为载波-x,它给定载波f1奈奎斯特频率fs/2,运营商-x 将在fs/2f1),我们可以简单地对波形进行平方(如果是 DSB-SC)来确定载波频率(意味着将波形与自身相乘,如x2)。这将产生两倍于载波频率的强频率,调制剥离。对于后处理解调,通过在每个样本之间插入零来以一半的速率播放这个提取的载波(这会将恢复的载波延伸到一半速率,并在谐波处产生额外的载波,但我相信后续滤波应该拒绝这些分量,以便不需要额外的插值滤波),然后将其直接与载波 x 处的调制信号相乘。低通滤波器此结果(鉴于 OP 提供的图,1 KHz 的低通滤波器似乎足够了,但它应该小于fs/2f1, 目的是阻止出现在2(fs/2f1).

除非知道这条消息是隐藏的音频,否则我会怀疑它是一种数据模式,例如签名标签。