无噪声
音频数据处理
由于ask是数字调制,音频数据为模拟信号,如图:
首先要对模拟信号进行处理,转变成数字信号,这里使用了unpack k bit模块。
Float to Char模块Scale参数要设置为100,这是因为Float转为Char会忽略小数部分,造成失真,设为100可以保留两位小数,也可设置更大,但对于char类型没有太大意义。unpack k bit 用于将8位字节拆成bit,repeat用于控制传输速率。完成后会变成以下波形。
此时已经是数字信号,下一步进行ask调制
2ask调制
2ask调制信号有两种生成方式:相乘法和键控法,这里使用相乘法。
使用signal source 产生频率为100khz的余弦波,振幅为1。
基带信号和调制信号对比:
2ask信号的解调
这里使用了RMS模块、threashold模块来组成包络检波,将调制信号中的数字信号还原出来。思路是先用rms计算平均功率,再用threshold进行判决。
可以看出当alpha调成0.9时效果是比较好的,由于这里没有噪声干扰,alpha参数可以设置的很大。
然后使用threshold模块进行判决,threshold模块的判决参数设置为0.1,这里设为0.1的原因是因为上图中,经过rms计算后,调制信号部分整体上移约0.2,这里设为0.1,把高于0.1的判决为1,低于0.1的判决为0,这样就可以检波出原始信号了。
如图所示,原始信号和解调信号一模一样。
对音频数据进行复原
由于我们的音频数据是处理过的,因此要进行复原,kepp 1 in N的参数要设置为100,因为刚刚repeat中参数设置的为100,每个bit重复了100次。然后使用pack k bit模块,这个模块和unpack k bit是对应的。
通过对比原始音频波形,和解调后波形,会发现是完全一致的,这是由于理想环境没有噪声。
但是还是会有一些杂音,这是因为音频数据float to char时损失了一部分数据, 改进的方式就是换成float to int,然后参数设为1000,这样几乎完全没有失真了。
加入噪声
使用noise source模块加入噪声。
噪声幅度为0.3时
需要将alpha设为0.12,threshold判决门限设为0.52时效果是比较好的,如下图所示。
分别是,原始音频波形和解调后音频波形比较、数字信号波形和rms计算后波形、数字波形和threshold模块判决后波形。
可以改进的地方是加入带通滤波器,滤波后再进行rms计算效果会更好。