MATLAB 高级编程与工程应用 音乐合成 实验报告+源代码

合集下载

MATLAB 高级编程与工程应用 语音处理 实验报告+源代码

MATLAB 高级编程与工程应用 语音处理 实验报告+源代码

清华大学电子工程系MATLAB高级编程与工程应用实验二语音处理1.2.1(1)给定e(n) 假设e(n) 是输入信号,s(n) 是输出信号,上述滤波器的传递函数是什么?如果a1 = 1.3789,a2 = 0.9506 ,上述合成模型的共振峰频率是多少?用zplane ,freqz ,impz 分别绘出零极点图,频率响应和单位样值响应。

用filter 绘出单位样值响应,比较和impz 的是否相同。

分析:上述滤波器的传递函数是:H=11−1.3789z−1+0.9506z−2可以求出传递函数的极点为p = 0.6895 ±0.6894 i由此可以计算出模拟频率为Ω = pi/4,又因为T = 1/8000s,则可以得到共振峰频率f = 1000Hz。

使用zplane函数画出零极点图如下:使用freqz函数画出频率响应如下:使用impz函数画出单位样值响应如下:最后使用filter函数画出其单位样值响应如下:编写文件sounds_2_1.m,画出所有图像如下,可以直接比较filter函数和impz函数画出的单位样值响应几乎是一模一样的:sounds_2_1.m:clear;clc;close all;b = 1;a = [1,-1.3789,0.9506];n = [0:1:50];freqz(b,a); %画出频率响应图figure; %新建画布subplot(3,1,1);zplane(b,a); %画出零极点图subplot(3,1,2);impz(b,a,n); %利用impz函数画出单位样值响应subplot(3,1,3);x = (n == 0);stem(n,filter(b,a,x)); %利用filter函数画出单位样值响应(3)运行该程序到27 帧时停住,用(1)中的方法观察零极点图。

添加代码如下:运行程序得到零极点图如下:(4) 在循环中添加程序:对每帧语音信号s(n) 和预测模型系数fa i g ,用filter 计算激励信号e(n) 。

MATLAB音乐合成

