【语音加密解密】男女生语音合成加密解密【含GUI Matlab源码 3162期】

✅博主简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,Matlab项目合作可私信。
🍎个人主页:海神之光
🏆代码获取方式:
海神之光Matlab王者学习之路—代码获取方式
⛳️座右铭:行百里者,半于九十。

更多Matlab仿真内容点击👇
Matlab图像处理(进阶版)
路径规划(Matlab)
神经网络预测与分类(Matlab)
优化求解(Matlab)
语音处理(Matlab)
信号处理(Matlab)
车间调度(Matlab)

⛄一、简介(附课程作业报告)

1.绪论
1.1MATLAB软件功能简介

Matlab是一种数据分析和处理功能十分强大的计算机应用软件,它可以将声音文件变换为离散的数据文件,然后利用其强大的矩阵运算能力处理数据,如数字滤波、傅里叶变换、时域和频域分析、声音回放以及各种图的呈现等,它的信号处理与分析工具箱为语音信号分析提供了十分丰富的功能函数,利用这些功能函数可以快捷而又方便地完成语音信号的处理和分析以及信号的可视化,使人机交互更加便捷。信号处理是Matlab重要应用的领域之一。

1.2本课题的研究内容
利用参数合成法中的线性预测合成法(LPC)对语音信号进行处理,使输入的语音信号可以产生变速不变调以及变调不变速两种效果。采用调幅和相干解调分别对语音信号加密和解密。利用GUI界面使操作简单方便,并且在变速、变调的时候可以通过滑动条改变合成激励的长度,基音频率PT以及共振峰频率,使变速变调语音产生不同的效果。

2.系统设计
2.1设计的总体方案图
2.1.1语音合成

在这里插入图片描述

图1 分析和合成语音的系统框图
首先要分析一段(一般是10ms)语音得到它的最佳{ai}系数。给定这些系数后,就可以适当的输入来合成语音。对于浊音信号,一种可取的激励模型就是以特定频率重复的单位样值序列,这个频率就是基音频率。对清音,最好选择随机噪声或者白噪声作为输入。但在不做清浊判决的情况下,全部采用周期激励的合成质量也可以接受。
分析过程如下:首先,抽样的语音信号被分成10ms长的段;然后,对每段数据进行统计分析,计算相邻样点的相关性并最终得到最佳预测系数。合成过程就是利用这些预测系数,以及周期的单位样值序列作为输入,依次得到每段合成语音。

2.1.2语音解密、解密
在这里插入图片描述
图2 加密、解密框图
2.2整体设计思路
先对原始的语音进行分析,并使用自定义函数prefourier对语音进行短时傅里叶分析。使用线性预测合成法(LPC编码)对语音进行处理,使其能有变速和变调的效果。其中要的合成参数有:控制音强的幅度、控制音高的基频和控制音色的共振峰参数。
对语音信号加一个直流偏量A0后与载波相乘,即可形成调幅信号。解调采用相干解调的方法,相干解调也叫同步检波,相干解调时,为了无失真地恢复原基带信号,接收端必须提供一个与接收的已调载波严格同步的载波,它与接收的已调信号相乘后,经低通滤波器取出低频分量,即可得到原始的基带调制信号。

3.线性预测合成法原理
3.1语音生成模型

从物理原理来看,语音信号是由肺挤压出的空气激励发声器官振动产生的。说话时声带相互靠拢但不完全封闭,这样声门变成一条窄缝,当气流通过时其间压力减小,从而声带完全合拢使气流不能通过;在气流被阻断时压力恢复正常,因而声带间形成空隙,气流再次通过。这一过程周而复始,就形成了一串周期性的脉冲气流送入声道。如图3所示。这个脉冲串的周期称为“基音周期”,其倒数是“基音频率”。男性说话时的基音频率在60-200Hz范围内,女性和小孩在200-450Hz之间。以上这种方式发出的音就是浊音。
在这里插入图片描述

图3 典型的声门脉冲串波形
通过对声管的研究,发现它可以用若干段级连的不等截面积均匀管道进行描述,如图4,一般称作级连无损声管模型。采用流体力学的方法可以证明每一截均匀管道的频响能够用一个但极点模型来近似,这样N段管道组成的声管就可以用一个N阶全极点滤波器表述,即:
在这里插入图片描述

在这里插入图片描述

图4 级联无损声管模型
对于典型的男声,N=10,所有的极点要分别构成共轭对以保证系数都是实数。在综合考虑清音信号,就可以得到产生语音信号的离散语音模型,如图5所示。
在这里插入图片描述

