安承悦读

音频合成课程报告总结(合集3篇)

admin
导读 时间向量values,从0到持续时间duration,以采样率fs进行间隔采样。清除命令窗口然后显示 _find frequencies of each note_以在命令行提示程序进度。然后,代码根据频率、振幅和时间向量生成音符的波形数据a,采用正弦函数的形式。

音频合成课程报告总结 第1篇

短短的一周焊接实训课给我留下了深刻的印象,每天的感觉都是充实的。实训工作很有见解的专家以鲜活的案例和丰富的知识,给了我具体的操作指导,给我提供了一线的实践经验。下面谈谈我通过此次培训获得的点滴感悟:

(一)拥有良好的安全意识和节约意识是对自己和他人的负责,是作为一名学习人员必备的素质。具体到当前的工作中包括以下几点:

1、防止火灾(实训间内严禁明火),电烙铁在人离开时必须断电。

2、严防触电。电气设备接通电源前要认真检查,检查电烙铁是要拔掉电源,小心烙铁头烫坏导线外皮。

3、防止发生机械损伤。

4、防止烫伤。

准备工作和必要的知识:

1、新烙铁的使用方法:首先将内热型电烙铁在砂纸上打磨,然后通电,蘸松香,再然后将烙铁头韧面接触焊锡丝,最后在木板或厚纸壳磨擦,使其光亮。

2、旧烙铁在使用前应先打磨。

3、使用电烙铁的注意事项。

(1)用松香检查烙铁头的温度,不可以用手接触烙铁头。生成的挥发气体上升越快,烙铁头的温度就越高。

(2)工作中的烙铁发热部分应全部放在铁架上。

(3)焊锡气体有害,应注意;

焊锡含铅,应注意洗手。做好了准备工作我们还要自己的学习目的。

(二)知识掌握点:

1、熟悉有关的焊接工程术语,了解焊接常用材料的基础知识。

2、通过训练,初步获得焊接的基本工艺知识。

3、掌握焊接生产过程的基本概念,了解焊接技术的实际知识,为以后课程打下基础。

4、了解焊接的安全技术知识,做到安全训练;能力训练点,通过对简单工件进行焊接,培养我们的焊接工艺分析能力,动手操作能力,为今后从事生产技术工作打下坚实的基础。

两种或两种以上材质(同种或异种),通过加热或加压或二者并用,来达到原子之间的结合而形成永久性连接的工艺过程叫焊接、电烙铁分为外热式和内热式两种,外热式的一般功率都较大。

内热式的电烙铁体积较小,而且价格便宜。一般电子制作都用20W—30W的内热式电烙铁。内热式的电烙铁发热效率较高,而且更换烙铁头也较方便。

电烙铁是用来焊锡的,为方便使用,通常做成“焊锡丝”,焊锡丝内一般都含有助焊的松香。焊锡丝使用约60%的锡和40%的铅合成,熔点较低。松香是一种助焊剂,可以帮助焊接。

电烙铁是捏在手里的,使用时千万注意安全。新买的电烙铁先要用万用表电阻档检查一下插头与金属外壳之间的电阻值,万用表指针应该不动。否则应该彻底检查。

(三)手工焊接的基本操作步骤:

1、将烙铁头放置在焊盘和元件引脚处,使焊接点升温。

2、当焊点达到适当温度时,及时将松香焊锡丝放在焊接点上熔化。

3、焊锡熔化后,应将烙铁头根据焊点形状稍加移动,使焊锡均匀布满焊点,并渗入被焊面的缝隙。焊锡丝熔化适量后,应迅速拿开焊锡丝。

4、拿开电烙铁,当焊点上焊锡已近饱满,焊剂(松香)尚未完全挥发,温度适当,焊锡最亮,流动性最强时,将烙铁头沿元件引脚方向迅速移动,快离开时,快速往回带一下,同时离开焊点,才能保证焊点光亮、圆滑、无毛刺。用偏口钳将元件过长的引脚剪掉,使元件引脚稍露出焊点即可。

5、焊几个点后用金属丝擦擦烙铁头,使烙铁头干净、光洁。

如果过量的加热不仅会造成元器件的损坏外还会使焊接的外观变差,高温造成所加松香助焊剂的'分解碳化,还会破坏印制板上铜泊的粘合层,导致铜泊焊盘的剥落。