MATLAB音乐合成
x=x+E*(sin(a(music(n)).*t)).*u{n}; end sound(x,32000);
包络波形:
1.5 1
0.5 0
-0.5
0
0.5
1
1.5
2
2.5
3
3.5
4
用指数衰减也不行。经过与同学对比,发现对音符间隔理解不用。如果向( 1) 中那样,第一个 5 演奏后,停顿一个音符,虽然更好听些,但是加包络以后,还 是会造成有高频分量。 所以改变方法,将 5 延长至下一个 5.
figure; subplot(3,1,1); plot(wave2proc); title( 'wave2proc' ); subplot(3,1,2); plot(sample2); title( 'sample2' ); subplot(3,1,3); plot(sample2-wave2proc'); title( 'sample2-wa ve2proc' );
K=2^(1/12); a0=220*pi/2; for n=1:20
a(n)=a0.*K^n; end b0=a0*2; for n=1:20
b(n)=b0.*K^n; end c0=a0*3; for n=1:20
c(n)=c0.*K^n; end
a(25)=0; b(25)=0; c(25)=0;
因为非线性谐波和噪声有一个共同点,就是随机产生,无周期性变化。 所以可以把波形进行若干次叠加,然后取平均值,可以想到,叠加次数越多,其 平均值就越接近于周期波形。 读出realwave波形,发现采样点为243,重复十次,可得周期为24.3,所以可 以将其延长至十倍,这样,周期就是整数。

matlab音乐合成报告

matlab音乐合成报告

MATLAB音乐合成综合实验学院:班级:指导老师:吴宪祥同做者:二0一六年十二月摘要本实验共有三部分:1.简单的音乐合成;2.用傅里叶变换分析音乐;3.基于傅里叶级数的音乐合成。

一步一步分析了用MATLAB进行音乐合成的过程。

通过本实验达到加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB基本使用的目标。

该实验采用MATLAB软件仿真来实现。

首先,通过编程对一段真实的音乐进行分析、处理,求得这段音乐的基频、谐波分量、等数据;然后,通过对乐理的研究,根据分析中求得的数据编写程序,进行基于傅里叶分析的音乐合成设计,并设计了图形用户界面。

目录1.绪论1.1 引言 (3)1.2 实验要求 (3)1.3 实验原理 (3)2.简单的合成音乐2.1 乐理知识介绍 (4)2.2 利用MATLAB实现音乐合成器,生成 WAV文件 (5)2.3 除噪音,加包络 (5)2.4 音乐升高和降八度 (9)2.5 加入谐波 (9)3.用傅里叶变换分析音乐3.1 载入fmt.wav并播放 (11)3.2 处理realware (11)3.3 分析wave2proc的基波和谐波 (13)3.4 自动分析fmt.wav的音调和节拍 (16)4.基于傅里叶级数的音乐合成4.1 重新加谐波 (17)4.2 通过音调信息弹奏《送别》 (19)5.制作GUI界面 (20)6.实验难点及问题 (21)7.实验收获 (22)1.绪论1.1 引言信号与系统的概念及分析方法广泛应用于通信、自动控制、航空航天、电子信息、地震学、生物工程等领域,因此“信号与系统”是一门电子信息学科相关专业的主干技术课程。

MATLAB 是国际上公认的优秀的科技应用软件,随着版本的不断升级,内容也在不断扩充。

基于MATLAB 的音乐分析与合成实验是针对“信号与系统”课程的重点和难点之一的傅里叶变换和傅里叶级数等内容而设计的。

由于该实验是真实音乐的实际应用,可以增进对傅里叶级数和傅里叶变换的理解,加深对信号分析工程应用的理解,提高在信号分析领域的应用能力。

Matlab音乐合成实验报告

Matlab音乐合成实验报告

课程设计《音乐合成》实验报告专业:测控技术与仪器班级:测控11-2 班*名:***学号: ***********指导教师:**广东石油化工学院计算机与电子信息学院信号与系统课程设计-------利用matlab合成音乐一、实验目的1. 熟悉MATLAB的软件和语言指令的使用;2. 学习利用MATLAB进行连续信号的时域、频域分析;3. 熟悉抽样信号与连续信号的区别。

二、实验内容1.请根据《画心》片断的简谱和“十二平均律”计算出该片断中各个乐音的频率,在MATLAB 中生成幅度为1抽样频率为8kHz 的正弦信号表示这些乐音。

请用sound 函数播放每个乐音,听一听音调是否正确。

最后用这一系列乐音信号拼出《画心》片断,注意控制每个乐音持续的时间要符合节拍,用sound 播放你合成的音乐,听起来感觉如何?并用图显示生成的音乐信号。

相关知识:①《画心》完整曲谱,实验时从中随机截取几节用于编程。

②利用十二平均律计算频率以及相关音乐知识。

如图1,其中错误!未找到引用源。

,错误!未找到引用源。

,错误!未找到引用源。

相当于错误!未找到引用源。

的二次谐波,二者是倍频的关系。

从A到A1共有12个键,7个白色键,5个黑色键。

中间这些频率值得计算规律为相邻音倍乘系数错误!未找到引用源。

即错误!未找到引用源。

,别的依次类推。

图1 钢琴键盘图1中各键对应的频率如下表:bG表示的F升高半音,在乐谱中用#表示。

或者G降低半音,用b表示。

乐谱这中的4/4表示每小节有四拍,一个1/4音符的持续时间为一拍,一拍大概0.5s左右。

eg:y=0*t; %初始化y(t<0.25)=sin(440*2*pi*t(t<0.25)); %第一个音 5,持续时间0.25sy(0.25<t&t<0.5)=sin(392*2*pi*t(0.25<t&t<0.5)); %第二个音3,持续时间0.25ssound(y,8000) %播放音乐三.实验步骤3.1音乐合成根据《画心》第一小节的简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB中生成幅度为1,抽样频率为8kHz的正弦信号表示这些乐音,用sound播放合成的音乐。

matlab程序设计实验报告

matlab程序设计实验报告

matlab程序设计实验报告《MATLAB程序设计实验报告》摘要:本实验报告旨在介绍MATLAB程序设计的基本原理和实践操作,通过实验演示和分析,展示了MATLAB在工程领域的应用和重要性。

本报告详细介绍了MATLAB程序设计的基本语法和常用函数,以及如何利用MATLAB进行数据处理、图像处理、信号处理等工程应用。

通过本报告的学习,读者将能够掌握MATLAB程序设计的基本技能,为工程实践提供有力的支持。

1. 引言MATLAB是一种用于算法开发、数据可视化、数据分析和数值计算的高级技术计算语言和交互式环境。

它具有强大的数学计算功能和丰富的绘图工具,广泛应用于工程、科学和金融等领域。

本实验报告将介绍MATLAB程序设计的基本原理和实践操作,帮助读者快速掌握MATLAB的基本技能。

2. 实验目的本实验的主要目的是让读者了解MATLAB程序设计的基本语法和常用函数,掌握MATLAB在工程领域的应用和重要性。

通过实验演示和分析,展示MATLAB 在数据处理、图像处理、信号处理等方面的应用。

3. 实验内容(1)MATLAB程序设计的基本语法和常用函数(2)利用MATLAB进行数据处理的实验演示(3)利用MATLAB进行图像处理的实验演示(4)利用MATLAB进行信号处理的实验演示4. 实验步骤(1)学习MATLAB程序设计的基本语法和常用函数(2)编写MATLAB程序,实现数据处理、图像处理、信号处理等功能(3)进行实验演示和分析,展示MATLAB在工程领域的应用和重要性5. 实验结果与分析通过本实验的学习,读者将能够掌握MATLAB程序设计的基本技能,包括数据处理、图像处理、信号处理等方面的应用。

通过实验演示和分析,读者将了解MATLAB在工程领域的重要性,为工程实践提供有力的支持。

6. 结论MATLAB程序设计是一种强大的工程工具,具有广泛的应用前景。

通过本实验报告的学习,读者将能够掌握MATLAB程序设计的基本技能,为工程实践提供有力的支持。

MATLAB中的音乐合成和音频处理技术

MATLAB中的音乐合成和音频处理技术

MATLAB中的音乐合成和音频处理技术音乐是人类文化的一部分,而音频处理和音乐合成则是现代技术的重要应用之一。

在MATLAB中,我们可以利用其强大的信号处理功能和数值计算能力,实现高质量的音频处理和音乐合成。

本文将探讨MATLAB中的音乐合成和音频处理技术,并介绍一些常用的方法和工具。

一、音频处理技术音频处理技术是指对音频信号进行各种操作和处理,以改善音频质量或提取有用信息。

MATLAB提供了许多处理音频信号的函数和工具箱,例如音频导入、滤波、降噪、特征提取等。

1. 音频导入和播放在MATLAB中,我们可以使用audioread函数将音频文件导入到工作空间中,并使用sound函数或audioplayer对象来播放音频。

2. 滤波和均衡器滤波是音频处理中常用的技术之一,用于去除噪声或强调特定频率的信号。

MATLAB提供了一系列滤波器设计和滤波函数,如低通滤波、高通滤波、带通滤波等。

此外,还可以使用均衡器调整音频频谱的均衡度。

3. 降噪和音频增益降噪是一项重要的音频处理任务,用于减少噪声对音频质量的影响。

MATLAB 中有多种降噪算法可供选择,如傅里叶变换降噪、小波降噪等。

此外,还可以通过调节音频增益来增强信号的强度和清晰度。

4. 音频特征提取音频特征提取是指从音频信号中提取与语音内容、音乐信息等相关的特征。

MATLAB中可以使用信号处理工具箱的功能来提取音频特征,如时域特征(如能量、过零率等)、频域特征(如频谱、谱图等)、光谱特征(如梅尔频率倒谱系数、线性预测编码系数等)等。

5. 音频合成和效果处理除了信号处理和特征提取外,MATLAB还提供了强大的音频合成和效果处理功能。

我们可以使用音频合成算法生成各种音频信号,如正弦波、白噪声、方波等。

此外,还可以使用音频效果处理算法实现音频混响、合唱、失真等效果。

二、音乐合成技术音乐合成是指通过声音的合成和处理,生成逼真的音乐作品。

在MATLAB中,我们可以利用其丰富的信号处理和数值计算功能,实现各种音乐合成技术。

如何进行MATLAB音频处理与合成

如何进行MATLAB音频处理与合成

如何进行MATLAB音频处理与合成MATLAB(Matrix Laboratory)是一种功能强大的科学计算软件,广泛应用于各个领域的工程和研究项目中。

其中,音频处理与合成是MATLAB的一个重要应用领域之一。

本文将探讨如何使用MATLAB进行音频处理与合成,以及其中的一些基本原理和方法。

一、音频信号的表示与处理在MATLAB中,音频信号通常是以数字矩阵的形式进行表示和处理。

每个音频样本被映射到一个数字值上,这些数字值按照一定的采样率进行采样,形成了一段音频信号的离散表示。

在进行音频处理前,需要将音频信号读取到MATLAB中,并将其转换为一个数字矩阵。

MATLAB提供了许多用于音频读取和写入的函数,如audioread()和audiowrite()。

使用audioread()函数可以将音频文件读取为数字矩阵,例如:```matlab[x, fs] = audioread('audio.wav');```其中,x表示音频信号的数字矩阵,fs表示采样率。

读取完音频信号后,我们就可以对其进行各种音频处理操作了。

二、音频处理操作1. 音频滤波音频滤波是一种常见的音频处理操作,通常用于去除噪声、调整音频声音质量等。

MATLAB提供了丰富的滤波函数和工具箱,如fir1()和butter()函数可以用于设计滤波器。

我们可以根据具体的需求选择滤波器类型,并将其应用于音频信号上,实现不同的滤波效果。

2. 音频均衡化音频均衡化是调整音频频谱,使其在不同频率上的能量均匀分布的过程,以改善音频的听感效果。

MATLAB提供了许多频域处理函数,如fft()和ifft(),可以用于对音频信号进行频谱分析和合成。

通过对音频信号进行频谱加权调整,即可实现音频均衡化的效果。

3. 音频时域处理音频时域处理是指对音频信号在时间上进行调整或变换的一类操作。

其中,常见的音频时域处理操作包括音频剪切、音频重采样等。

MATLAB提供了丰富的时域处理函数,如resample()和crop()函数可以用于音频重采样和剪切操作。

matlab音乐合成实验

matlab音乐合成实验
matlab 音乐合成实验
电信卓越班第4小组 黄钊炜、周瑛、吕舒亚、赖癸仲、唐伏龙、陈至珏
成果展示:
? 自选曲目:《天空之城》
? 必选曲目:《我们的歌》(节选)
信号分析——以钢琴为例
信号分析——以钢琴为例
信号分析——以钢琴为例
采样率
? 设原始采样率为 aHz,播放采样率为 bHz ? 若b>a:播放时长变短,音调变高 ? 若b<a:播放时长变长,音调变低 ? 因此,要使播放采样率与原始音乐信号采样率相
包络处理——钢琴
? 衰减特性与音符持续的长度有关 ? 对不同时间长度的音符,对包络函数进行伸缩变

包络处理——吉他
? 衰减特性与音符长度无关 ? 对不同时间长度的音符,对包络函数进行截取操

谢谢观赏

技术分析:?Leabharlann 提取谐波幅度的方法 ? 包络处理方法
谐波幅度的提取:
? 对频谱图进行观察,提取第一个主峰值以及对应 的横坐标 a
? 以k*a为中心,在( -100,100)的范围内提取峰值
? 将提取的峰值存入数组
包络处理:
? 对原始音乐信号进行时域分析,观察信号包络
? 对信号包络进行模拟,采用分段的方式,不断调 整包络函数上的各点,使其与原信号接近

毕业设计-基于matlab软件的音乐合成

毕业设计-基于matlab软件的音乐合成

河北经贸大学毕业论文基于MATLAB软件的音乐合成专业名称:电子信息工程班级:学生姓名:指导老师:完成时间:2015年5月摘要本设计利用MA TLAB软件,通过MA TLAB GUI构建一个具有图形用户界面的音乐合成系统。

该系统能实现音乐的简单合成、音乐的降噪处理、音乐的加谐波处理、音乐的升降度处理、音乐的时域和频域波形图显示及利用傅里叶级数原理合成音乐的操作。

本系统应用模块化的思路进行设计,将系统分为四个模块,分别为简单合成及处理音乐的模块、利用傅里叶变换分析音乐频谱的模块、基于傅里叶级数合成音乐的模块和音乐字幕动态显示的模块。

本论文阐述了整个系统详细的设计过程,而针对每个模块的设计都有详细的理论基础为依托,包括原理及设计程序,并且有仿真效果的演示。

该软件系统作为教学辅助软件可以为语音信号处理课程的教学提供一定的帮助,可以让学生们更好地深入理解信号与系统等主干课程的内容,充分发挥自身的创新能力与实践能力。

该系统可以通过选取不同的算法,对音乐分别进行处理,基本做到抑制噪声,提高音乐质量,有利于更高层次的处理与应用。

此外,从整体效果上看,该系统的用户应用界面友好、便于操作,通过菜单、控件的使用可以方便的选取不同的方法,设置不同的参数以便于用户操作使用。

系统通过对各种处理效果的演示,也可以让用户更直观地了解简单音乐处理的几种方法,并在各种相应处理前后的对比中让用户更容易接受与其对应的方法及特点。

关键词音乐合成;MTALAB;GUI;傅里叶变换AbstractThe design in this paper uses the MATLAB software to construct a music synthesis system with a graphical user interface by MATLAB GUI.The system can achieve simple music synthesis,the processing of reducing music noise,the treatment of music with harmonic,the processing of raising and lower octave,displaying waveform in time domain and frequency domain and synthesis of music based on Fourier series.This system takes the idea of modular design,divided into four modules, respectively including the module of music of simple synthesis and processing,the module of music spectrum analysis through using the Fourier transform,the module of music synthesis based on Fourier series,the module of displaying music subtitle dynamically.This paper,including the principle and program design and simulation results demonstrate, describes the design process of the system in detail.Each module has a detailed theoretical basis for support.As a teaching aid software can provide some help for the speech signal processing course in teaching,which can help students understand the signal and system course and give full play to students’ innovation ability and practice ability.Through selecting different algorithms,the system can dispose music respectively, suppress noise basically,improve the quality of music and avail to deal with the higher level.In addition,the graphic user interface of the system is friendly and easy to operate. Select different methods and set different parameters for users by using the menu,controls.Through a variety of demonstrations of effects,the system also makes users understand several ways of dealing with music more intuitively and in compare with before and after the all treatments,we can accept the corresponding methods and characteristics more easily.Keywords Music synthesis; MTALAB;GUI;Fourier transform目录1 绪论 (1)1.1 研究背景及意义 (1)1.2 研究的主要内容 (1)2 MA TLAB软件的简介 (3)2.1 MA TLAB的发展史 (3)2.2 MA TLAB的系统构成 (4)3MA TLAB音乐合成的原理 (5)3.1 所涉及的乐理知识简述 (5)3.1.1 音调与唱名 (5)3.1.2 音色与谐波 (5)3.1.3 十二平均律 (5)3.2 傅里叶变换与频谱分析 (6)4 MA TLAB音乐合成系统的总体设计 (7)4.1 系统的总体设计 (7)4.2 GUI界面的设计 (7)4.2.1 启动GUIDE (8)4.2.2 GUIDE设计环境 (8)4.2.3 GUI界面的功能设计 (9)5 MA TLAB音乐合成系统的设计与实现 (11)5.1 简单合成及处理音乐模块的设计与实现 (11)5.1.1 合成《社会主义好》 (11)5.1.2 加包络,除噪音 (12)5.1.3 音乐升降度处理 (13)5.1.4 音乐加谐波处理 (15)5.2 用傅里叶变换分析音乐频谱模块的设计与实现 (16)5.3 基于傅里叶级数合成的音乐模块的设计与实现 (20)5.4 音乐《小星星》字幕动态显示模块的设计与实现 (21)6 系统的调试与运行 (24)6.1 音乐的播放、暂停的调试与运行 (24)6.2 傅里叶变换分析音乐的调试与运行 (25)总结 (26)参考文献 (27)基于MA TLAB软件的音乐合成1 绪论1.1研究背景及意义如今,信息化、数字化程度越来越高,语音信号的处理技术作为基于数字信号处理技术与语音学知识对语音信号进行处理的新兴技术被越来越多的高科技产业广泛应用,这项技术成为信息科学工程与研究领域的核心技术之一。

使用matlab进行简单音乐合成

使用matlab进行简单音乐合成

信号与系统-综合实验之音乐合成(1)请根据《东方红》片断的简谱和“十二平均律”计算出该片断中各个乐音的频率,在MATLAB 中生成幅度为1 、抽样频率为8kHz 的正弦信号表示这些乐音。

请用sound 函数播放每个乐音,听一听音调是否正确。

最后用这一系列乐音信号拼出《东方红》片断,注意控制每个乐音持续的时间要符合节拍,用sound 播放你合成的音乐,听起来感觉如何?代码如下:f =8000;t2=[0:1/f:1];t4=[0:1/f:0.5];t8=[0:1/f:0.25];omg5=523.35;omg6=587.33;omg2=392;omg1=349.23;omg6l=293.66;m1=sin(2*pi*omg5*t4);m2=sin(2*pi*omg5*t8);m3=sin(2*pi*omg6*t8);m4=sin(2*pi*omg2*t2);m6=sin(2*pi*omg1*t4);m7=sin(2*pi*omg1*t8);m8=sin(2*pi*omg6l*t8);m9=sin(2*pi*omg2*t2);m=[m1 m2 m3 m4 m6 m7 m8 m9];sound(m);听的时候发现在相邻乐音之间有杂音,这是由于相位不连续造成的。

(2)你一定注意到(1) 的乐曲中相邻乐音之间有“啪”的杂声,这是由于相位不连续产生了高频分量。

这种噪声严重影响合成音乐的质量,丧失真实感。

为了消除它,我们可以用图1.5 所示包络修正每个乐音,以保证在乐音的邻接处信号幅度为零。

此外建议用指数衰减的包络来表示。

我采用的是指数衰减的包络。

代码如下:f =8000;t2=[0:1/f:1];t4=[0:1/f:0.5];t8=[0:1/f:0.25];omg5=523.35;omg6=587.33;omg2=392;omg1=349.23;omg6l=293.66;m1=exp(-2*t4).*sin(2*pi*omg5*t4);m2=exp(-4*t8).*sin(2*pi*omg5*t8);m3=exp(-4*t8).*sin(2*pi*omg6*t8);m4=exp(-1*t2).*sin(2*pi*omg2*t2);m6=exp(-2*t4).*sin(2*pi*omg1*t4);m7=exp(-4*t8).*sin(2*pi*omg1*t8);m8=exp(-4*t8).*sin(2*pi*omg6l*t8);m9=exp(-1*t2).*sin(2*pi*omg2*t2);m=[m1 m2 m3 m4 m6 m7 m8 m9];sound(m);第一次我采用的指数衰减没有时间前面的系数,即每个都只乘exp(t),没有系数;后来根据不同节拍,更改了不同的衰减系数,这样声音听起来感觉更加圆润。

使用Matlab进行音频信号合成与分析的方法与案例

使用Matlab进行音频信号合成与分析的方法与案例

使用Matlab进行音频信号合成与分析的方法与案例引言音频信号的合成与分析在音频处理、音乐创作等领域有广泛应用。

Matlab作为一种强大的数学软件,提供了丰富的工具和函数用于音频信号的处理。

本文将介绍使用Matlab进行音频信号合成与分析的方法和案例,并探讨其在实际应用中的意义。

一、音频信号的合成方法1.1 基础的波形合成在Matlab中,我们可以通过调用包括sin、cos等基础函数来合成各种波形。

例如,我们可以使用sin函数来合成纯音,使用cos函数来合成方波。

通过调整波形的频率、振幅和相位等参数,可以合成出不同音调和声音效果。

1.2 使用合成器Matlab提供了多种合成器工具箱,如音频合成器工具箱、FM合成器工具箱等,可以更加方便地进行音频信号的合成。

这些工具箱提供了丰富的合成算法和参数,用户可以根据自己的需求进行灵活的合成操作。

1.3 使用采样音频数据合成除了基础的波形合成和合成器工具箱,Matlab还提供了读取和处理采样音频数据的函数。

用户可以通过读取现有的音频数据进行合成,或者通过采集音频信号来实时合成。

这种方法可以更加真实地模拟不同乐器或声音的效果。

二、音频信号的分析方法2.1 时域分析时域分析是指对音频信号在时间上的变化进行分析。

通过Matlab提供的时域分析函数,如plot、spectrogram等,可以绘制出音频信号的波形图、频谱图等。

通过对波形的幅度、频率和相位等特征进行分析,可以了解音频信号的基本特性和演化规律。

2.2 频域分析频域分析是指对音频信号在频率上的变化进行分析。

Matlab提供了一系列的函数和工具箱,如傅里叶变换、功率谱密度估计等,可以对音频信号进行频谱分析。

通过分析音频信号的频谱特征,可以提取出音频信号的频率分布、谱线强度等信息,进一步了解信号的频率结构和谐波关系。

2.3 声音参数的提取除了基本的时域和频域分析外,Matlab还提供了一系列函数和算法用于音频信号的参数提取,如音高、音量、声音的清晰度等。

清华大学谷源涛MATLAB音乐合成

清华大学谷源涛MATLAB音乐合成

大作业一音乐合成第一部分1.1 合成东方红合成源程序如下,程序参考谷老师上课内容(自己编完代码后跟老师的差不多,而且实在是不知道还能做什么改进了。

)function k= play()rhythm = [5 5 6 2 1 1 6 2;0 0 0 0 0 0 -1 0 ; 0.5 0.25 0.25 1 0.5 0.25 0.25 1;];y=generaterhythm(rhythm, 8);sound(y);endfunction y = generaterhythm(rhythm, basetune)fs = 8000;soundpos = [0 2 4 5 7 9 11 0:12];y = zeros(1, sum(rhythm(3,:))*fs + 1);curpos = 1;for count = 1 : length(rhythm)cursoundname = rhythm(1, count);cursoundpos = soundpos(cursoundname);curfreq = 220 * 2 .^ ((cursoundpos + basetune + 3) / 12 + rhythm(2, count)); cursound = generatetune(curfreq, rhythm(3, count), fs);y(1,curpos:(curpos + length(cursound) - 1)) = cursound;curpos = curpos + length(cursound);endendfunction y = generatetune (freq, time, fs)t = 0:1/fs:(time - 1/fs);y = zeros(1, length(t));y=sin(t*freq*2*pi);end1.2 用包络修正每个乐音,消除噪音在1.1中听到有“啪”的杂声,下面通过加包络来消噪音。

基于MATLAB的简单音乐合成

基于MATLAB的简单音乐合成

《数字信号处理》课程设计说明书设计题目:基于MATLAB的简单音乐合成姓名:专业年级:学号:指导老师:时间:2015年6月25日《数字信号处理课程设计》任务书指导老师(签名):__________________________目录1.1MATLAB软件简介.......................................................1.2乐曲解析............................................................. 2设计与实现...............................................................2.1简单的音乐合成.......................................................2.1.1原理分析 .........................................................2.1.2Matlab源代码 .....................................................2.1.3运行结果分析 .....................................................2.2除噪音,加包络.......................................................2.2.1原理分析 .........................................................2.2.2Matlab源代码 .....................................................2.2.3运行结果分析 .....................................................2.3加谐波...............................................................2.3.1原理分析 .........................................................2.3.2Matlab源代码 .....................................................2.3.2运行结果分析 ..................................................... 3总结与体会............................................................... 4参考文献.................................................................1设计基础1.1MATLAB软件简介MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室MATLAB 工作界面)。

