1. 程式人生 > >語音識別中特徵提取MFCC、FBANK、語譜圖特徵提取

語音識別中特徵提取MFCC、FBANK、語譜圖特徵提取

  好久沒寫部落格了,今天更新一下使用Python提取聲學模型的特徵,一共三種特徵,分別是MFCC、FABNK以及語譜圖特徵,直接上Python程式碼。

# -*- coding:utf-8 -*-
# author:zhangwei

"""
   該指令碼用於提取語音特徵,包括MFCC、FBANK以及語譜圖特徵;
   該指令碼是對標籤資料進行處理;
"""

from python_speech_features import mfcc, delta, logfbank
import wave
import numpy as np
from scipy.fftpack import fft

def read_wav_data(filename):
    '''
    獲取檔案資料以及取樣頻率;
    輸入為檔案位置,輸出為wav檔案數學表示和取樣頻率;
    '''
    wav = wave.open(filename, 'rb')
    num_frames = wav.getnframes()
    num_channels = wav.getnchannels()
    framerate = wav.getframerate()
    str_data = wav.readframes(num_frames)
    wav.close()
    wave_data = np.fromstring(str_data, dtype=np.short)
    wave_data.shape = -1, num_channels
    wave_data = wave_data.T
    return wave_data, framerate

def get_mfcc_feature(wavsignal, fs):
    '''
    輸入為wav檔案數學表示和取樣頻率,輸出為語音的MFCC特徵+一階差分+二階差分;
    '''
    feat_mfcc = mfcc(wavsignal, fs)
    print(feat_mfcc)
    feat_mfcc_d = delta(feat_mfcc, 2)
    feat_mfcc_dd = delta(feat_mfcc_d, 2)
    wav_feature = np.column_stack((feat_mfcc, feat_mfcc_d, feat_mfcc_dd))
    return wav_feature

def get_fbank_feature(wavsignal, fs):
    '''
    輸入為wav檔案數學表示和取樣頻率,輸出為語音的FBANK特徵+一階差分+二階差分;
    '''
    feat_fbank = logfbank(wavsignal, fs, nfilt=40)
    feat_fbank_d = delta(feat_fbank, 2)
    feat_fbank_dd = delta(feat_fbank_d, 2)
    wav_feature = np.column_stack((feat_fbank, feat_fbank_d, feat_fbank_dd))
    return wav_feature

def get_frequency_feature(wavsignal, fs):
    '''
    輸入為wav檔案數學表示和取樣頻率,輸出為語譜圖特徵,特徵維度是200;
    '''
    x = np.linspace(0, 400 - 1, 400, dtype=np.int64)
    w = 0.54 - 0.46 * np.cos(2 * np.pi * (x) / (400 - 1))
    time_window = 25
    wav_array = np.array(wavsignal)
    wav_length = wav_array.shape[1]
    first2end = int(len(wavsignal[0]) / fs * 1000 - time_window) // 10
    data_input = np.zeros(shape=[first2end, 200], dtype=np.float)
    for i in range(0, first2end):
        p_start = i * 160
        p_end = p_start + 400
        data_line = wav_array[0, p_start:p_end]
        data_line = data_line * w
        data_line = np.abs(fft(data_line)) / wav_length
        data_input[i] = data_line[0: 200]
    data_input = np.log(data_input)
    return data_input

def get_wav_list(filepath):
    '''
       讀取標籤檔案,並把標籤檔案與標籤位置進行處理,輸入為處理好的標籤位置,輸出為標籤位置列表以及標籤位置字典;
    '''
    list_wav = []
    dic_filelist = {}
    with open(filepath, 'r') as fr:
        lines = fr.readlines()
        for line in lines:
            res = line.strip().split(' ')
            dic_filelist[res[0]] = res[1]
            list_wav.append(res[0])
    return dic_filelist , list_wav

