用MATLAB设计一个超简单的变声GUI界面
来源:互联网 发布:马牌cc5与cc6数据对比 编辑:程序博客网 时间:2024/05/01 19:15
由于并非专业变声制作,所以原理上只是进行了对时间轴的压缩或拉伸(浅层的频率变换)和振幅的变化,没有对音频文件进行滤波啊什么的深入处理。只适合娱乐而已。(哈哈~~~)
实现效果:
每种声音变换对应一张图片。
实现原理:将音频看作一个二维轴,x轴代表播放的时间,y轴代表振幅;通过函数audioread()读取wav文件的数据长度和频率,利用数据长度比上频率就是时间长度;
[x,FS]=audioread(pathall); %pathall代表wav文件路径
t=(0:length(x)-1)/FS;
通过调节时间t的长短来变换频率FS;
eg:
x3=x*2;%低沉~闷,交响乐 t3=t*1.5; FS3=(0:length(x)-1)/t3;
1. GUIc操作界面的设计
a.新建>图形用户界面>选择默认的(default)
eg:
选择一个‘轴’调整合适的大小用来播放变声种类的图片;拽如4个按钮,并给每个控件设置名称和显示的文字,以及文字大小,当然还可设计背景颜色;(见附图黄色标记项)保存gui界面。
2. 程序的设计
在打开音频的按钮控件函数下添加如下代码,打开文件夹并获得文件路径;
[FileName,PathName] = uigetfile('*.wav'); pathall=strcat(PathName,FileName);
然后对wav文件进行读取:
[x,FS]=audioread(pathall); t=(0:length(x)-1)/FS;
当然程序需要定义两个全局变量x,t,因为后面变声程序需要调用这两个数据;所以得在上面程序前加上:
global x t;
所以导入音频按钮代码整体如下:
% --- Executes on button press in load_wav.function load_wav_Callback(hObject, eventdata, handles)% hObject handle to load_wav (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) global x t; [FileName,PathName] = uigetfile('*.wav'); pathall=strcat(PathName,FileName);%获得wav路径 [x,FS]=audioread(pathall);%读取wav文件的数据和频率 t=(0:length(x)-1)/FS;%变换得到播放时间
在变声处理的对应按钮下面进行x,t的处理以及加入图片显示和播放处理后的音频数据;(以大叔的为例)其他变声同样,只需改变显示的图片和变换t,x就可以了;
function uncle_wav_Callback(hObject, eventdata, handles)% hObject handle to uncle_wav (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) global x t; a=imread('C:\Users\Administrator\Desktop\zzz\dashu.JPG');%读取图片 axes(handles.axes1); imshow(a);%显示图片 %wav处理 x3=x*2;%低沉~闷 t3=t*1.5; FS3=(0:length(x)-1)/t3; sound(x3,FS3);%播放处理后的音频数据
代码:代码浏览
0 0
- 用MATLAB设计一个超简单的变声GUI界面
- 一个基于Matlab的简单Gui设计
- 用MATLAB的GUI绘图的一个简单例子
- 一个简单的matlab图形界面程序GUI
- MATLAB 编写一个简单的GUI
- 基于MATLAB GUI界面的MCU串口实时绘图设计
- 基于MATLAB GUI界面的MCU串口实时绘图设计
- 使用java的GUI设计一个简单的登陆界面(1)
- 【matlab】一个简单的matlab图形界面程序GUI
- pyFormUI: 一个简单的Python GUI界面框架
- 用 Matlab GUI搭建一个简单的CBIR图像检索系统(一)
- 用 Matlab GUI搭建一个简单的CBIR图像检索系统(二)
- 用Matlab GUI设计四则运算
- MATLAB GUI界面之间的数据传递
- Matlab GUI 界面间数据的传递
- MATLAB GUI界面总结
- Matlab GUI界面
- MATLAB GUI界面总结
- Mybatis最入门---动态查询(where,trim,set)
- 最小二乘法与梯度下降法
- [二分图 费用流] BZOJ 4514 [Sdoi2016]数字配对
- 360前端星计划
- 一个不会OOM的毛玻璃效果
- 用MATLAB设计一个超简单的变声GUI界面
- 【杭电】[1872]稳定排序
- Netmap分析(一)
- poj-3669-Meteor Shower
- Unity5利用Monodevelop调试Unity
- NYOJ 20 吝啬的国度 vector 容器 代码(思路)带解释
- 我的Ubuntu安装使用openCV记录(1)
- Python中数据的存取
- iOS字符串的方法