图5 产生语音信号的离散时域模型
对上述模型进行充分简化。首先去掉随机信号激励部分,认为激励信号是一个脉冲序列,不考虑有无周期。其次去掉声门脉冲模型和口唇的辐射模型,因而得到如图6所示最简单的语音模型:
在这里插入图片描述

图6 简化的语音生成模型
假设激励信号用e(n)表示,语音信号用s(n)表示,根据全极点模型表达式,有:
在这里插入图片描述

从而可以用声管模型对激励信号进行滤波得到语音信号。

3.2语音预测模型
假设已经知道了系数,那么将图6的输入和输出对换,就构成了语音的预测模型,即语音信号s(n)送入预测滤波器,得到预测残差e(n)。
在这里插入图片描述

假设信号的发端和收端都知道预测系数,那么发端只需要把误差e(n)传到收端即可,因为收端可以用e(n)作为上述差分方程的激励得到重建语音。在发端,语音s(n)是滤波器的输入,而误差e(n)是输出。事实上,系数当然也需要从发端传到收端,但因为语音具有短时平稳性,即在短时间内(比如10ms),系数可以认为不发生变化,所以也不必太频繁地传输,因而采用预测技术后,总是可以大幅度地降低语音的带宽。这种通过现行预测方法压缩语音数据量的技术称为线性预测编码。

3.3语音重建模型
如果知道激励信号x(n)和滤波器系数,就可以利用激励生成重建语音了和语音生成模型的公式完全相同。这个模型被称为语音重建模型,为了同生成模型区分开,称为重建语音,如果x(n)正好等于e(n),那么重建语音就会和原始语音s(n)完全相同。
在这里插入图片描述

语音的非平稳性(虽然短时平稳)导致预测系数是时变的,一般每10~20ms就会发生一些变化以产生不同的音节。在这种情况下,滤波过程也要分段进行,即每次用不同的滤波器系数,但相邻两次滤波必须要保持滤波器的状态不发生变化。

3.4谐振和共振峰频率
语音生成模型的每一对共轭极点都对应一个衰减的正弦信号的特征响应。例如一对共轭极点在时域冲激响应中的贡献是。其中极点幅度决定衰减速度,幅角决定振荡频率。
对语音合成,用数字的正弦信号表示抽样后的连续正弦信号。在这种情况下,模拟频率和数字频率的关系是,其中T表示抽样间隔,表示模拟频率(弧度),对应的称为共振频率,它定义了声道的谐振频率。当模型参数变化时,共振峰频率也随着变化,从而产生不同的声调。

3.5变速不变调
所谓变速不变调,是指声音播放时,速度的改变不会导致音调的变化。为了实现变速不变调,首先需要将表示“调”的内容从语音中分离出来,由前述语音预测模型,表示“调”的有两个部分,一是共振峰频率,即预测模型的参数;二是基音周期,即激励信号的参数。接下来的工作就是在不改变这两种参数的前提下改变数据长度。即将10ms的80个样点的激励变成20ms160个样点(保持单位样值的周期不变),在这20ms内保持预测模型系数不变,就合成了20ms语音了。新语音的声调和原有语音是完全相同的,只不过时间变长了而已。

3.6变调不变速
与变速不变调想法类似,可以考虑将激励信号的频率增加(不改变信号长度),同时将共振峰频率也相应增大一些(即极点的幅角绝对值增大,或者说上半平面的极点逆时针旋转,下半平面的极点顺时针旋转,但注意两者都要旋转相同角度而且不要转过负实轴),这样得到的合成语音频率将变高。

3.7语音加密
标准调幅就是常规双边带调制,简称调幅(AM)。通过改变输出信号的振幅,来实现传送信息的目的。一般在调制端输出的高频信号的幅度变化与原始信号成一定的函数关系,在解调端进行解调并输出原始信号。对语音信号加一个直流偏量A0后与载波相乘,即可形成调幅信号。AM波的包络与调制语音信号的形状完全一样,频谱由载频分量、上边带、下边带三部分组成。
解调采用相干解调的方法,相干解调也叫同步检波,相干解调时,为了无失真地恢复原基带信号,接收端必须提供一个与接收的已调载波严格同步的载波,它与接收的已调信号相乘后,经低通滤波器取出低频分量,即可得到原始的基带调制信号。

⛄二、部分源代码