def get_wav_text(filename):
    '''
       輸入為檔案位置,輸出為標籤位置以及標籤字典('D31_984': ['早稻', '播種', '和', '育秧', '的', '天氣', '條件', '有利', '與否', '與', '這', '一', '期間', '的', '日', '平均', '溫度', '陰雨', '日數', '密切', '相關'], 'D12_867':);
    '''
    dic_wav_list = {}
    list_text = []
    with open(filename ,'r') as fr:
        lines = fr.readlines()
        for line in lines:
            res = line.strip().split()
            list_text.append(res[0])
            dic_wav_list[res[0]] = res[1 :]
    return dic_wav_list , list_text

if __name__ == '__main__':
    # filepath = 'D4_750.wav'
    filepath = '/home/zhangwei/PycharmProjects/ASR_MFCC/datalist/test.word.txt'
    # wavsignal, fs = read_wav_data(filepath)
    # a = get_mfcc_feature(wavsignal , fs)
    # b = get_fbank_feature(wavsignal , fs)
    # get_frequency_feature(wavsignal , fs)
    # get_wav_list(filepath)
    get_wav_text(filepath)

相關推薦

語音識別特徵提取MFCCFBANK特徵提取

  好久沒寫部落格了,今天更新一下使用Python提取聲學模型的特徵,一共三種特徵,分別是MFCC、FABNK以及語譜圖特徵,直接上Python程式碼。 # -*- coding:utf-8 -*- # author:zhangwei """ 該指令碼用於提取語音特

語音波形,截斷的頻域輸出以及製作

語音視覺化 參考連結1 參考連結2 參考連結3 今天我想復現一下,文中語譜圖提取部分的程式碼 由於輸入的語音有單通道和雙通道之分,處理方式是單通道不變,雙通道只取一個通道的資訊。附上程式碼: import wave as we import numpy as np

音訊特徵(3):繪製

之前小程介紹過怎麼繪製音訊的波形圖(指振幅圖),振幅是聲音的一個特徵,反應了聲音能量的大小。頻率,是聲音的另一個特徵,反應了聲音音調的高低。對頻率的直觀描述或分析,需要使用到語譜圖等手段。 本文介紹如何通過python的pyplot來繪製音訊的語譜圖, 正如使用pyplot來繪製波形圖一樣。 語譜圖,也就是語

深度學習在語音識別的演算法應用資料集行業分析

0 語音識別概述 1 1 語音識別的演算法 2 1.1.1 DNN-HMM 2 1.1.2 RNN-CTC 3 1.1.4FSMN 3 1.1.5 LSTM-DNN電話交談語音識別 3 1.1.6Android科大訊飛語音識別

卷積神經網路(CNN)在語音識別的應用

卷積神經網路(CNN)在語音識別中的應用 作者:侯藝馨 前言 總結目前語音識別的發展現狀,dnn、rnn/lstm和cnn算是語音識別中幾個比較主流的方向。2012年,微軟鄧力和俞棟老師將前饋神經網路FFDNN(Feed Forward Deep Neural Network)引入到聲學模

卷積神經網絡(CNN)在語音識別的應用

現狀 each htm 介紹 產品 都在 color pcnn tmp 卷積神經網絡(CNN)在語音識別中的應用作者:侯藝馨前言總結目前語音識別的發展現狀,dnn、rnn/lstm和cnn算是語音識別中幾個比較主流的方向。2012年,微軟鄧力和俞棟老師將前饋神經網絡FFDN

