欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

梅爾倒譜系數(shù)MFCC怎么實(shí)現(xiàn)-創(chuàng)新互聯(lián)

這篇文章主要為大家展示了“梅爾倒譜系數(shù)MFCC怎么實(shí)現(xiàn)”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“梅爾倒譜系數(shù)MFCC怎么實(shí)現(xiàn)”這篇文章吧。

創(chuàng)新互聯(lián)服務(wù)項(xiàng)目包括甘谷網(wǎng)站建設(shè)、甘谷網(wǎng)站制作、甘谷網(wǎng)頁(yè)制作以及甘谷網(wǎng)絡(luò)營(yíng)銷(xiāo)策劃等。多年來(lái),我們專(zhuān)注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,甘谷網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶(hù)以成都為中心已經(jīng)輻射到甘谷省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶(hù)的支持與信任!

具體內(nèi)容如下

""" 
@author: zoutai
@file: mymfcc.py 
@time: 2018/03/26 
@description:
"""
from matplotlib.colors import BoundaryNorm
import librosa
import librosa.display
import numpy
import scipy.io.wavfile
from scipy.fftpack import dct
import matplotlib.pyplot as plt
import numpy as np


# 第一步-讀取音頻,畫(huà)出時(shí)域圖(采樣率-幅度)
sample_rate, signal = scipy.io.wavfile.read('OSR_us_000_0010_8k.wav') # File assumed to be in the same directory
signal = signal[0:int(3.5 * sample_rate)]
# plot the wave
time = np.arange(0,len(signal))*(1.0 / sample_rate)
# plt.plot(time,signal)
plt.xlabel("Time(s)")
plt.ylabel("Amplitude")
plt.title("Signal in the Time Domain ")
plt.grid('on')#標(biāo)尺,on:有,off:無(wú)。


# 第二步-預(yù)加重
# 消除高頻信號(hào)。因?yàn)楦哳l信號(hào)往往都是相似的,
# 通過(guò)前后時(shí)間相減,就可以近乎抹去高頻信號(hào),留下低頻信號(hào)。
# 原理:y(t)=x(t)?αx(t?1)

pre_emphasis = 0.97
emphasized_signal = numpy.append(signal[0], signal[1:] - pre_emphasis * signal[:-1])


time = np.arange(0,len(emphasized_signal))*(1.0 / sample_rate)
# plt.plot(time,emphasized_signal)
# plt.xlabel("Time(s)")
# plt.ylabel("Amplitude")
# plt.title("Signal in the Time Domain after Pre-Emphasis")
# plt.grid('on')#標(biāo)尺,on:有,off:無(wú)。


# 第三步、取幀,用幀表示
frame_size = 0.025 # 幀長(zhǎng)
frame_stride = 0.01 # 步長(zhǎng)

# frame_length-一幀對(duì)應(yīng)的采樣數(shù), frame_step-一個(gè)步長(zhǎng)對(duì)應(yīng)的采樣數(shù)
frame_length, frame_step = frame_size * sample_rate, frame_stride * sample_rate # Convert from seconds to samples
signal_length = len(emphasized_signal) # 總的采樣數(shù)

frame_length = int(round(frame_length))
frame_step = int(round(frame_step))

# 總幀數(shù)
num_frames = int(numpy.ceil(float(numpy.abs(signal_length - frame_length)) / frame_step)) # Make sure that we have at least 1 frame

pad_signal_length = num_frames * frame_step + frame_length
z = numpy.zeros((pad_signal_length - signal_length))
pad_signal = numpy.append(emphasized_signal, z) # Pad Signal to make sure that all frames have equal number of samples without truncating any samples from the original signal

# Construct an array by repeating A(200) the number of times given by reps(348).
# 這個(gè)寫(xiě)法太妙了。目的:用矩陣來(lái)表示幀的次數(shù),348*200,348-總的幀數(shù),200-每一幀的采樣數(shù)
# 第一幀采樣為0、1、2...200;第二幀為80、81、81...280..依次類(lèi)推
indices = numpy.tile(numpy.arange(0, frame_length), (num_frames, 1)) + numpy.tile(numpy.arange(0, num_frames * frame_step, frame_step), (frame_length, 1)).T
frames = pad_signal[indices.astype(numpy.int32, copy=False)] # Copy of the array indices
# frame:348*200,橫坐標(biāo)348為幀數(shù),即時(shí)間;縱坐標(biāo)200為一幀的200毫秒時(shí)間,內(nèi)部數(shù)值代表信號(hào)幅度

# plt.matshow(frames, cmap='hot')
# plt.colorbar()
# plt.figure()
# plt.pcolormesh(frames)


# 第四步、加漢明窗
# 傅里葉變換默認(rèn)操作的時(shí)間段內(nèi)前后端點(diǎn)是連續(xù)的,即整個(gè)時(shí)間段剛好是一個(gè)周期,
# 但是,顯示卻不是這樣的。所以,當(dāng)這種情況出現(xiàn)時(shí),仍然采用FFT操作時(shí),
# 就會(huì)將單一頻率周期信號(hào)認(rèn)作成多個(gè)不同的頻率信號(hào)的疊加,而不是原始頻率,這樣就差生了頻譜泄漏問(wèn)題