function varargout = yuyin(varargin)
% YUYIN MATLAB code for yuyin.fig
% YUYIN, by itself, creates a new YUYIN or raises the existing
% singleton*.
%
% H = YUYIN returns the handle to a new YUYIN or the handle to
% the existing singleton*.
%
% YUYIN(‘CALLBACK’,hObject,eventData,handles,…) calls the local
% function named CALLBACK in YUYIN.M with the given input arguments.
%
% YUYIN(‘Property’,‘Value’,…) creates a new YUYIN or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before yuyin_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to yuyin_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE’s Tools menu. Choose “GUI allows only one
% instance to run (singleton)”.
%
% See also: GUIDE, GUIDATA, GUIHANDLES

% Edit the above text to modify the response to help yuyin

% Last Modified by GUIDE v2.5 08-Jun-2023 10:50:29

% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton, …
‘gui_OpeningFcn’, @yuyin_OpeningFcn, …
‘gui_OutputFcn’, @yuyin_OutputFcn, …
‘gui_LayoutFcn’, [] , …
‘gui_Callback’, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end

if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% — Executes just before yuyin is made visible.
function yuyin_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to yuyin (see VARARGIN)

% Choose default command line output for yuyin
handles.output = hObject;

% Update handles structure
guidata(hObject, handles);
ha=axes(‘units’,‘normalized’,‘position’,[0 0 1 1]);
uistack(ha,‘down’)
II=imread(‘timg.jpg’);% 뱳 ͼ
image(II)
colormap gray
set(ha,‘handlevisibility’,‘off’,‘visible’,‘off’);

set(handles.num1,‘Min’,0.5,‘Max’,2);
set(handles.num1,‘Value’,0.5);
set(handles.num2,‘Min’,0.5,‘Max’,2);
set(handles.num2,‘Value’,0.5);

% UIWAIT makes yuyin wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% — Outputs from this function are returned to the command line.
function varargout = yuyin_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;