如何在MATLAB中进行音频合成与分析

如何在MATLAB中进行音频合成与分析

如何在MATLAB中进行音频合成与分析在MATLAB中进行音频合成与分析音频合成与分析在音乐制作、声音特效处理、语音识别等领域起着重要作用。

MATLAB作为一款强大的数值分析和数据可视化软件,在音频处理方面具有丰富的功能和工具。

本文将介绍如何在MATLAB中进行音频合成与分析。

一、音频合成音频合成是指通过各种声音合成方法和算法生成人造音频的过程。

在MATLAB中,我们可以利用其丰富的信号处理工具箱来进行音频合成。

首先,我们需要了解音频合成中的一些基本概念和技术。

例如,有源声音合成,通过模拟振动源(如声乐器)的物理特性来生成声音;无源声音合成,通过合成算法生成各种声音效果;叠加合成,将多个声音信号叠加在一起;频率合成,通过操纵音频信号的频谱来生成新的声音效果等等。

了解这些概念和技术将帮助我们更好地进行音频合成。

在MATLAB中,可以通过调用信号处理工具箱中的函数来实现音频合成。

例如,可以使用fft函数来进行频谱分析和合成;使用wavread和audioread函数来读取和写入音频文件;使用声音合成函数synth和sound来生成和播放音频等等。

