国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【ResNet18】on IEMOCAP—語音情感識(shí)別(預(yù)處理篇)

這篇具有很好參考價(jià)值的文章主要介紹了【ResNet18】on IEMOCAP—語音情感識(shí)別(預(yù)處理篇)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

在開始模型訓(xùn)練前,一定要對(duì)數(shù)據(jù)處理熟悉!

?文章來源地址http://www.zghlxwxcb.cn/news/detail-719439.html

一、預(yù)處理:

1、IEMOCAP語音數(shù)據(jù)部分

iemocap,語音識(shí)別,人工智能,python

按照人(1F,1M,2F,2M,3F,3M,4F,4M,5F,5M):

ang有語音數(shù)量:[147, 82, 67, 70, 92, 148, 205, 122, 78, 92]
exc有語音數(shù)量:[63, 80, 96, 114, 48, 103, 154, 84, 82, 217]
hap有語音數(shù)量:[69, 66, 70, 47, 80, 55, 31, 34, 77, 66]
neu有語音數(shù)量:[171, 213, 135, 227, 130, 190, 76, 182, 221, 163]
sad有語音數(shù)量:[78, 116, 113, 84, 172, 133, 62, 81, 132, 113]

混合:

ang有語音數(shù)量:1103????????exc有語音數(shù)量:1041????????hap有語音數(shù)量:595
neu有語音數(shù)量:1708????????sad有語音數(shù)量:1084? 總共5531條

如果是4490條的話,就是去掉了exc的1041條。

在可以看到這個(gè)5分類各自的語音數(shù)量并不是很均衡。一大多數(shù)SER論文是做四分類即,'ang','hap', 'neu', 'sad',把'hap'與'exc'語音合并。那我也做4分類的SER,便于后期與其他論文的模型性能的比較。

2、數(shù)據(jù)劃分

大多數(shù)論文采用5折交叉驗(yàn)證或者10折交叉驗(yàn)證。

K折交叉驗(yàn)證:?把數(shù)據(jù)平均分成k等份,每次實(shí)驗(yàn)?zāi)靡环葑鰷y試,其余用做訓(xùn)練。實(shí)驗(yàn)k次求平均值。如5折交叉驗(yàn)證就是把數(shù)據(jù)平均分成5等份,每次實(shí)驗(yàn)?zāi)靡环葑鰷y試,其余用做訓(xùn)練。實(shí)驗(yàn)5次求平均值。

在IEMOCAP上的SER論文實(shí)驗(yàn)有speaker independent 與speaker dependent之分 :

(1)speaker dependent(SD):若采用 5 折交叉驗(yàn)證法,將語音情感數(shù)據(jù)庫中的所有數(shù)據(jù)隨機(jī)打亂,然后平均成 5 份,逐一選取 1 份作為測試數(shù)據(jù),其他 4 份做訓(xùn)練數(shù)據(jù),最后將得到的準(zhǔn)確率求和取平均。如此重復(fù) 5 次5折交叉驗(yàn)證,然后再求和取平均。

(2)speaker independent(SI):將IEMOCAP中逐一選取不同的說話人做測試數(shù)據(jù),其他說話人做訓(xùn)練數(shù)據(jù),最后將每個(gè)人的語音情感識(shí)別準(zhǔn)確率求和取平均;若采用5倍交叉驗(yàn)證,根據(jù)說話人的數(shù)量以80%:20%的比例分割數(shù)據(jù),80%的數(shù)據(jù)用于模型訓(xùn)練,剩余的數(shù)據(jù)用于模型測試。具體就是:IEMOCAP有10個(gè)人,1/2/3/4/5/6/7/8-th person做訓(xùn)練集(80%),9/10-th做測試集(20%);1/2/3/4/5/6/9/10-th person做訓(xùn)練集(80%),7/8-th做測試集(20%);1/2/3/4/7/8/9/10-th person做訓(xùn)練集(80%),5/6-th做測試集(20%);1/2/5/6/7/8/9/10-th person做訓(xùn)練集(80%),3/4-th做測試集(20%);3/4/5/6/7/8/9/10-th person做訓(xùn)練集(80%),1/2-th做測試集(20%)。這與按照session做5折交叉驗(yàn)證類似了。