% — Executes on button press in nanshengbofang.
function nanshengbofang_Callback(hObject, eventdata, handles)
% hObject handle to nanshengbofang (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global y;
global fs;
global nbits;
axes(handles.axes_yuansheng);
[y,fs]=audioread(‘test_speech_ .wav’);
plot(y);
title(‘ԭ ‘);ylabel(’ ֵ’);
sound(y,fs);

% — Executes on button press in yuansheng_pinpu.
function yuansheng_pinpu_Callback(hObject, eventdata, handles)
% hObject handle to yuansheng_pinpu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global y;
global fs;
axes(handles.axes_pinpu1);
N=length(y);%
s_syn=zeros(N,1);
Trg=[0,N-1]/fs;
OMGrg=[0,6000pi];K=1000;
[omg,FT]=prefourier(Trg,N,OMGrg,K);
Fourier_s=FT
y;
Fourier_s_syn=FT*s_syn;
plot(omg/2/pi,abs(Fourier_s));title('ԭ ');
axis([0,3000,0,0.02]);

% — Executes on button press in yuansheng_lingji.
function yuansheng_lingji_Callback(hObject, eventdata, handles)
% hObject handle to yuansheng_lingji (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global y;
global s;
global hw;
global FL;
global WL;
global P;
global FN;
global L;
axes(handles.axes_lingjidian1);
% 峣
FL=80;%֡
WL=240;%
P=10;%Ԥ ϵ Ԥ ϵ
s=y/max(y);% һ
L=length(s);%
FN=floor(L/FL)-2;% ֡
hw=hamming(WL);%
% δ ÿ֡
for n=3:FN % ӵ ֡ һ֡
% Ԥ ϵ
s_w=s(nFL-WL+1:nFL).*hw;% Ȩ
[A E]=lpc(s_w,P);% Ԥ ⷨ P Ԥ ϵ ,A Ԥ ϵ E ᱻ ϳɼ
if n==27
zplane(1,A);title('ԭ ');
end
end

% — Executes on button press in yuansheng_jili.
function yuansheng_jili_Callback(hObject, eventdata, handles)
% hObject handle to yuansheng_jili (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global s;
global fs;
global nbits;
global P;
global L;
global FN;
global FL;
global WL;
global hw;
global s_rec;
axes(handles.axes_jili);
cla(handles.axes_jili);
%Ԥ ؽ ˲
exc=zeros(L,1);% źţ Ԥ 
zi_pre=zeros(P,1);%Ԥ ˲ ״̬
s_rec=zeros(L,1);% ؽ
zi_rec=zeros(P,1);
% ϳ ˲
exc_syn=zeros(L,1);% ϳɵļ źţ 崮
s_syn=zeros(L,1);% ϳ
last_syn=0;% 洢 һ ε һ ±
zi_syn=zeros(P,1);% ϳ ˲ ״̬
% δ ÿ֡
for n=3:FN % ӵ ֡ һ֡
% Ԥ ϵ
s_w=s(nFL-WL+1:nFL).hw;% Ȩ
[A E]=lpc(s_w,P);% Ԥ ⷨ P Ԥ ϵ ,A Ԥ ϵ E ᱻ ϳɼ
s_f=s((n-1)FL+1:nFL);% ֡ Ҫ
% filter s_f 㼤 ע Ᵽ ˲ ״̬
[exc1,zi_pre]=filter(A,1,s_f,zi_pre);
exc((n-1)FL+1:nFL)=exc1;% õ ļ
% filter exc ؽ ע Ᵽ ˲ ״̬
[s_rec1,zi_rec]=filter(1,A,exc1,zi_rec);
s_rec((n-1)FL+1:nFL)=s_rec1;% õ ؽ
%ע ֻ ڵõ exc Ż ȷ
s_Pitch=exc(n
FL-222:nFL);
PT=findpitch(s_Pitch);% PT
G=sqrt(E
PT);% ϳɼ G
end
plot(exc);ylabel(’ ֵ’);title('ԭ ');
sound(exc,fs);
%xlabel(‘n (samples)’);

% — Executes on button press in yuansheng_chongjian.
function yuansheng_chongjian_Callback(hObject, eventdata, handles)
% hObject handle to yuansheng_chongjian (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global fs;
global nbits;
global s_rec;
axes(handles.axes_chongjian);
cla(handles.axes_chongjian);
plot(s_rec);ylabel(’ ');title('ԭ ؽ ');
%xlabel(‘n(samples)’)
sound(s_rec,fs);

% — Executes on button press in yunxing.
function yunxing_Callback(hObject, eventdata, handles)
% hObject handle to yunxing (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global s;
global fs;
global nbits;
global P;
global L;
global FN;
global FL;
global WL;
global hw;
global s_rec;
global v;
global B1;
global exc_syn_v;
global s_syn_v;
global exc_syn_t;
global s_syn_t;

exc=zeros(L,1);% źţ Ԥ 
zi_rec=zeros(P,1);
zi_pre=zeros(P,1);%Ԥ ˲ ״̬
last_syn=0;% 洢 һ ε һ ±
zi_syn=zeros(P,1);% ϳ ˲ ״̬
% ˲
exc_syn_t=zeros(L,1);% ϳɵļ źţ 崮
s_syn_t=zeros(L,1);% ϳ
last_syn_t=0;% 洢 һ ε һ ±
zi_syn_t=zeros(P,1);% ϳ ˲ ״̬
% ٲ ˲
v=get(handles.num1,‘Value’) ;
exc_syn_v=zeros(v\L,1);% ϳɵļ źţ 崮
s_syn_v=zeros(v\L,1);% ϳ
last_syn_v=0;% 洢 һ ε һ ±
zi_syn_v=zeros(P,1);% ϳ ˲ ״̬
% δ ÿ֡
for n=3:FN
% Ԥ ϵ
s_w=s(nFL-WL+1:nFL).hw;% Ȩ
[A E]=lpc(s_w,P);% Ԥ ⷨ P Ԥ ϵ
%A Ԥ ϵ E ᱻ ϳɼ
s_f=s((n-1)FL+1:nFL);% ֡ Ҫ
% filter s_f 㼤 ע Ᵽ ˲ ״̬
[exc1,zi_pre]=filter(A,1,s_f,zi_pre);
exc((n-1)FL+1:nFL)=exc1;% õ ļ
% filter exc ؽ ע Ᵽ ˲ ״̬
[s_rec1,zi_rec]=filter(1,A,exc1,zi_rec);
s_rec((n-1)FL+1:nFL)=s_rec1;% õ ؽ
s_Pitch=exc(n
FL-222:nFL);
PT=findpitch(s_Pitch);% PT
G=sqrt(E
PT);% ϳɼ G
% μ ֻ ޸ı γ
tempn_syn=[1:nFL-last_syn]';
exc_syn1=zeros(length(tempn_syn),1);
exc_syn1(mod(tempn_syn,PT)==0)=G;%ijһ
exc_syn1=exc_syn1((n-1)FL-last_syn+1:nFL-last_syn);
[s_syn1,zi_syn]=filter(1,A,exc_syn1,zi_syn);
exc_syn((n-1)FL+1:nFL)=exc_syn1;% õ ĺϳɼ
s_syn((n-1)FL+1:nFL)=s_syn1;% õ ĺϳ
last_syn=last_syn+PT
floor((nFL-last_syn)/PT);
% ٲ
% ı ں Ԥ ϵ ı ϳɼ ij ȣ Ϊfilter õ µĺϳ ٶȱ ˣ û б䡣
FL_v=floor(FL/v);
tempn_syn_v=[1:n
FL_v-last_syn_v]';
exc_syn1_v=zeros(length(tempn_syn_v),1);
exc_syn1_v(mod(tempn_syn_v,PT)0)=G;%ijһ
exc_syn1_v=exc_syn1_v((n-1)FL_v-last_syn_v+1:nFL_v-last_syn_v);
[s_syn1_v,zi_syn_v]=filter(1,A,exc_syn1_v,zi_syn_v);
last_syn_v=last_syn_v+PTfloor((nFL_v-last_syn_v)/PT);
exc_syn_v((n-1)FL_v+1:nFL_v)=exc_syn1_v;% õ ļӳ ϳɼ
s_syn_v((n-1)FL_v+1:nFL_v)=s_syn1_v;% õ ļӳ ϳ
%
% ı ں͹ Ƶ ʣ ºϳ
scale=get(handles.num2,‘Value’);
PT1=floor(PT/scale);% ı
poles=roots(A);%ͨ A 󼫵
%poles=roots(A);
gzf=get(handles.num3,‘Value’);% ı乲 Ƶ
deltaOMG=gzf2pi/fs;
for p=1:10% ӹ Ƶ ʣ ʵ Ϸ ļ ʱ ת · ˳ʱ ת
if imag(poles§)>0 poles§=poles§exp(jdeltaOMG);
elseif imag(poles§)<0 poles§=poles§exp(-jdeltaOMG);
end
end
A1=poly(poles);% ɸ ֵ ʽ ɼ 㷴 Aֵ
if n
27
B1=A1;
end
tempn_syn_t=[1:nFL-last_syn_t]';
exc_syn1_t=zeros(length(tempn_syn_t),1);
exc_syn1_t(mod(tempn_syn_t,PT1)==0)=G;%ijһ
exc_syn1_t=exc_syn1_t((n-1)FL-last_syn_t+1:nFL-last_syn_t);
[s_syn1_t,zi_syn_t]=filter(1,A1,exc_syn1_t,zi_syn_t);
exc_syn_t((n-1)FL+1:nFL)=exc_syn1_t;% õ ĺϳɼ
s_syn_t((n-1)FL+1:nFL)=s_syn1_t;% õ ĺϳ
last_syn_t=last_syn_t+PT1
floor((n*FL-last_syn_t)/PT1);
end

% — Executes on button press in biansu_jili.
function biansu_jili_Callback(hObject, eventdata, handles)
% hObject handle to biansu_jili (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global exc_syn_v;
axes(handles.axes_hecheng);
cla(handles.axes_hecheng);
plot(exc_syn_v); ylabel(’ ֵ’);xlim([0,length(exc_syn_v)]);
%xlabel(‘n (samples)’),
title(’ ٲ ϳɼ ');

% — Executes on button press in biansu_bofang.
function biansu_bofang_Callback(hObject, eventdata, handles)
% hObject handle to biansu_bofang (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global fs;
global nbits;
global s_syn_v;
axes(handles.axes_chongjian);
cla(handles.axes_chongjian);
sound(s_syn_v,fs,nbits);
plot(s_syn_v);ylabel(’ ֵ’),xlim([0,length(s_syn_v)]);
%xlabel(‘n(samples)’),
title(’ ٲ ');

% — Executes on button press in biansu_pinpu.
function biansu_pinpu_Callback(hObject, eventdata, handles)
% hObject handle to biansu_pinpu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global fs;
global L;
global v;
global s_syn_v;
axes(handles.axes_pinpu2);
Trg2=[0,L/v-1]/fs;
L2=L/v;
OMGrg=[0,6000pi];K=1000;
[omg,FT2]=prefourier(Trg2,L2,OMGrg,K);
Fourier_s_syn_v=FT2
s_syn_v;
plot(omg/2/pi,abs(Fourier_s_syn_v));
title(’ ٲ ');
axis([0,3000,0,0.02]);

% — Executes on button press in biandiao_jili.
function biandiao_jili_Callback(hObject, eventdata, handles)
% hObject handle to biandiao_jili (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global exc_syn_t;
axes(handles.axes_hecheng);
cla(handles.axes_hecheng);
plot(exc_syn_t),ylabel(’ ֵ’),xlim([0,length(exc_syn_t)]);
%xlabel(‘n(samples)’)
title(’ ٺϳɼ ');

% — Executes on button press in biandiao_bofang.
function biandiao_bofang_Callback(hObject, eventdata, handles)
% hObject handle to biandiao_bofang (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global fs;
global nbits;
global s_syn_t;
axes(handles.axes_chongjian);
cla(handles.axes_chongjian);% ͼ
plot(s_syn_t),ylabel(’ ֵ’),xlim([0,length(s_syn_t)]);
title(’ ');
%xlabel(‘n(samples)’),
sound(s_syn_t,fs,nbits);

% — Executes on button press in biandiao_pinpu.
function biandiao_pinpu_Callback(hObject, eventdata, handles)
% hObject handle to biandiao_pinpu (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global fs;
global L;
global s_syn_t;
axes(handles.axes_pinpu2);
Trg=[0,L-1]/fs;
OMGrg=[0,6000pi];K=1000;
[omg,FT]=prefourier(Trg,L,OMGrg,K);
Fourier_s_syn_t=FT
s_syn_t;
plot(omg/2/pi,abs(Fourier_s_syn_t));
title(’ ');
axis([0,3000,0,0.01]);

% — Executes on button press in biandiao_lingji.
function biandiao_lingji_Callback(hObject, eventdata, handles)
% hObject handle to biandiao_lingji (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global B1;
axes(handles.axes_lingjidian2);
zplane(1,B1);title(’ ');

% — Executes on slider movement.
function num1_Callback(hObject, eventdata, handles)
% hObject handle to num1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘Value’) returns position of slider
% get(hObject,‘Min’) and get(hObject,‘Max’) to determine range of slider

% — Executes during object creation, after setting all properties.
function num1_CreateFcn(hObject, eventdata, handles)
% hObject handle to num1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,[.9 .9 .9]);
end

% — Executes on slider movement.
function num2_Callback(hObject, eventdata, handles)
% hObject handle to num2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘Value’) returns position of slider
% get(hObject,‘Min’) and get(hObject,‘Max’) to determine range of slider

% — Executes during object creation, after setting all properties.
function num2_CreateFcn(hObject, eventdata, handles)
% hObject handle to num2 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,[.9 .9 .9]);
end

% — Executes on slider movement.
function num3_Callback(hObject, eventdata, handles)
% hObject handle to num3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘Value’) returns position of slider
% get(hObject,‘Min’) and get(hObject,‘Max’) to determine range of slider

% — Executes during object creation, after setting all properties.
function num3_CreateFcn(hObject, eventdata, handles)
% hObject handle to num3 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,[.9 .9 .9]);
end

function record_time_Callback(hObject, eventdata, handles)
% hObject handle to record_time (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,‘String’) returns contents of record_time as text
% str2double(get(hObject,‘String’)) returns contents of record_time as a double

% — Executes during object creation, after setting all properties.
function record_time_CreateFcn(hObject, eventdata, handles)
% hObject handle to record_time (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called

% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,‘BackgroundColor’), get(0,‘defaultUicontrolBackgroundColor’))
set(hObject,‘BackgroundColor’,‘white’);
end

⛄三、运行结果

在这里插入图片描述

⛄四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1]韩纪庆,张磊,郑铁然.语音信号处理(第3版)[M].清华大学出版社,2019.
[2]柳若边.深度学习:语音识别技术实践[M].清华大学出版社,2019.

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

🍅 仿真咨询
1 各类智能优化算法改进及应用

生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化

2 机器学习和深度学习方面
卷积神经网络(CNN)、LSTM、支持向量机(SVM)、最小二乘支持向量机(LSSVM)、极限学习机(ELM)、核极限学习机(KELM)、BP、RBF、宽度学习、DBN、RF、RBF、DELM、XGBOOST、TCN实现风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断

3 图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知

4 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、车辆协同无人机路径规划、天线线性阵列分布优化、车间布局优化

5 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配

6 无线传感器定位及布局方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化

7 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化

8 电力系统方面
微电网优化、无功优化、配电网重构、储能配置

9 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长

10 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值