这些函数提供了丰富的参数选项,可以满足不同合成需求。

二、音频分析音频分析是指对音频信号进行各种分析和挖掘的过程。

在MATLAB中,我们可以利用其强大的信号处理和数据分析功能来进行音频分析。

音频分析的目的可以包括频谱分析、音高检测、节奏分析、音频特征提取等等。

这些分析可以帮助我们了解音频信号的特点、提取其中的有用信息,并为后续的处理和应用提供支持。

在MATLAB中,可以使用fft函数来进行频谱分析。

该函数可以将时域信号转换为频域信号,并得到信号的频率和幅度信息。

在进行频谱分析时,我们可以使用窗函数对信号进行窗口截断和平滑处理,从而得到更准确的频谱分析结果。

除了频谱分析,我们还可以使用自相关函数、互相关函数等来进行时域分析和相关分析。

MATLAB中提供了丰富的函数和算法,例如autocorr、xcorr等,可以满足不同分析需求。

音乐合成_matlab

音乐合成_matlab

MATLAB音乐合成一、简单音乐合成1、根据音乐简谱和十二平均律计算出每个乐音的频率,在 MATLAB中生成幅度为 1,抽样频率为 8kHz 的正弦信号表示这些乐音,用 sound 播放合成的音乐A=[174.61 196 220 246.94 261.62 293.66 329.63 349.23 392 440493.88 523.25 587.33 659.25 698.45 739.99 783.99]; % 定义各调频率fs=8000; %修改频率pu=[1 1 1 3 5 5 5 5 6 6 6 8 5 4 4 6 6 3 3 3 3 2 2 2 2 5 5 1 1 1 3 5 5 5 5 6 6 6 8 5 4 4 4 6 3 3 3 3 3 2 2 2 3 1 ]; %在pu中只需输入乐谱数字,在下面B=A-什么什么那部分调整音调,省去了写频率的麻烦p=0.5;last_time=[p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p/2 p ];%各乐音持续时间为节省空间,用p代替N=length(pu);f=zeros(1,N);B=A-5;for i=1:Nf(i)=B(pu(i)); %f为各个乐音对应的频率,修改其它调endpoint=fs*last_time; %各个乐音的抽样点数total_point=sum(point); %这段音乐的总抽样点数store=zeros(1,total_point); %用store向量来储存抽样点m=1;for num=1:N %利用循环产生抽样数据,num表示乐音编号 t=1/fs:1/fs:point(num)/fs; %产生第num个乐音的抽样点store(m:m+point(num)-1)=sin(2*pi*f(num)*t); %抽样点对应的幅值m=m+point(num);endsound(store,8000); %播放出storeplot(store); %画出store图像2、除噪音,加包络在1.1中听到有“啪”的杂声,这是由于相位不连续产生了高频分量,下面通过加包络来消噪音。

