EMO-DB 数据集的 Speech 特征提取

EMO-DB 数据集的 Speech 特征提取

数据集介绍

- EMO-DB数据集是由柏林工业大学录制的德语情感语音库
- 535条语音文件(一共有十名演员其中五男五女)其中语句内容包含日常生活用语的5个短句和5个长句,具有较高情感自由度,不包含某一特定情感倾向。采用16kHZ采样,16bit量化,并以WAV格式保存文件。
- 其中情绪组成:anger, neutral, fear, boredom, happiness, sadness, disgust.

在这里插入图片描述
主要是用到这个语音标签 audio 文件的XXXWa.wav中W就是情绪
在这里插入图片描述

提取相关特征

import feature
import os
import pickle
import tqdm
def extract_emodb(file_name:str):
    label = file_name.split('.')[0][-2]
    feature_27 = feature.extract_mfcc_feature(file_name)
    return (label,feature_27)


database_dir = "H:\dataset\EM-DB\wav"
feature_tuple =()
dir_file = os.listdir(database_dir)
for i in tqdm.tqdm(dir_file):
    file_path = os.path.join(database_dir,i)
    feature_tuple = feature_tuple+ (extract_emodb(file_path),)
with open('emo_db.pkl', 'wb+') as file:
    pickle.dump(feature_tuple,file)

工具

def read_file(filename):
    """
    input a filename and get wave data and time,framerate
    :param filename:
    :return:
    """
    file = wave.open(filename, 'r')
    params = file.getparams()
    nchannels, sampwidth, framerate, wav_length = params[:4]
    str_data = file.readframes(wav_length)
    wavedata = np.fromstring(str_data, dtype=np.short)

    time = np.arange(0, wav_length) * (1.0 / framerate)
    file.close()
    return wavedata, time, framerate
def extract_mfcc_feature(filename):
    """
    input a filename extract mfcc from audio
    :param filename:
    :return:
    """
    data, time, rate = read_file(filename)
    mel_spec = ps.logfbank(data, rate, nfilt=13)
    np.set_printoptions()
    time = mel_spec.shape[0]
    if time <= 300:
        part = mel_spec
        part = np.pad(part, ((0, 300 - part.shape[0]), (0, 0)), 'constant',
                      constant_values=0)
        mfcc = dct(part)
    else:
        begin = 0
        end = 300
        part = mel_spec[begin:end, :]
        mfcc = dct(part)
    return mfcc

总结

这个数据集还是比较简单,明了,听不懂。

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 要将CK+数据集的图片大小改为224*224,需要经过以下步骤: 1. 首先,需要安装Python的图像处理库Pillow。可以使用以下命令安装: ``` pip install Pillow ``` 2. 然后,需要编写Python代码来读取CK+数据集中的图片,并将它们的大小改为224*224。可以使用以下代码: ```python from PIL import Image import os # 设置原始图片路径和新图片路径 original_path = 'CK+数据集的原始路径' new_path = 'CK+数据集的新路径' # 循环遍历原始图片路径中的所有图片 for filename in os.listdir(original_path): # 读取原始图片 image = Image.open(os.path.join(original_path, filename)) # 将图片大小改为224*224 image = image.resize((224, 224)) # 保存新图片 image.save(os.path.join(new_path, filename)) ``` 在上面的代码中,需要将“CK+数据集的原始路径”和“CK+数据集的新路径”替换为实际的路径。然后,代码会循环遍历原始图片路径中的所有图片,将它们的大小改为224*224,并保存到新的路径中。 3. 运行代码,等待处理完所有图片即可。处理完毕后,就可以使用新路径中的图片进行模型训练等操作了。 ### 回答2: 将CK数据集的图片大小改为224*224可以通过以下步骤实现: 首先,需要加载CK数据集并遍历所有图片。 接下来,对每一张图片进行尺寸调整。可以使用Python中的图像处理库PIL(Pillow)来完成这个任务。首先,使用PIL中的`Image.open()`函数打开图片文件,然后使用`resize()`函数将图片的尺寸调整为224*224。最后,保存调整后的图片。 以下是一个示例代码: ```python from PIL import Image import os # 定义数据集路径 dataset_path = 'path_to_ck_dataset' # 遍历数据集中所有的图片文件 for dirpath, dirnames, filenames in os.walk(dataset_path): for filename in filenames: # 获取图片文件路径 image_path = os.path.join(dirpath, filename) # 读取图片 image = Image.open(image_path) # 将图片尺寸调整为224*224 resized_image = image.resize((224, 224)) # 保存调整后的图片 resized_image.save(image_path) ``` 以上代码将CK数据集中的所有图片尺寸调整为224*224,并覆盖保存原始图片。在运行代码之前,请确保已经安装了PIL库。 ### 回答3: 将ck数据集图片大小改为224*224可以通过使用图像处理库来实现,常用的库有opencv-python和PIL(Python Imaging Library)。 使用opencv-python库的方法如下: 1. 导入必要的库: ```python import cv2 import os ``` 2. 遍历ck数据集的图片文件夹,对每张图片进行处理: ```python data_dir = "ck_dataset" # ck数据集所在的文件夹路径 for emo_dir in os.listdir(data_dir): emo_dir_path = os.path.join(data_dir, emo_dir) for img_file in os.listdir(emo_dir_path): img_path = os.path.join(emo_dir_path, img_file) img = cv2.imread(img_path) # 读取图片 img_resized = cv2.resize(img, (224, 224)) # 调整图片大小为224*224 cv2.imwrite(img_path, img_resized) # 保存调整大小后的图片 ``` 使用PIL库的方法如下: 1. 导入必要的库: ```python from PIL import Image import os ``` 2. 遍历ck数据集的图片文件夹,对每张图片进行处理: ```python data_dir = "ck_dataset" # ck数据集所在的文件夹路径 for emo_dir in os.listdir(data_dir): emo_dir_path = os.path.join(data_dir, emo_dir) for img_file in os.listdir(emo_dir_path): img_path = os.path.join(emo_dir_path, img_file) img = Image.open(img_path) # 读取图片 img_resized = img.resize((224, 224)) # 调整图片大小为224*224 img_resized.save(img_path) # 保存调整大小后的图片 ``` 以上方法可以将ck数据集的所有图片大小改为224*224。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值