IEMOCAP有5個(gè)session:1/2/3/4/5,比較特別,一個(gè)session里有兩個(gè)人,所以如果按照session做5折交叉驗(yàn)證的話就相當(dāng)于speaker independent了。

按session的5折交叉驗(yàn)證:

fold1:2/3/4/5-th session組成訓(xùn)練集,1-th session為測試集;

fold2:1/3/4/5-th session組成訓(xùn)練集,2-th session為測試集;

fold3:1/2/4/5-th session組成訓(xùn)練集,3-th session為測試集;

fold4:1/2/3/5-th session組成訓(xùn)練集,4-th session為測試集;

fold5:1/2/3/4-th session組成訓(xùn)練集,5-th session為測試集;

本次實(shí)驗(yàn)策略采用SI,說話人獨(dú)立的策略。

3、特征提取

常用的特征:語譜圖、MFCC等。語譜圖(語音頻譜圖):有線性頻譜圖、梅爾頻譜圖、log-Mel頻譜圖。

這次我就提取梅爾頻譜圖:

(1)首先把IEMOCAP的語音統(tǒng)一到相同長度,這里我統(tǒng)一到2秒,即把一條語音切分成2秒一段,重疊1.6秒;不足2秒的語音用0補(bǔ)充。

def cut_wav(wav, seg_length, overlap, rate):
    """波形數(shù)據(jù)切割"""
    seg_len_points = seg_length * rate  # 一個(gè)segment所包含的采樣點(diǎn)數(shù)
    seg_overlap_points = overlap * rate  # segment重疊的采樣點(diǎn)數(shù)
    seg_hop_points = (seg_length - overlap) * rate  # segment移動(dòng)
    start = 0  # 開始指針
    end = start + seg_len_points  # 結(jié)尾指針
    segs = []  # 存儲(chǔ)切分片段的
    # 一段語音可被分割的數(shù)量
    seg_num = int((len(wav) - seg_len_points + seg_hop_points) / seg_hop_points) 
    # 長度不足一個(gè)片段的補(bǔ)零處理
    if len(wav) < seg_len_points:
        segs.append(np.hstack([wav, np.array([0] * (seg_len_points - len(wav)))]))
        # segs.append(wav)
    for _ in range(seg_num):  # 從頭開始切分
        segs.append(wav[int(start): int(end)])  # 添加新片段
        start += seg_hop_points  # 更新起始指針
        end = start + seg_len_points  # 更新結(jié)尾指針
    return segs

(2)預(yù)加重:

def pre_emphasis(signal):  # 定義預(yù)加重函數(shù)
    pre_emphasis = 0.97  
    emphasized_signal = np.append(signal[0],signal[1:] - pre_emphasis * signal[: -1])
    return emphasized_signal  # 返回預(yù)加重以后的采樣數(shù)組

(3)生成梅爾語譜圖:先librosa.load加載語音;然后調(diào)用cut_wav把語音切分成2秒一段,該函數(shù)返回一條語音的所有段;循環(huán),對(duì)每一個(gè)語音段seg執(zhí)行:預(yù)加重,stft變換,np.abs,平方,mel濾波器組,dot,power_to_db操作,就可以得到mel-spectrum;最后生成圖像。