公開課 | 詳解CNN-pFSMN模型以及在語音識別的應用

  近年來,在深度學習技術的幫助下,語音識別取得了極大的進展,從實驗室開始走向市場,走向實用化。基於語音識別技術的輸入法、搜尋和翻譯等人機互動場景都有了廣泛的應用。 Librispeech是當前衡量語音識別技術的最權威主流的開源資料集。錯詞率(Worderrorrate,WER

公開課報名 | 詳解CNN-pFSMN模型以及在語音識別的應用

近年來,在深度學習技術的幫助下,語音識別取得了極大的進展,從實驗室開始走向市場,走向實用化。基於語音識別技術的輸入法、搜尋和翻譯等人機互動場景都有了廣泛的應用。 Librispeech是當前衡量語音識別技術的最權威主流的開源資料集。錯詞率(Worderrorrate,WER)是衡量

語音識別的資料增強技術

        由於工作需要,調研了語音識別中的資料增強方法,順便對此進行總結。由於能力有限,難免有不對之處,請大家多多指正! 1. VTLP         VPLN用於語音識別,以消除由聲道長度差異

語音識別的lattice與confusion network

如果大家使用搜狗輸入法的語音識別可能會發現在我們說我一句話之後,語音識別會返給你多個結果,這些結果之間只有微小差異(很多時候是發音相同的替代詞)。絕大多數時候,輸入法給出的結果就是我們需要的,但是偶爾也會出現候選結果中的才是我們需要的。你可能會好奇這些候選結果是

1.簡談語音識別的WFTS

用WFST來表徵ASR中的模型(HCLG),可以更方便的對這些模型進行融合和優化,於是可以作為一個簡單而靈活的ASR的解碼器(simple and flexible ASR decoder design)。 利用WFTS,我們可以吧ctc label,lexi

孤立詞語音識別MFCC特徵提取

倒譜(cepstrum)就是一種訊號的傅立葉變換經對數運算後再進行傅立葉反變換得到的譜。它的計算過程如下:   Mel頻率分析就是基於人類聽覺感知實驗的。實驗觀測發現人耳就像一個濾波器組一樣,它只關

一套基於模板匹配的語音識別技術。提取語音特徵,並建立模板庫,可以將語音識別技術應用於機器人

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

語音識別(4)-- 提取頻域特徵

提取頻域特徵 # -*- coding:utf-8 -*- ''' 提取頻域特徵 --使用梅爾頻率倒譜系數 ''' import numpy as np import matplotlib.p

語音特徵引數MFCC提取過程詳解

原來對語音特徵引數MFCC的提取過程不是很瞭解,最近做實驗需要自己手動去提取,所以藉此機會,深入的學習了一下,所以記錄下來,希望能夠對日後的學習有一定的幫助。 一、MFCC概述 在語音識別(Spee

語音識別 特徵提取(一)

一.語音的產生簡介 1.1   發音器官     人體的語音是由人體的發音器官在大腦的控制下做生理運動產生的。人體發音器官由三部分組成:肺和氣管、喉、聲道。 肺是語音產生的能源所在。氣管連線著肺和喉,是肺與聲道的聯絡通道。喉是由一個軟骨和肌肉組成的複雜系統,其中包含著

資料探勘—LDA,PCA特徵提取降維與SVM多分類在人臉識別的應用-資料集ORL

@vision 3 @author:馬旭 @tel:13952522076 @email:[email protected] 執行:執行predict.m檔案; 結果:時間一般為0.2秒左右,正確率100%;(因為測試集比較少) 預處理資料preprocess

模式識別特徵提取及其內在意義

文章來源: http://blog.csdn.net/u013088062/article/details/45952613 這兩天一直在看深度學習的東西,看的頭暈腦脹,不過暈乎歸暈乎,感覺對模式識別中的特徵提取有了更深一點的小理解,暫時記載下來。   突然覺得,

語音識別-特徵提取 (二)

下面總結的是第四個知識點:MFCC。因為花的時間不多,所以可能會有不少說的不妥的地方,還望大家指正。謝謝。       在任意一個Automatic speech recognition 系統中,第一步就是提取特徵。換句話說,我們需要把音訊訊號中具有辨識性的成分提取出

淺談獨立特徵(independent features)潛在特徵(underlying features)提取以及它們在網路安全的應用

1. 關於特徵提取 0x1:什麼是特徵提取 特徵提取研究的主要問題是,如何在資料集未明確表示結果的前提下,從中提取出重要的潛在特徵來。和無監督聚類一樣,特徵提取演算法的目的不是為了預測,而是要嘗試對資料進行特徵識別,以此得到隱藏在資料背後的深層次意義。 回想一下聚類演算法的基本概念,聚類演算法將資料集中