(四)拆焊:

1、拆焊原则

拆焊的步骤一般与焊接的步骤相反。拆焊前,一定要弄清楚原焊接点的特点,不要轻易动手。

(1)不损坏拆除的元器件、导线、原焊接部位的结构件。

(2)拆焊时不可损坏印制电路板上的焊盘与印制导线。

(3)对已判断为损坏的元器件,可先行将引线剪断,再行拆除,这样可减小其他损伤的可能性。

(4)在拆焊过程中,应该尽量避免拆除其他元器件或变动其他元器件的位置。若确实需要,则要做好复原工作。

2、拆焊要点

(1)严格控制加热的温度和时间

拆焊的加热时间和温度较焊接时间要长、要高,所以要严格控制温度和加热时间,以免将元器件烫坏或使焊盘翘起、断裂。宜采用间隔加热法来进行拆焊。

(2)拆焊时不要用力过猛

在高温状态下,元器件封装的强度都会下降,尤其是对塑封器件、陶瓷器件、玻璃端子等,过分的用力拉、摇、扭都会损坏元器件和焊盘。

(3)吸去拆焊点上的焊料

拆焊前,用吸锡工具吸去焊料,有时可以直接将元器件拔下。即使还有少量锡连接,也可以减少拆焊的时间,减小元器件及印制电路板损坏的可能性。如果在没有吸锡工具的情况下,则可以将印制电路板或能够移动的部件倒过来,用电烙铁加热拆焊点,利用重力原理,让焊锡自动流向烙铁头,也能达到部分去锡的目的。

3、拆焊的质量要求

(1)电器接触良好。

(2)机械结合牢固。

(3)美观。

4、焊点的质量要求

(1)可靠的电器连接。

(2)足够的机械强度。

(3)光洁整齐的外观。

具体操作和收获:

在焊接训练中,通过视频教学使我了解当代电子工艺发展的最新成果,懂得了焊接工艺的基本方法。在印刷板和导线的焊接中我的焊接技能不断提高。刚开始时,我的焊点像小馒头一样而且不够亮。经过改进后,我的焊点光亮,无虚焊,符合焊接要求。在焊接考核的板子上,我一次性就将板子焊的很漂亮。

在电子整机产品组装训练中,我知道了电子产品从原材料到合格产品的整个过程。在印刷板制作和安装,整体装配,检测调试的工序中使我受益匪浅。在印刷板的制作和安装中,任何的失误和偏差都有可能导致无法挽回的损失,因此在安装和焊接中要格外的小心。在整体装配中,应特别注意电源线的焊接,既不能虚焊也不能搭焊。最后的检测调试是一个关键的步骤,要对产品功能进行逐一检查,发现问题要及时进行更改。

音频合成课程报告总结 第2篇

通过一个星期的学习,我觉得自己在以下几个方面与有收获:

一、对电子工艺的理论有了初步的系统了解。我们了解到了焊普通元件与电路元件的技巧、印制电路板图的设计制作与工艺流程、收音机的工作原理与组成元件的作用等。这些知识不仅在课堂上有效,对以后的电子工艺课的学习有很大的指导意义,在日常生活中更是有着现实意义。

二、对自己的动手能力是个很大的锻炼。实践出真知,纵观古今,所有创造创造无一不是在实践中得到检验的。没有足够的动手能力,就奢谈在未来的科研尤其是实验研究中有所成就。在实习中,我锻炼了自己动手技巧,提高了自己解决问题的能力。比方做收音机组装与调试时,好几个焊盘的间距特别小,稍不留神,就焊在一起了,但是我还是完成了任务。

三、实习课程实习让我们学到了很多课本上没有方法学到的很多实用的东西,通过组装一个光控报警电路让我们将在课本中学习到的一些电路的组成以及一些电路元器件的工作原理以及其正常工作的检测运用到实践中,并且得到延伸以及拓展。不仅增强了实际动手能力,也同时深化了我们对课本知识的了解,以及运用。真正的做到发现问题,提出问题,解决问题的自主学习,在实践中找寻问题的所在,并运用自己所知道的知识去解释,与同学互帮互助,共同探讨共同进步。