frames *= numpy.hamming(frame_length) # 相乘,和卷積類(lèi)似
# # frames *= 0.54 - 0.46 * numpy.cos((2 * numpy.pi * n) / (frame_length - 1)) # Explicit Implementation **

# plt.pcolormesh(frames)


# 第五步-傅里葉變換頻譜和能量譜

# _raw_fft掃窗重疊,將348*200,擴(kuò)展成348*512
NFFT = 512
mag_frames = numpy.absolute(numpy.fft.rfft(frames, NFFT)) # Magnitude of the FFT
pow_frames = ((1.0 / NFFT) * ((mag_frames) ** 2)) # Power Spectrum


# plt.pcolormesh(mag_frames)
#
# plt.pcolormesh(pow_frames)


# 第六步,F(xiàn)ilter Banks濾波器組
# 公式:m=2595*log10(1+f/700);f=700(10^(m/2595)?1)
nfilt = 40 #窗的數(shù)目
low_freq_mel = 0
high_freq_mel = (2595 * numpy.log10(1 + (sample_rate / 2) / 700)) # Convert Hz to Mel
mel_points = numpy.linspace(low_freq_mel, high_freq_mel, nfilt + 2) # Equally spaced in Mel scale
hz_points = (700 * (10**(mel_points / 2595) - 1)) # Convert Mel to Hz
bin = numpy.floor((NFFT + 1) * hz_points / sample_rate)

fbank = numpy.zeros((nfilt, int(numpy.floor(NFFT / 2 + 1))))
for m in range(1, nfilt + 1):
 f_m_minus = int(bin[m - 1]) # left
 f_m = int(bin[m])  # center
 f_m_plus = int(bin[m + 1]) # right

 for k in range(f_m_minus, f_m):
 fbank[m - 1, k] = (k - bin[m - 1]) / (bin[m] - bin[m - 1])
 for k in range(f_m, f_m_plus):
 fbank[m - 1, k] = (bin[m + 1] - k) / (bin[m + 1] - bin[m])
filter_banks = numpy.dot(pow_frames, fbank.T)
filter_banks = numpy.where(filter_banks == 0, numpy.finfo(float).eps, filter_banks) # Numerical Stability
filter_banks = 20 * numpy.log10(filter_banks) # dB;348*26

# plt.subplot(111)
# plt.pcolormesh(filter_banks.T)
# plt.grid('on')
# plt.ylabel('Frequency [Hz]')
# plt.xlabel('Time [sec]')
# plt.show()


#
# 第七步,梅爾頻譜倒譜系數(shù)-MFCCs
num_ceps = 12 #取12個(gè)系數(shù)
cep_lifter=22 #倒譜的升個(gè)數(shù)??
mfcc = dct(filter_banks, type=2, axis=1, norm='ortho')[:, 1 : (num_ceps + 1)] # Keep 2-13
(nframes, ncoeff) = mfcc.shape
n = numpy.arange(ncoeff)
lift = 1 + (cep_lifter / 2) * numpy.sin(numpy.pi * n / cep_lifter)
mfcc *= lift #*

# plt.pcolormesh(mfcc.T)
# plt.ylabel('Frequency [Hz]')
# plt.xlabel('Time [sec]')


# 第八步,均值化優(yōu)化
# to balance the spectrum and improve the Signal-to-Noise (SNR), we can simply subtract the mean of each coefficient from all frames.

filter_banks -= (numpy.mean(filter_banks, axis=0) + 1e-8)
mfcc -= (numpy.mean(mfcc, axis=0) + 1e-8)

# plt.subplot(111)
# plt.pcolormesh(mfcc.T)
# plt.ylabel('Frequency [Hz]')
# plt.xlabel('Time [sec]')
# plt.show()


# 直接頻譜分析
# plot the wave
# plt.specgram(signal,Fs = sample_rate, scale_by_freq = True, sides = 'default')
# plt.ylabel('Frequency(Hz)')
# plt.xlabel('Time(s)')
# plt.show()



plt.figure(figsize=(10, 4))
mfccs = librosa.feature.melspectrogram(signal,sr=8000,n_fft=512,n_mels=40)
librosa.display.specshow(mfccs, x_axis='time')
plt.colorbar()
plt.title('MFCC')
plt.tight_layout()
plt.show()

以上是“梅爾倒譜系數(shù)MFCC怎么實(shí)現(xiàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)成都網(wǎng)站設(shè)計(jì)公司行業(yè)資訊頻道!

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。

分享名稱(chēng):梅爾倒譜系數(shù)MFCC怎么實(shí)現(xiàn)-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://www.chinadenli.net/article4/dcssie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)公司動(dòng)態(tài)網(wǎng)站商城網(wǎng)站微信公眾號(hào)虛擬主機(jī)ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)