matlab音频水印算法研究+代码

简介: matlab音频水印算法研究+代码
%加入白噪声的音频水印程序
clear;
[y ,fs] = audioread('mei.wav');   %读入原始音频文件
[c,l]=wavedec(y,3,'db4');               %三级小波分解
ca3=appcoef(c,l,'db4',3);%提取3级近似系数,绘制原始信号和近似系数。
cd3=detcoef(c,l,3);%提取 3 所指定的级别上的细节系数
cd2=detcoef(c,l,2);%提取 2 所指定的级别上的细节系数
cd1=detcoef(c,l,1);%提取 1 所指定的级别上的细系数节
x=ca3;    %提取近似低频系数
len=length(y);  %计算音频数据长度
x1=x;%x重新赋值给x1
s=max(abs(x))*0.2;%对近似系数的绝对值,求其中的最大值,再乘以0.2
i=find(abs(x)>s);lx=length(x(i));         %找出大于最大值0.2倍的序列
figure;%创建图窗窗口
subplot(2,2,1);%将当前图窗划分为 2×2 网格,并在1指定的位置创建坐标区
plot(ca3);                            %画出低频系数图
title('低频系数图形');%标题
subplot(2,2,2);%将当前图窗划分为 2×2 网格,并在2指定的位置创建坐标区
plot(cd3);%画出第3级的细节系数。
title('cd3');%标题
subplot(2,2,3);%将当前图窗划分为 2×2 网格,并在3指定的位置创建坐标区
plot(cd2);%画出第2级的细节系数。
axis([0 10e4 -0.5 0.5]);%设置坐标轴范围和纵横比
title('cd2');%标题cd2
subplot(2,2,4);%将当前图窗划分为 2×2 网格,并在3指定的位置创建坐标区
plot(cd1);%画出cd1
title('cd1');%标题cd1
randn('seed',10);      %产生随机高斯序列
mark=randn(1,lx);%创建一个由随机数组成的 1×lx 向量。
ss=mark;%mark赋值给ss
rr=ss*0.1;                       %设置水印嵌入强度
x(i)=x(i).*(1+2*rr');                   %嵌入水印
c1=[x',cd3',cd2',cd1'];  %创建矩阵c1
s1=waverec(c1,l,'db4');%重建信号
file1='已加水印.wav';
dd=length(s1);                     %调整s1的长度,使之可以分成两列
s11=s1;                            %s1的值不能改变,因为后面还需要用到
if rem(dd,2)==1                    %如果s1是奇数,则去掉最后一个数,将新数组定义为s11
    s11=s1(1:dd-1);               
end
ee=reshape(s11,[],2);                %将s1调整成2列的数组
audiowrite(file1,y,fs);%将加水印的音频写入file1.wav
figure;%创建图窗
subplot(3,1,1);%创建3*1的网格,把该图放在第一个位置
plot(y);                   %画出原信号图
axis([0 18e4 -2 2]);%设置坐标轴范围和纵横比
title('原信号的图');     %标题               
subplot(3,1,2);plot(ss);    %创建3*1的网格,把该图放在第二个位置
title('水印图');
subplot(3,1,3);plot(s1);                  %画出嵌入了水印的信号图
title('加入了水印的声音信号')%加标题
kk.wave = wavread('已加水印'); 
yc=kk.wave;
dy=length(y);
if rem(dy,2)==1                         %如果y为奇数,处理同s1,但是因为后面不需要用到y,所以不必定义一个新数组
    y=y(1:dd-1);
end
y1=reshape(y,[],2);                       %调整数组y的维数,使之可以和yc做运算
fz=sum(y1.*y1);  %计算嵌入了水印的信号的信噪比,".*"用于实现对应元素的乘法

结果:

1.png

相关文章
|
1天前
|
机器学习/深度学习 人工智能 自然语言处理
【自然语言处理】TF-IDF算法在人工智能方面的应用,附带代码
TF-IDF算法在人工智能领域,特别是自然语言处理(NLP)和信息检索中,被广泛用于特征提取和文本表示。以下是一个使用Python的scikit-learn库实现TF-IDF算法的简单示例,并展示如何将其应用于文本数据。
115 64
|
6天前
|
算法
基于模糊控制算法的倒立摆控制系统matlab仿真
本项目构建了一个基于模糊控制算法的倒立摆控制系统,利用MATLAB 2022a实现了从不稳定到稳定状态的转变,并输出了相应的动画和收敛过程。模糊控制器通过对小车位置与摆的角度误差及其变化量进行模糊化处理,依据预设的模糊规则库进行模糊推理并最终去模糊化为精确的控制量,成功地使倒立摆维持在直立位置。该方法无需精确数学模型,适用于处理系统的非线性和不确定性。
基于模糊控制算法的倒立摆控制系统matlab仿真
|
11天前
|
安全
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
本文介绍了2023年高教社杯数学建模竞赛D题的圈养湖羊空间利用率问题,包括问题分析、数学模型建立和MATLAB代码实现,旨在优化养殖场的生产计划和空间利用效率。
30 6
【2023高教社杯】D题 圈养湖羊的空间利用率 问题分析、数学模型及MATLAB代码
|
2天前
|
机器学习/深度学习 人工智能 算法
【人工智能】传统语音识别算法概述,应用场景,项目实践及案例分析,附带代码示例
传统语音识别算法是将语音信号转化为文本形式的技术,它主要基于模式识别理论和数学统计学方法。以下是传统语音识别算法的基本概述
7 2
|
5天前
|
机器学习/深度学习 算法 定位技术
MATLAB - 遗传算法(GA)求解旅行商问题(TSP)
MATLAB - 遗传算法(GA)求解旅行商问题(TSP)
11 3
|
6天前
|
搜索推荐 算法 Java
|
6天前
|
算法
基于多路径路由的全局感知网络流量分配优化算法matlab仿真
本文提出一种全局感知网络流量分配优化算法,针对现代网络中多路径路由的需求,旨在均衡分配流量、减轻拥塞并提升吞吐量。算法基于网络模型G(N, M),包含N节点与M连接,并考虑K种不同优先级的流量。通过迭代调整每种流量在各路径上的分配比例,依据带宽利用率um=Σ(xm,k * dk) / cm来优化网络性能,确保高优先级流量的有效传输同时最大化利用网络资源。算法设定收敛条件以避免陷入局部最优解。
|
10天前
|
存储 算法 Serverless
【matlab】matlab基于DTW和HMM方法数字语音识别系统(源码+音频文件+GUI界面)【独一无二】
【matlab】matlab基于DTW和HMM方法数字语音识别系统(源码+音频文件+GUI界面)【独一无二】
|
10天前
|
存储 Serverless
【matlab】matlab实现倒谱法基音频率检测和共振峰检测(源码+音频文件)【独一无二】
【matlab】matlab实现倒谱法基音频率检测和共振峰检测(源码+音频文件)【独一无二】
|
12天前
|
数据采集 存储 移动开发
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码
本文介绍了2023年五一杯数学建模竞赛B题的解题方法,详细阐述了如何通过数学建模和MATLAB编程来分析快递需求、预测运输数量、优化运输成本,并估计固定和非固定需求,提供了完整的建模方案和代码实现。
25 0
【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码

热门文章

最新文章