我学会了根本的焊接技术,电路的检测与调试,知道了电子产品的装配过程,我们还学会了电子元器件的识别及质量检验,知道了整机的装配工艺,这些都我们的培养动手能力及严谨的工作作风,也为我们以后的工作打下了良好的基础而且这在我们以后的计算机专业课学习硬件中应该也是很有用的

通过了电子电工实训,我确实是学到了很多知识,拓展了自己的的视野。通过这一次的电子电工实训,增强了我的动手打操作的能力。记得我在读高中的时候,我帮家里安装一个开关控制电路,由于自己的动手能力不够强,结果把电路接成短路,还好因为电路原先装有保险丝,才没有造大的安全事故。而通过这一次的'电子电工实训,我就掌握了比日光灯电路安装更标准的电路,学会了许多。也学习了一些低压电器的有关知识,了解了其规格、型号及使用的方法。

通过了这电工的实训,也培养了我们的胆大、心细、谨慎的工作作风。总的来说,这次的实习是一个非常珍贵的经验,让我们能更多的接触到生活中实际存在的电路学着排查问题,进行简单的处理,不致毫无头绪,对于今后的生活学习等也起到了一定的积极因素。希望以后能多点类似此类的实际操作课程,将实际与理论更好的结合起来。要求学生掌握电烙钱的正确使用的方法,防止意外的受伤。

总的来说这次电工的实训,也培养了我们的标准化的工作作风,以及我们的团结协作的团队的精神。

音频合成课程报告总结 第3篇

使用matlab读入一小段音乐;

绘制真实音乐的时域波形;

根据时域波形截取出单个乐音信号; 

对每个乐音进行傅里叶变换,绘制每个乐音的频谱;

根据乐音的频率、幅值和持续时间信息进行指数包络的合成;

绘制合成音乐的频域波形(频域波形可视化效果更佳);

播放真实音乐和合成音乐,比较效果。

A.流程图

图1.  主要流程图

1.加载歌曲。

%setting up song

clear; clc; clf; close all

mute=false;

[song,Fs]=audioread('Fur ');

%sound(song,Fs);    %play the song

Fs=Fs*4;

figure, plot(song(:,1)),title('Fur Elise')

%set parameters

length(song)

t1=10; t2=565104;%start & end length

%analyse a window of the song

y=song(t1:t2);

n=length(y);

t=linspace(t1,t2,n);

audiowrite('Fur ',y,Fs)%output .wav file

代码说明:

首先,通过audioread函数读取名为_Fur _的音乐文件,并将音频数据存储在变量song中,采样率存储在变量Fs中。将采样率Fs乘以4,将其值赋给变量Fs,相当于将音乐的播放速率加快了4倍。

t1和t2为位置参数,起始位置t1设为10,结束位置t2设为565104。(记得根据自己的歌曲改动!!)

song中提取了位于t1到t2之间的部分音频数据,并将其存储在变量y中。变量n表示音频数据的长度。

生成等间距的时间向量t,用于在后续的分析中使用。

最后将提取的音频数据y以采样率Fs保存为_Fur _的.wav文件。

2.使用平均滤波器将其采样20次,去掉一些音频的高频内容,减少matlab运算量,提高程序分析速度。

%downsampled by m

clc;

m=20;

Fsm=round(Fs/m);

p=floor(n/m);

y_avg=zeros(1,p);

for i=1:p

    y_avg(i)=mean(y(m*(i-1)+1:m*i));

end

 figure, subplot(2,1,1), plot(linspace(0,100,n),abs(y))

         title('Discrete notes of song')

         legend('Original')

         subplot(2,1,2), plot(linspace(0,100,p),abs(y_avg))

         legend('20-point averaged and down-sampled')

代码说明:

将变量Fs除以下采样倍数m并四舍五入,得到下采样后的采样率Fsm。

计算下采样后的音频数据的长度p,即原始音频数据长度n除以下采样倍数m并向下取整。

然后创建了一个长度为p的全零向量y_avg,用于存储下采样后的音频数据。

接下来,通过一个for循环,代码对原始音频数据y进行平均滤波处理。循环变量i从1到p遍历,每次取出长度为m的音频数据段,然后计算这个段数据的平均值,并将结果存储在y_avg(i)中。