Matlab音乐合成实验报告

Matlab音乐合成实验报告

音乐合成实验目录音乐合成实验 (1)摘要: (2)第一部分简单的合成音乐 (2)1.1合成《东方红》 (2)1.2 除噪音,加包络 (4)1.3改变程序,实现1.2中的音乐升高和降低一个八度 (11)1.4在1.2的音乐中加入谐波 (12)1.5自选音乐合成——《两只老虎》 (13)第二部分用傅里叶变换分析音乐 (15)2.1载入fmt.wav并播放 (15)2.2载入文件Guitar.mat,处理原始数据realwave (16)2.3分析wave2proc的基波和谐波 (19)2.4自动分析fmt.wav的音调和节拍 (23)第三部分基于傅里叶级数的音乐合成 (27)3.1 用2.3分析出来的结果重新加谐波 (27)3.2 通过2.4提取的吉他音调信息弹奏《东方红》 (28)实验收获 (31)摘要:本文共有三大部分:第一部分,简单的音乐合成;第二部分,用傅里叶变换分析音乐;第三部分,基于傅里叶级数的音乐合成。

由潜入深,一步一步分析了用MATLAB 进行音乐合成的过程。

通过本实验达到了加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB 基本使用的目标。

第一部分 简单的合成音乐1.1 合成《东方红》根据《东方红》第一小节的简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB 中生成幅度为1,抽样频率为8kHz 的正弦信号表示这些乐音,用sound 播放合成的音乐由图可知《东方红》的曲调定为F ,即1=F ,对应的频率为349.23Hz ,据此可以计算出其他乐音的频率,例如5对应的频率为7/125349.232523.25f =⨯=,一次类推计算出第一小节各乐音对应的频率为: 乐音 5 5 6 2 1 1 6 2在确定了各乐音的频率之后需要确定每个乐音的持续时间。