def get_spectrogram(root_path, new_path):
    emos = ['ang', 'exc', 'hap', 'neu', 'sad']
    label_dict = {'ang': 0, 'exc': 1, 'hap': 1, 'neu': 2, 'sad': 3}  # 把exc與hap合并
    fold_name = ["Session1F", "Session1M", "Session2F", "Session2M", "Session3F",
                 "Session3M", "Session4F", "Session4M", "Session5F", "Session5M"]
    print("數(shù)據(jù)收集階段:")
    time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    print(time)
    for name in fold_name:  # 遍歷每一折文件夾
        for emo in emos:  # 遍歷每一種情感
            files = os.listdir(os.path.join(root_path, name, emo))  # 列出該折中該類情感的文件
            for f_name in files:  # 針對(duì)每一個(gè)wav文件#D:\Workspace\FLDNetOnIEMOCAP\IEMOCAP\Session1F\ang\Ses01F_impro01_F012.wav
                f_path = os.path.join(root_path, name, emo, f_name)  # 獲取文件名
                print(f_path)
                (sig, rate) = librosa.load(f_path, sr=16000)
                print(len(sig))
                segs = cut_wav(sig, seg_length=2, overlap=1.6, rate=rate)  # 切分波形數(shù)組為2s長,重疊1.6s片段

                for i, seg in enumerate(segs):
                    y = pre_emphasis(seg)  # 預(yù)加重
                    # 對(duì)每一段(2秒)segment進(jìn)行變換
                    linear = librosa.stft(y=y, n_fft=1024, hop_length=512)
                    mag = np.abs(linear)  # (1+n_fft//2, T)  復(fù)數(shù)的實(shí)部:np.abs(D(f,t))頻率的振幅
                    mag = mag ** 2  # 平方
                    mel_basis = librosa.filters.mel(sr = rate, n_fft=1024, n_mels=40)  # (n_mels, 1+n_fft//2)   梅爾譜矩陣
                    mel = np.dot(mel_basis, mag)  # (n_mels, t)  梅爾譜=梅爾譜矩陣*幅度譜矩陣 mel spectrogram
                    mel = librosa.power_to_db(mel)  # mel-spec
                    # logmelspec = librosa.amplitude_to_db(melspec)     # 轉(zhuǎn)換到對(duì)數(shù)刻度
                    plt.figure(figsize=(3, 3))  #
                    librosa.display.specshow(mel, y_axis='mel', fmax=8000, x_axis='time', sr=rate)  # ???
                    # plt.title('Mel spectrogram')
                    plt.axis('off')  # 關(guān)閉坐標(biāo)軸
                    before = f_path[: -4]  # 前綴D:\Workspace\FLDNetOnIEMOCAP\IEMOCAP\Session1F\ang\Ses01F_impro01_F012
                    seg_name = before + "-" + str(i) + ".png"
                    save_path = os.path.join(new_path, name, emo)  # 存儲(chǔ)路徑創(chuàng)建
                    if not os.path.exists(save_path):
                        os.makedirs(save_path)
                    plt.savefig(os.path.join(save_path, seg_name.split('\\')[-1]), bbox_inches='tight', pad_inches=0)
                    # seg_name.split('\\')[-1] 就是Ses01F_impro01_F012
                    plt.close()

下圖顯示,session1F中impro04_F031語音的第四段的梅爾語譜圖:Ses01F_impro04_F031-3

iemocap,語音識(shí)別,人工智能,python

最后得到的數(shù)據(jù)結(jié)構(gòu):

fold0:訓(xùn)練集:1-8-th person的梅爾語譜圖? ? 測試集:9-10-th person的語譜圖

fold1:訓(xùn)練集:1-8-th person的梅爾語譜圖? ? 測試集:9-10-th person的語譜圖

fold2:訓(xùn)練集:1-8-th person的梅爾語譜圖? ? 測試集:9-10-th person的語譜圖

fold3:訓(xùn)練集:1-8-th person的梅爾語譜圖? ? 測試集:9-10-th person的語譜圖

fold4:訓(xùn)練集:1-8-th person的梅爾語譜圖? ? 測試集:9-10-th person的語譜圖

?