最后绘制了两个图。第一个图显示了原始音频数据的离散点图。第二个显示了经过20点平均滤波和下采样处理后的音频数据的离散点图。

3.使用移动平均阈值对音频进行阈值,来检测音符的峰值。%threshold to find notes

y_thresh=zeros(1,p);

i=1;

while(i<=p)

    thresh=*median(abs(y_avg(max(1,i-5000):i))); %or symplified

    if(abs(y_avg(i))>thresh)

        for j=0:500

            if(i+j<=p)

                y_thresh(i)=y_avg(i);

                i=i+1;

            end

        end

        i=i+700;

    end

    i=i+1;

end

figure, subplot(2,1,1),plot(abs(y_avg)),title('Original song'), ylim([0 *max(y_avg)]);

subplot(2,1,2),plot(abs(y_thresh)),title('Detected notes using moving threshold');

代码说明:

创建了一个长度为p的全零向量y_thresh,用于存储阈值化后的音频数据。

然后初始化循环变量i为1。

while循环,遍历音频数据的每个采样点。

在循环中,首先计算阈值thresh。阈值的计算基于移动窗口内的数据的中位数,窗口范围为当前位置向前5000个采样点,然后将该中位数乘以。这个阈值用于判断当前采样点的峰值是否超过了阈值。

如果当前采样点的绝对值大于阈值,则进入一个内部的for循环。该内部循环将当前采样点及其后续的500个采样点(如果不越界)的阈值化后的音频数据设置为对应的平均滤波结果。然后,将外部循环变量i增加700,以跳过已经阈值化处理的一段音频数据。

最后i增加1,继续处理下一个采样点。

处理完所有采样点后会绘图,第一个子图显示了原始音频数据的幅度图(纵轴范围显示在0到倍最大音频数据幅度之间),第二个子图显示了使用移动阈值检测后的音符的幅度图。

4.找到,并且浏览所有音符,之后计算它们的傅里叶变换FFT。%find frequencies of each note

clc

disp('find frequencies of each note')

i=1;

i_note=0;

