数字语音处理——用sound函数播放喀秋莎(附赠歌唱动荡的青春)
sound函数
上课老师提到了sound函数,一个非常简单的函数,sound - 将信号数据矩阵转换为声音。以下为其用法:
sound(y) //以默认采样率 8192 赫兹向扬声器发送音频信号 y。
sound(y,Fs) //以采样率 Fs 向扬声器发送音频信号 y。
sound(y,Fs,nBits) //对音频信号 y 使用 nBits 的采样位数。
生成波形的函数
在这里用第一种用法即可。
首先编写一个生成波形的函数gen_wave。
// An highlighted block
function y=gen_wave(tone,rythm)
Fs=8192;
%freqs=[523,578,659,698,783,880,988,1047,1174,1318,1397,1567,1760,1976,2094,2219,2350,1];%c
%freqs=[392,440,494,523,578,659,740,783,880,988,1046,1175,1318,1480,1568,1865,1976,1];%g
%freqs=[349,392,440,466,523,578,659,698,783,880,932,1047,1174,1318,1397,1567,1750,1];%f
freqs=[440,494,554,578,659,740,831,880,988,1109,1174,1318,1480,1661,1760,1976,2218,1];%a
x=linspace(0,2*pi*rythm,floor(Fs*rythm));if tone<=17y=exp(-x/rythm/2).*(sin(freqs(tone)*x)+0.25*sin(2*freqs(tone)*x)+0.0625*...sin(4*freqs(tone)*x)+0.015625*sin(8*freqs(tone)*x));%几个乱写的谐波,听起来好听一点
elsey=0*exp(-x/rythm).*sin(freqs(tone)*x);
end
//那几个数组分别是各个调对应的频率
喀秋莎
对照简谱编写脚本并且运行
y1=gen_wave(8,0.75);
y2=gen_wave(6,0.25);
y3=gen_wave(7,0.75);
y4=gen_wave(5,0.25);
y5=gen_wave(7,0.25);
y6=gen_wave(7,0.25);
y7=gen_wave(6,0.25);
y8=gen_wave(5,0.25);
y9=gen_wave(4,0.5);
y10=gen_wave(6,0.5);
y11=gen_wave(4,0.5);
y12=gen_wave(9,0.25);
y13=gen_wave(8,0.75);
y14=gen_wave(6,0.25);
y15=gen_wave(5,0.25);
y16=gen_wave(4,0.25);
y17=gen_wave(3,0.25);
y18=gen_wave(8,0.25);
y19=gen_wave(6,1);
part0=[y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19];y1=gen_wave(6,0.75);
y2=gen_wave(7,0.25);
y3=gen_wave(8,0.75);
y4=gen_wave(6,0.25);
y5=gen_wave(8,0.5);
y6=gen_wave(7,0.25);
y7=gen_wave(6,0.25);
y8=gen_wave(7,0.5);
y9=gen_wave(3,0.5);
y10=gen_wave(7,0.75);
y11=gen_wave(8,0.25);
y12=gen_wave(9,0.75);
y13=gen_wave(7,0.25);
y14=gen_wave(9,0.25);
y15=gen_wave(9,0.25);
y16=gen_wave(8,0.25);
y17=gen_wave(7,0.25);
y18=gen_wave(6,1);
part1=[y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18];y1=gen_wave(10,0.5);
y2=gen_wave(13,0.5);
y3=gen_wave(12,0.5);
y4=gen_wave(13,0.25);
y5=gen_wave(12,0.25);
y6=gen_wave(11,0.5);
y7=gen_wave(10,0.25);
y8=gen_wave(9,0.25);
y9=gen_wave(10,0.5);
y10=gen_wave(6,0.75);
y11=gen_wave(11,0.5);
y12=gen_wave(9,0.25);
y13=gen_wave(10,0.75);
y14=gen_wave(8,0.25);
y15=gen_wave(7,0.25);
y16=gen_wave(3,0.25);
y17=gen_wave(8,0.25);
y18=gen_wave(7,0.25);
y19=gen_wave(6,1);
part2=[y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17,y18,y19];
KQS=[part0,part1,part2,part2];
sound(KQS)
audiowrite('Катюша.wav',KQS,8192)
clear KQS
点击运行就大功告成啦(不过听不出来像什么)。
歌唱动荡的青春
最后再把歌唱动荡的青春代码分享给大家,还是用同样的函数。
%歌唱动荡的青春
%作曲:阿·巴赫慕托娃
%MATLAB程序:祖国在我心中
%% part1
y1=gen_wave(3,0.5);y2=gen_wave(6,0.5);
y3=gen_wave(6,0.25);
y4=gen_wave(7,0.25);
y5=gen_wave(8,0.5);
y6=gen_wave(6,0.5);y7=gen_wave(11,0.5);
y8=gen_wave(10,1);
y9=gen_wave(8,0.5);y10=gen_wave(9,0.5);
y11=gen_wave(9,0.5);
y12=gen_wave(10,0.5);
y13=gen_wave(9,0.25);
y14=gen_wave(8,0.25);y15=gen_wave(7,0.5);
y16=gen_wave(6,1);
part1=[y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16];
%% part2
y1=gen_wave(3,0.5);y2=gen_wave(6,0.5);
y3=gen_wave(6,0.25);
y4=gen_wave(7,0.25);
y5=gen_wave(8,0.5);
y6=gen_wave(6,0.5);y7=gen_wave(13,0.5);
y8=gen_wave(12,1);
y9=gen_wave(10,0.5);y10=gen_wave(11,0.5);
y11=gen_wave(11,0.25);
y12=gen_wave(10,0.25);
y13=gen_wave(11,0.5);
y14=gen_wave(12,0.5);y15=gen_wave(10,1.5);part2=[y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15];
%% part3
y16=gen_wave(10,0.5);y17=gen_wave(13,1);
y18=gen_wave(15,1);y19=gen_wave(14,0.5);
y20=gen_wave(13,1);
y21=gen_wave(12,0.25);
y22=gen_wave(13,0.25);y23=gen_wave(14,0.75);
y24=gen_wave(13,0.25);
y25=gen_wave(12,0.5);
y26=gen_wave(13,0.5);y27=gen_wave(10,1.5);
y28=gen_wave(8,0.5);y29=gen_wave(13,1);
y30=gen_wave(12,0.75);
y31=gen_wave(11,0.25);y32=gen_wave(10,0.5);
y33=gen_wave(9,1);
y34=gen_wave(11,0.5);y35=gen_wave(10,0.5);
y36=gen_wave(9,0.25);
y37=gen_wave(10,0.25);
y38=gen_wave(11,0.5);
y39=gen_wave(10,0.5);y40=gen_wave(13,2);part3=[y16,y17,y18,y19,y20,y21,y22,y23,y24,y25,y26,y27,y28,y29,y30,...y31,y32,y33,y34,y35,y36,y37,y38,y39,y40];
%% part4
SOTY=[part1,part2,part3];
sound(SOTY)
audiowrite('歌唱动荡的青春.wav',SOTY,8192)
clear SOTY
数字语音处理——用sound函数播放喀秋莎(附赠歌唱动荡的青春)相关推荐
- Matlab sound函数播放与停止播放音频
sound函数用法 1.sound(y) 2.sound(y, Fs) 3.sound(y, Fs, nBits) y为音频信号矩阵, Fs为采样率,即单位时间的样本个数(Hz), nBits表示每个 ...
- lf模型下声门脉冲matlab程序,数字语音处理及MATLAB仿真.rar第二章
<数字语音处理及MATLAB仿真.rar第二章>由会员分享,可在线阅读,更多相关<数字语音处理及MATLAB仿真.rar第二章(60页珍藏版)>请在人人文库网上搜索. 1.第二 ...
- ip地址转换数字函数 iton_数字转IP地址函数
-- 数字转 IP 地址函数: IF OBJECT_ID ( 'dbo.fn_IP2Str' )> 0 DROP FUNCTION dbo . fn_IP2Str GO CREATE FUNCT ...
- c语言英文字符转数字,C语言常用数字和字符串转换函数(国外英文资料).doc
C语言常用数字和字符串转换函数(国外英文资料) C语言常用数字和字符串转换函数(国外英文资料) C language commonly used Numbers and string conversi ...
- TF之LSTM:利用LSTM算法对mnist手写数字图片数据集(TF函数自带)训练、评估(偶尔100%准确度,交叉熵验证)
TF之LSTM:利用LSTM算法对mnist手写数字图片数据集(TF函数自带)训练.评估(偶尔100%准确度,交叉熵验证) 目录 输出结果 设计思路 代码设计 输出结果 第 0 accuracy 0. ...
- oracle sql 调用自定义函数_PSCAD入门教程(第7节):怎样调用fortran编写的自定义函数?(附模型)...
PSCAD入门教程(第7节):怎样调用fortran编写的自定义函数?(附模型)mp.weixin.qq.com https://www.zhihu.com/video/12422083467175 ...
- JavaScript实现判断32位的数字是否为正数isPositive算法(附完整源码)
JavaScript实现判断32位的数字是否为正数isPositive算法(附完整源码) isPositive.js完整源代码 isPositive.js完整源代码 export default fu ...
- 有一个小白程序员,写了一个只能对5个数字进行排序的函数,现在有25个不重复的数字,
题目:有一个小白程序员,写了一个只能对5个数字进行排序的函数,现在有25个不重复的数字,请问小白同学最少调用几次该函数,可以找出其中最大的三个数? A.5 B.6 C.7 D.8 答案:C 解析:第一 ...
- 语音信号调制matlab,第二章 语音信号的数字模型 数字语音处理及MATLAB仿真 教学课件.ppt...
第二章 语音信号的数字模型 数字语音处理及MATLAB仿真 教学课件 第二章 语音信号的数字模型 2.1 概述 本章重点介绍语音信号产生的数字模型,对语音信号的特性和听觉特性做一般介绍. 2.2 语音 ...
最新文章
- php用户类,php用户登陆类
- TestNG测试框架之失败测试重跑
- SSH基本原理和免密码登录
- php打印出函数的内容吗,PHP打印函数集合详解以及PHP打印函数对比详解(精)
- LeetCode 1366. 通过投票对团队排名(自定义排序)
- Internet Explorer 9 新功能:固定并快速打开常用网站
- 约瑟夫环(简单版)c语言解决
- 软件公司产品营销大数据分析(下)
- stm8s103k3 周期 捕获_基于stm8s103k3单片机串口UART的正确使用分享
- 接口测试一般怎么测?接口测试的流程和步骤~
- python窗口找图_python查找图片在原始图片上的坐标点
- 示波器的实时采样和等效采样
- javascript 表单提交和验证的方法
- 输入1-365 的一个数字判断它是几月几日
- (六)我的JavaScript系列:更好的JavaScript之CoffeeScript
- python按字母顺序排列_在python中检查字符串是否按字母顺序排列
- android 苹果开发进度,IOS 锁屏音乐信息显示(进度条,歌名等信息。)
- 地图数据的类型及编码方法
- Windows Office 2019 很抱歉,此功能看似已中断,并需要修复
- 遥感干货一览D——文献、文集、论坛、会议整理