到了這里,關(guān)于【ResNet18】on IEMOCAP—語音情感識(shí)別(預(yù)處理篇)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【C語言】程序環(huán)境和預(yù)處理|預(yù)處理詳解|定義宏(下)

    【C語言】程序環(huán)境和預(yù)處理|預(yù)處理詳解|定義宏(下)

    主頁:114514的代碼大冒 qq:2188956112(歡迎小伙伴呀hi?(。???。)??) Gitee:莊嘉豪 (zhuang-jiahaoxxx) - Gitee.com 文章目錄 目錄 文章目錄 前言 2.5帶副作用的宏參數(shù) 2.6宏和函數(shù)的對(duì)比 3#undef ?編輯 4 命令行定義 5 條件編譯 6 文件包含 總結(jié) 咱們書接上回 2.5帶副作用的宏參數(shù) 先來

    2024年01月17日
    瀏覽(33)
  • 數(shù)據(jù)采集與預(yù)處理01: 項(xiàng)目1 數(shù)據(jù)采集與預(yù)處理準(zhǔn)備

    數(shù)據(jù)采集與預(yù)處理01: 項(xiàng)目1 數(shù)據(jù)采集與預(yù)處理準(zhǔn)備

    數(shù)據(jù)采集:足夠的數(shù)據(jù)量是企業(yè)大數(shù)據(jù)戰(zhàn)略建設(shè)的基礎(chǔ),因此數(shù)據(jù)采集成為大數(shù)據(jù)分析的前站。數(shù)據(jù)采集是大數(shù)據(jù)價(jià)值挖掘中重要的一環(huán),其后的分析挖掘都建立在數(shù)據(jù)采集的基礎(chǔ)上。大數(shù)據(jù)技術(shù)的意義確實(shí)不在于掌握規(guī)模龐大的數(shù)據(jù)信息,而在于對(duì)這些數(shù)據(jù)進(jìn)行智能處理,

    2024年01月25日
    瀏覽(29)
  • C語言——程序環(huán)境和預(yù)處理(再也不用擔(dān)心會(huì)忘記預(yù)處理的知識(shí))

    C語言——程序環(huán)境和預(yù)處理(再也不用擔(dān)心會(huì)忘記預(yù)處理的知識(shí))

    先簡單了解一下程序環(huán)境,然后詳細(xì)總結(jié)翻譯環(huán)境里的編譯和鏈接,然后在總結(jié)編譯預(yù)處理。 在 ANSI C 的任何一種實(shí)現(xiàn)中,存在兩個(gè)不同的環(huán)境 翻譯環(huán)境:這個(gè)環(huán)境中源代碼被轉(zhuǎn)換為可執(zhí)行的機(jī)器指令。 執(zhí)行環(huán)境:執(zhí)行二進(jìn)制代碼。 計(jì)算機(jī)如何執(zhí)行二進(jìn)制指令? 我們寫的C語

    2024年02月09日
    瀏覽(36)
  • 數(shù)據(jù)預(yù)處理matlab matlab數(shù)據(jù)的獲取、預(yù)處理、統(tǒng)計(jì)、可視化、降維

    1.1 從Excel中獲取 使用readtable() 例1: 使用 spreadsheetImportOptions(Name,Value) 初步確定導(dǎo)入信息, 再用 opts.Name=Value 的格式添加。 例2: 先初始化 spreadsheetImportOptions 對(duì)象, 再用 opts.Name=Value 的格式逐個(gè)添加。 例3: 將導(dǎo)入信息存到變量里, 再使用 spreadsheetImportOptions(Name,Value)

    2024年02月15日
    瀏覽(55)
  • 昇騰CANN DVPP硬件加速訓(xùn)練數(shù)據(jù)預(yù)處理,友好解決Host CPU預(yù)處理瓶

    本文分享自華為云社區(qū)《昇騰CANN 7.0 黑科技:DVPP硬件加速訓(xùn)練數(shù)據(jù)預(yù)處理,友好解決Host CPU預(yù)處理瓶頸》,作者: 昇騰CANN 。 隨著人工智能的快速發(fā)展,越來越多的應(yīng)用場景需要使用機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型。AI網(wǎng)絡(luò)模型的訓(xùn)練一般分成兩個(gè)關(guān)鍵部分,一個(gè)是訓(xùn)練數(shù)據(jù)預(yù)處理

    2024年02月05日
    瀏覽(30)
  • 大數(shù)據(jù)采集技術(shù)與預(yù)處理學(xué)習(xí)一:大數(shù)據(jù)概念、數(shù)據(jù)預(yù)處理、網(wǎng)絡(luò)數(shù)據(jù)采集

    大數(shù)據(jù)采集技術(shù)與預(yù)處理學(xué)習(xí)一:大數(shù)據(jù)概念、數(shù)據(jù)預(yù)處理、網(wǎng)絡(luò)數(shù)據(jù)采集

    目錄 大數(shù)據(jù)概念: 1.數(shù)據(jù)采集過程中會(huì)采集哪些類型的數(shù)據(jù)? 2.非結(jié)構(gòu)化數(shù)據(jù)采集的特點(diǎn)是什么? 3.請(qǐng)闡述傳統(tǒng)的數(shù)據(jù)采集與大數(shù)據(jù)采集的區(qū)別? ???????????????4.大數(shù)據(jù)采集的數(shù)據(jù)源有哪些?針對(duì)不同的數(shù)據(jù)源,我們可以采用哪些不同的方法和工具? 數(shù)據(jù)

    2024年01月25日
    瀏覽(30)
  • 【C語言】預(yù)處理

    【C語言】預(yù)處理

    在ANSI C的任何一種實(shí)現(xiàn)中,存在兩個(gè)不同的環(huán)境。 第1種是翻譯環(huán)境,在這個(gè)環(huán)境中源代碼被轉(zhuǎn)換為可執(zhí)行的機(jī)器指令。 第2種是執(zhí)行環(huán)境,它用于實(shí)際執(zhí)行代碼。 1.翻譯環(huán)境 組成一個(gè)程序的每個(gè)源文件通過編譯過程分別轉(zhuǎn)換成目標(biāo)代碼 每個(gè)目標(biāo)文件由鏈接器(linker)捆綁在

    2024年02月17日
    瀏覽(28)
  • 圖像預(yù)處理方法

    圖像預(yù)處理方法

    兩個(gè)基本的形態(tài)學(xué)操作是腐 和膨脹。他們 的變體構(gòu)成了開運(yùn)算 ,閉運(yùn)算, 梯度等。 根據(jù)卷積核的大小前景的所有像素會(huì)腐 掉 變?yōu)?0 ,所以前景物體會(huì)變小整幅圖像的白色區(qū)域會(huì)減少。 對(duì)于去除白噪聲很有用 也可以用來斷開兩個(gè) 在一塊的物體等。 函數(shù)原型: ?src: 輸入原

    2023年04月11日
    瀏覽(36)
  • 07_預(yù)處理

    庫: 將源文件生成的二進(jìn)制文件 只需要鏈接即可生成可執(zhí)行文件 庫和工程在同一目錄下 靜態(tài)庫libtestlib.a 以lib開頭 .a結(jié)尾 中間才是庫的名稱testlib 庫和庫的頭文件.h在自定義目錄(推薦) 自定義目錄比如 lib目錄 -I: include目錄 -L: lib目錄 -l: 庫名 庫和工程在同一目錄下 將當(dāng)前目錄

    2024年02月16日
    瀏覽(46)
  • 編譯預(yù)處理:#if

    #if expression … #elif … #end expression 是整數(shù)常量比較的表達(dá)式,例如: defined表達(dá)式,例如 defined AAA, 或者 defined(AAA), 如果AAA是一個(gè)宏定義,return true,否則,return false; 單個(gè)整數(shù),例如:1/10/100/0, 非零為true,零為false; 整數(shù)比較,例如:1 == 1為true, 0 == 0為ture, 1 2為false; 單個(gè)

    2023年04月14日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包