while i

    j=1;

    end_note=0;

    while(((y_thresh(i)~=0)||(end_note>0))&&(i

    note(j)=y_thresh(i);

    i=i+1;

    j=j+1;

    if(y_thresh(i)~=0)

        end_note=20;

    else

        end_note=end_note-1;

    end

    if(end_note==0)

        if(j>25)

            note_padded=[note zeros(1,j)];

            Note=fft(note_padded);  %fast forrier transform

            Ns=length(note);

            f=linspace(0,(1+Ns/2),Ns);

            [~,index]=max(abs(Note(1:length(f))));

            if(f(index)>20)

                i_note=i_note+1;

                fundamentals(i_note)=f(index)*2;

                figure, plot(f,abs(Note(1:length(f))))  %plotting fft of each note

                title(['Fundamental frequency = ',num2str(fundamentals(i_note)),'Hz'])

            end

            i=i+50;

        end

        clear note;

        break

    end

    end

    i=i+1;

end

代码说明:

清除命令窗口然后显示 _find frequencies of each note_以在命令行提示程序进度。

初始化外部循环变量i为1,内部循环变量j为1,以及i_note为0。

通过一个外部的while循环,代码遍历音频数据的每个采样点,直到i的值小于p。再进入一个内部的while循环,提取每个音符的阈值化后的音频数据。

内部循环中,代码将当前采样点的阈值化后的音频数据存储在note数组中,并将i和j分别增加1。

如果当前采样点的阈值化后的音频数据不为零,则将end_note设为20,表示检测到一个新的音符。否则,end_note减少1,用于判断音符是否结束。

当end_note减少到0时,表示检测到一个完整的音符。此时,代码检查音符的长度j是否大于25(用于滤除较短的噪音),如果是,则在音符末尾填充零以进行补齐,然后对音符进行快速傅里叶变换(FFT)得到频域表示。

计算FFT结果的长度Ns,生成一个等间距的频率向量f,然后找到频域表示中幅度最大的频率分量的索引index。如果该频率大于20Hz,则将其存储在fundamentals数组中,并绘制频域表示的图形。

将外部循环变量i增加50,跳过已经处理过的一段音频数据。

最后,清除note数组,继续外部循环的下一次迭代。

5.检查所有音符并且播放,为重新创建的音乐生成一个.wav音频。

%play back notes

%(and, of course, closing all windows)

%close all

amp=1;

fs=20500;

duration= .49;

rec_song=zeros(1,duration*fs*length(fundamentals));

for i=1:length(fundamentals)

    [letter(i,1),freq(i)]=FreqToNote(fundamentals(i));

    values=0:1/fs:duration;

    a=amp*sin(2*pi*freq(i)*values*2);

    rec_song((i-1)*fs*duration+1:i*fs*duration+1)=a;

    sound(a,fs)

    pause(.5)

end

letter

audiowrite('',rec_song,fs);

代码说明:

设置几个参数:

变量amp表示音符的振幅,fs表示采样率,duration表示每个音符的持续时间。全零向量rec_song,用于存储重新创建的音乐。

遍历fundamentals数组中存储的每个频率:

For循环中,调用FreqToNote将频率转换为对应的音符名称,并将结果存储在letter数组中,同时将频率存储在freq数组中。

时间向量values,从0到持续时间duration,以采样率fs进行间隔采样。

然后,代码根据频率、振幅和时间向量生成音符的波形数据a,采用正弦函数的形式。

接下来把生成的音符数据a存储在rec_song中的对应位置,以便生成完整的重新创建的音乐。通过sound函数播放当前音符的波形数据a,并通过pause函数暂停秒。

在循环结束后,代码输出存储音符名称的letter数组。

将重新创建的rec_song以采样率fs保存为__。

6.显示合成音乐频域波形图,展示频率分布。

% plot frequency domain waveform of synthesized music

[y, fs] = audioread('');

duration = length(y) / fs;

n = length(y);

f = linspace(0, fs/2, n/2+1);

Y = fft(y);

Y = abs(Y(1:n/2+1));

figure;

plot(f, Y);

xlabel('Frequency (Hz)');

ylabel('Magnitude');

title('Frequency Domain Waveform of Synthesized Music');

xlim([0, fs/2]); % set x-axis limits to positive frequencies

函数,将给定的频率映射到已知的钢琴的音符和频率列表上。

%FreqToNote, freq functions (freq based on pianos)

function [note,frequency]=FreqToNote(f)

index=round(*log(f));

frequencies = [ 49 55 98 110 185 196 220 392 440 880 1760 2093 3520 7040 ];

Notes = [_C0_ _Db0_ _D0_ _Eb0_ _E0_ _F0_ _Gb0_ _G0_ _Ab0_ _A0_ _Bb0_ _B0_ _C1_ _Db1_ _D1_ _Eb1_ _E1_ _F1_ _Gb1_ _G1_ _Ab1_ _A1_ _Bb1_ _B1_ _C2_ _Db2_ _D2_ _Eb2_ _E2_ _F2_ _Gb2_ _G2_ _Ab2_ _A2_ _Bb2_ _B2_ _C3_ _Db3_ _D3_ _Eb3_ _E3_ _F3_ _Gb3_ _G3_ _Ab3_ _A3_ _Bb3_ _B3_ _C4_ _Db4_ _D4_ _Eb4_ _E4_ _F4_ _Gb4_ _G4_ _Ab4_ _A4_ _Bb4_ _B4_ _C5_ _Db5_ _D5_ _Eb5_ _E5_ _F5_ _Gb5_ _G5_ _Ab5_ _A5_ _Bb5_ _B5_ _C6_ _Db6_ _D6_ _Eb6_ _E6_ _F6_ _Gb6_ _G6_ _Ab6_ _A6_ _Bb6_ _B6_ _C7_ _Db7_ _D7_ _Eb7_ _E7_ _F7_ _Gb7_ _G7_ _Ab7_ _A7_ _Bb7_ _B7_ _C8_];

note=Notes(index);

frequency=frequencies(index);

End

代码说明:

函数的输入参数是频率f,表示要映射的频率值。通过将频率值转换为一个索引值index,映射到索引值。

已知的音符和频率列表包括多个音符和对应的频率。音符存储在字符串数组Notes中,频率存储在数值数组frequencies中,这两个数组的音符和频率一一对应。然后返回对应的音符频率作为输出。