电机工程

首页 > 电机工程

音频信号处理

2018-08-20 14:54:39     所属分类:信号处理

音频讯号处理,又称音讯处理,音乐讯号处理等,可以用来调整音乐讯号的震幅、频率、波形等资讯。

利用一些简单的加减乘除,升降频,及窗函数(window function),就可以做出各式的声音讯号,创造属于自己的电子音乐。

甚至透过一些讯号处理的技巧,可以从声音讯号取得背后所代表的频率高低,做更进一步的分析与应用。

目录

  • 1 音讯的来源
  • 2 音讯的资讯
  • 3 音讯的档案
  • 4 音讯的处理
  • 5 MATLAB声音信号处理指令
  • 6 参考资料

音讯的来源

  • 当物体产生震动时,就会产生声音,举例来说:当用力挥动手掌时,就会产生声音,以及蚊子翅膀快速震动时,所发出的扰人声音。
  • 但是,在上述例子中,所听到的声音是来自于空气震动,而不是因为手掌摆动,
  • 原因是人耳可以听到的声音频率介于20Hz到20000Hz之间,所以我们可以听到空气振动产生的声音,却听不到手掌摆动产生的声音,因为摆动的频率不够快。

音讯的资讯

  • 声音讯号是一种力学波,因此在传播过程中是一种类比连续的讯号,然而由于人耳是天然的傅立叶转换器,因此音讯经过人耳后会变成数字信号。在这些讯号中,有三个特征是处理时经常考虑的部分,可以参考下图:
  1. 音量:从讯号来看,音量代表的是讯号的震幅,讯号振幅越大,所发出的音量也越大。
  2. 音频:讯号的频率,就是所谓的音频,也就是声音震动的频率。其代表的是音调的高低,频率越高,音调就越高。除此之外,乐器所产生的声音讯号,并非是单一频率的讯号,而是有基频和泛音(倍频)的存在。
  3. 音色:每一个人或乐器所发出的音色都不一样,从讯号上来看,音色就是讯号的波形,因此只要利用波形分析,就可以判断出声音的来源,从下图可以看到小提琴跟钢琴的音色差异非常大。
  • 音讯的三个特征:音量、音频、音色。

  • 音讯的档案

    • 音讯的档案储存可以分成压缩和无压缩两种,常见的无压缩档案格式为*.wav,而压缩档案格式为*.mp3,关于这一部分的详细资料可以参照音讯档案格式。声音档的存取时,主要有三个需要考虑因素:
    1. 取样频率:在讯号处理中,取样频率所代表的是声音的品质,取样的频率越高,数字信号的波形越接近类比讯号的波形,因此声音的品质也越好。而在做取样时,必须遵守奈奎斯特频率,简单来说,频率在取样时至少要大于原讯号频率的2倍,才可以得到有意义的讯号,也能还原成原本的讯号。
    2. 声音分辨率:存取讯号资料点所用的位元数,即代表其分辨率。所使用的位元数越大,每个资料点的数值就越精确,声音的分辨率也越好。比较16bit与8bit两种存取位元,16bit可以存取到较精确的数值,但是也会花比较大的硬件储存空间。
    3. 声道:声道就是声音的来源数,常听到的单声道及双声道,代表的是声音是否有立体感。利用两个喇叭,拨放单声道的声音,左右两个喇叭发出的声音完全相同,因此会感觉声音是来自两个喇叭中间,但若是双声道声音,左右两个喇叭发出的声音会有一定差异,因此会觉得声音听起来有立体感。
    • 举例来说,借由MATLAB输入指令audioinfo(音讯档案名称),可以得到音讯档案的相关资讯如下图:
    1. 因为档案格式是*.wav,所以是无压缩(uncompressed)。
    2. 声道(NumChannels): 1
    3. 取样频率(SampleRate): 44100Hz
    4. 声音分辨率(BitsPerSample): 16
  • 执行MATLAB函数:audioinfo(音讯档案名称)

  • 音讯的处理

    • 由于声音讯号是一段长时间的讯号,因此在处理时必须要分段进行,在处理之前会先开一个范围,选择出想要处理的部分,再针对范围内的部分做处理,声音资讯主要包含:音量、音色和音高,三个部分,也是最常处理的部分。

    1.音量控制:音量是一种相对讯号,在讯号中代表得是振幅,其计算方式是将范围内的讯号取平方相加,在以10为底取log,单位是分贝(dB)如下公式:

    但是,在对人耳来说,音量是一种主观的感受,根据佛莱彻森曲线(Fletcher-Munson Curve),在不同频率之下,人耳要听到声音的话,对音量有一个最低要求,如下图所示。反过来说,虽然声音讯号的振幅相同,但是因为频率高低不同,对人耳的感受大小也会不同,相同声音强度,耳朵对低频的感受度较差,对3000Hz左右的声音感受度最高,越往高频又会慢慢降低。调整音量最简单的方式就是用加减法,首先把要处理的范围框出来,接着计算出振幅大小,最后再减掉想要减少的振幅强度,就可以降低音量,反之用加法就可以增强区域的音量。

    2.音频控制:音频是声音讯号处理的核心部分,最常用的简单处理方式是增频和降频。音频代表得是讯号的音高,中音Do的频率约在262Hz,在音乐中,有C(Do),#C(#Do,♭Re),D(Re),#D(#Re,♭Mi),E(Mi,♭Fa),F(Fa),#F(#Fa,♭Sol),G(Sol),#G(#Sol,♭La),A(La),#A(#La,♭Si),B(Si),12个特定的音阶,每差12个音阶,频率会变为原来的两倍,其频率设定是以440Hz为标准音频,做进一步数学推算,其频率为440乘上2的n/12次方,其中n是上面列出的第几个音阶。音频的处理最常用的是升频和降频,先选出想要处理的区域,接着做升降频的动作,这其中必须要注意奈奎斯特理论,避免讯号失真。

    frequency = 2n/12 * 440

    3.频率分析:透过离散傅立叶转换(Discrete Fourier Transform),通常简称为DFT,可以将一段声音讯号转换成其各个频率的正弦波分量,方便做更进一步的分析、运算。下图是将频率为440Hz的正弦波讯号,借由MATLAB function: fft,可以得到讯号组成频率的分量,从图上可以看到在440Hz的地方有特别大的值。

    4.音色:每一组声音讯号的波形都不一样,其物理意义是音色,因此如果改变波形的变化,就可以产生出音色类似的声音,处理波形最简单的方法就是用窗函数(window function),利用既有或自制的窗函数,将讯号做简单的convolution就可以改变讯号的波形,创造出不同的音色。 4.倍频:通常音乐的讯号不是单一频率的讯号,而是由基频,以及其泛音(基频的整数倍,倍频)所组成,因此若自制电子音乐时,必须注意倍频对声音饱和度产生的影响。下图将音乐讯号经过频率分析后,可以看到除了在左右的基频外,在的部分也会有较大的分量。

    5.端点侦测:端点侦测的目的是使讯号处理的范围更精确,方法很简单,只要设定一个音量阈值,若讯号小于阈值,则将其视为没讯号,但是若噪声过高,则会产生误差。

    MATLAB声音信号处理指令

    • y, fs = audioread(档名):y是声音讯号的向量,fs是取样频率。
    • audioinfo(档名):回传各种声音档案的相关资讯,像是取样频率、通道数量、声音分辨率...等。
    • sound(y, fs):以fs的频率播放声音讯号y。
    • wavewrite(y, fs, filename):将y讯号,以取样速率fs,写到filename.wav之中。
    • Y = fft(y):将时间轴上的讯号y,转换为频率轴上的讯号Y。

    参考资料

    [1]http://djj.ee.ntu.edu.tw/ADSP7.pdf

    1. ^ 丁建均. 高等数位讯号处理 (PDF). [2017-05-27]. 

    显示全文

    取消

    感谢您的支持,我会继续努力的!

    扫码支持
    无需打赏可直接关闭阅读全文
    1分,2分不嫌少,钱不钱的无所谓,重要的是你的话语激励我前行!

    愿你每天温暖如春!!!


    上一篇:降采样
    下一篇:频域
    相关推荐