神经网络既然可以进行函数拟合,也可以进行数据拟合,将输入x做为函数的自变量,将要输出的数据y做为函数f(x)的输出。
y=f(x),我们将x送入神经网络做为输入,然后将y做为目标训练值,我们下面进行一个简单的线性滤波,从含有背景音乐中的语音中去除背景音乐。
全部完成后,最终效果图如下:
第一行是原语音声音,第二行是混杂了背景音乐的语音声音,第三行是去除背景音乐的语音。
声音是由物体的机械振动而形成的。用鼓褪敲击鼓皮,于是鼓皮发生振动而发声;用弓拉琴,于是琴弦发生振动而发声;吹笛,笛腔内的空气柱发生振动而发声;把音频电流送人扬声器,扬声器的纸盆发生振动而发声。
发生声音的振动源叫作“声源”。上面提到的,振动着的鼓皮、琴弦、扬声器都是声源。此外,歌手的声带以及轰鸣着的喷气发动机也是声源。由声源发出的声音,必须通过媒质才能传送到我们的耳朵。空气是最常见的媒质。其他媒质如水、金属、木材等都能传播声音,其传播能力甚至比空气还要好。例如把耳朵贴近铁轨可以听到远处火车运行的声音,这些声音就是通过铁轨传来的。没有媒质的帮助人们就无法听到声音。例如在外层空间,由于没有空气及其他合适的媒质,宇航员无法直接对话,只能通过无线电波来传送声音
“频率”即是每秒钟内往复振动的次数(一来一往为一次,学名一周)。声波的频率也就是声音的频率。频率用f 表示,其单位为赫兹(Hz )。每秒振动一周为1Hz 。频率高低就是音调,振幅大小就是音量
wav以指定频率采样,比如每秒采样44100次,每次采集声音振动状态,数码音频系统是通过将声波波形转换成一连串的二进制数据来再现原始声音的,实现这个步骤使用的设备是模/数转换器(A/D)它以每秒上万次的速率对声波进 行采样,每一次采样都记录下了原始模拟声波在某一时刻的状态,称之为样本。将一串的样本连接起来,就可以描述一段声波了。
我们用下面这段python代码完成背景音乐和语音的合并,
#复制并将背景音乐的振幅(音量)在一个随机的基数基础上 #稍微变动后,与语音合并 #前面预留一段经过波形调整后的背景音乐,以供线性神经网络拟合 emptywdata=np.zeros(framerate, dtype=np.short) new_wave_data=np.hstack((emptywdata,wave_data,wave_data,wave_data,wave_data,wave_data,wave_data,wave_data,wave_data)) wave_data =copy.deepcopy(new_wave_data) nframes*=8 nframes+=framerate/2 temp_wavedata=np.hstack((fi_wave_data,fi_wave_data))[:len(new_wave_data)] backrnd=np.random.rand(len(new_wave_data))*10-5 backbase=np.random.rand()*2+1 temp_wavedata=temp_wavedata*backbase+backrnd new_wave_data=temp_wavedata+new_wave_data new_wave_data=np.array(new_wave_data) new_wave_data =new_wave_data.astype(wave_data.dtype)