每小节有两拍,一拍的时间是0.5s,因此各乐音的持续时间为:乐音55621162而在MATLAB中表示乐音所用的抽样频率为fs=8000Hz,也就是所1s钟内有8000个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。

matlab高级编程与应用-语音处理实验报告

matlab高级编程与应用-语音处理实验报告

语音处理实验报告自03 张驰昱2010012028一、语音预测模型(1)给定e(n) = s(n) -a1s(n -1) -a2s(n -2)假设e(n)是输入信号,s(n)是输出信号,上述滤波器的传递函数是什么?如果a1 = 1.3789,a2 = -0.9506 ,上述合成模型的共振峰频率是多少?用zplane,freqz,impz分别绘出零极点图,频率响应和单位样值响应。

用filter绘出单位样值响应,比较和impz的是否相同。

问题分析:本问题主要练习传递函数到零极点的转化,零极点的绘制,频率响应的绘制,单位响应的绘制,复习filter数字滤波器的使用。

具体实现:clear;clc;a = [1, -1.3789, 0.9506];sys=tf(1,a,-1,'variable','z^-1')[z,p]=tf2zp(1,a);%[r,p,k]=residuez(1,a);也能求出零点omg=abs(angle(p(1)));fs=8000;%数字采样频率f=omg*fs/2/pi%弧度转化为频率n=[0:49]';x=(n==0);figure(1);zplane(1,a);figure(2);freqz(1,a);figure(3);subplot(2,1,1),stem(n,filter(1,a,x));figure(3);subplot(2,1,2),impz(1,a,50);(2)理解speechproc的主要流程我认为主要的部分是以下程序段:(个人理解写在了注释中)%先要统一初始化所用到的向量,这样可以提高执行效率for n = 3:FN%汉明窗取到了帧长的三倍,所以n从3开始s_w = s(n*FL-WL+1:n*FL).*hw; %加窗方便用lpc处理[A E] = lpc(s_w, P); %用lpc技术得到传递函数系数As_f = s((n-1)*FL+1:n*FL); %待处理的本帧语音,即激励响应%需要推算本帧语音的激励,只有得到了激励才能做接下来的变声处理s_Pitch = exc(n*FL-222:n*FL);PT= findpitch(s_Pitch); %刚才算出的激励信号是有高斯白噪声的,需要找%出基音周期和能量,为重新合成激励信号做准备 G = sqrt(E*PT(n));(3)在27帧处观察零极点图问题分析:主要让我们对语音传函的共轭极点有一个更直观的认识具体实现:if n == 27figure(n);zplane(1,A);end(4)用filter计算每帧的激励信号问题分析:已经求出了传函系数和激励相应,只要传函的分子分母互换把激励相应当激励,得到的相应就是原激励具体实现:%前输出状态作为后输入状态即前后状态不变[temp1,zi_pre]=filter(A,1,s_f,zi_pre);exc((n-1)*FL+1:n*FL)=temp1;(5)利用刚才得到的激励信号,继续用filter重建语音问题分析:相当于对于之前求出的激励的验算。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
代码如下: sound_1_2_1.m clear;clc;close all; Fs = 8000; f = [523.25,523.25,587.33,392.00,349.23,349.23,293.67,392.00]; num = Fs*[0.5,0.25,0.25,1,0.5,0.25,0.25,1];
分析: 已知 F 调唱名与音名之对应关系如下:
音 1 对应的是 F,频率是4440 = 349.23Hz
212
音 2 对应的是 G,频率是4420 = 392.00Hz
212
音 5 对应的是 C,频率是4430 = 523.25Hz
212
音 6 下面加了点,对应的是 D 还要降一阶,频率是241542+01 = 293.67Hz 对于《东方红》的前四小节:
number = number + num(n);
end
sound(song,Fs);
%播放总的乐音
(2) 你一定注意到(1) 的乐曲中相邻乐音之间有“啪”的杂声,这是由于相位不 连续产生了高频分量。这种噪声严重影响合成音乐的质量,丧失真实感。为了 消除它,我们可以用图1.5 所示包络修正每个乐音,以保证在乐音的邻接处信 号幅度为零。此外建议用指数衰减的包络来表示1。
代码如下: sound_1_1.m clear;clc;close all;
Fs = 8000;
%定义抽样频率
f = [523.25,523.25,587.33,392.00,349.23,349.23,293.67,392.00];
num = Fs*[0.5,0.25,0.25,1,0.5,0.25,0.25,1];
t = 1/Fs:1/Fs:num(n)/Fs; H = zeros(1,num(n)); H(1:num(n)/5) = 10*Fs*t(1:num(n)/5)/num(n); H(num(n)/5 + 1:2*num(n)/5) = 2 - 5*Fs*( t(num(n)/5 + 1:2*num(n)/5) - t(num(n)/5) )/num(n); H(2*num(n)/5 + 1:4*num(n)/5) = ones(1,2*num(n)/5); H(4*num(n)/5 + 1:num(n)) = 1 - 5*Fs*( t(4*num(n)/5 + 1:num(n)) t(4*num(n)/5) )/num(n); song(number:number + num(n) - 1) = sin(2*pi*f(n)*t).*H; number = number + num(n); end sound(song,Fs);
N = length(num); song = zeros(1,Fs*4); number = 1; for n 录 %定义已经记录到的位置 %循环确定各抽样记录
t = 1/Fs:1/Fs:num(n)/Fs;
song(number:number + num(n) - 1) = sin(2*pi*f(n)*t);
MATLAB 高级编程与工程应用
实验一 音乐合成
第一部分 简单的合成音乐
(1) 请根据《东方红》片断的简谱和“十二平均律”计算出该片断中各个乐音的 频率,在MATLAB 中生成幅度为1 、抽样频率为8kHz 的正弦信号表示这些乐 音。请用sound 函数播放每个乐音,听一听音调是否正确。最后用这一系列乐 音信号拼出《东方红》片断,注意控制每个乐音持续的时间要符合节拍,用 sound 播放你合成的音乐,听起来感觉如何?
N = length(num); song = zeros(1,Fs*4); number = 1; for n = 1:N
t = 1/Fs:1/Fs:num(n)/Fs; H = zeros(1,num(n)); H(1:num(n)/5) = 10*Fs*t(1:num(n)/5)/num(n); H(num(n)/5 + 1:2*num(n)/5) = 2 - 5*Fs*( t(num(n)/5 + 1:2*num(n)/5) - t(num(n)/5) )/num(n); H(2*num(n)/5 + 1:3*num(n)/5) = ones(1,num(n)/5); H(3*num(n)/5 + 1:num(n)) = 1 - 5*Fs*( t(3*num(n)/5 + 1:num(n)) t(3*num(n)/5) )/(2*num(n)); song(number:number + num(n) - 1) = sin(2*pi*f(n)*t).*H; number = number + num(n); end sound(song,Fs);
分析: 首先采用图 1.5 所示的包络来进行修正:
图 1.5 我取冲击部分为五分之一个乐音时间长度,衰减为五分之一个乐音长度,持续部分取五 分之一个乐音长度,消失部分取五分之二个乐音长度,运行文件 sound_1_2_1.m 播放音乐, 此时得到的音乐显得比较轻快,相邻乐音之间没有断开的感觉,噪声消除了。 我又试着将消失部分和持续部分的长度对换一下,运行文件 sound_1_2_2.m 播放音乐, 此时音乐显得更加连贯,噪声也没有了,音质显得更好了。 然后我试着使用指数衰减形式的包络来进行修正,运行文件 sound_1_2_3.m 播放音乐, 这样也可以达到消除噪声的目的,不过觉得乐音有跳动的感觉,虽然显得更加清晰,但是还 是不及使用冲激—衰减—持续—消失方法的效果好。
sound_1_2_2.m clear;clc;close all; Fs = 8000; f = [523.25,523.25,587.33,392.00,349.23,349.23,293.67,392.00]; num = Fs*[0.5,0.25,0.25,1,0.5,0.25,0.25,1]; N = length(num); song = zeros(1,Fs*4); number = 1; for n = 1:N
我们可以列表表示每个音的频率与持续时间如下:
乐音
5
5
6
2
1
频率/Hz 523.25 523.25 587.33 392.00 349.23
持续时间/s 0.5 0.25 0.25
1
0.5
1 349.23
0.25
6 293.67
0.25
2 392.00
1
运行文件 sound_1_1.m 播放音乐,听起来效果不是很好,只是调子上符合了,在相邻的 乐音之间有断开的感觉。
相关文档
最新文档