Speech | 提取语音(数据集)的语音特征合集

news2024/12/23 23:22:38

本文主要讲解了提取数据集的一些主要工具,以及如何使用这些工具,包含安装以及运行命令。 

提取语音(数据集)的语音特征工具(Extract audio features toolkits)

openSMILE
COVAREP
ESPNet
YAAFE

1.openSMILE

Linux 上安装。环境:Ubuntu 20.04.(docker 容器)

安装方法一(暂时有问题)

wget https://github.com/audeering/opensmile/releases/download/v3.0.1/opensmile-3.0.1-linux-x64.tar.xz

# 解压
tar -zxvf opensmile-3.0-linux-x64.tar.gz 
cd opensmile-3.0-linux-x64

 opensmile安装方法2(推荐)

git clone https://github.com/audeering/opensmile
cd opensmile
sh build.sh

 将 smilextract 路径 加入系统目录

加入系统目录

source /etc/profile

 版本不同,可能路径不同,找自己电脑的smilextract路径。我的是:

export PATH="/workspace/tts/opensmile/build/progsrc/smilextract:$PATH"

 (快捷键Esc+:+wq)保存并退出,然后执行:

source /etc/profile

 查看版本信息

SMILExtract -h

 成功则会显示版本等相关信息~

调用命令行运行opensmile

SMILExtract -C(配置文件) -I(后面加输入的音频文件) -O(后面加输出的路径)

(单个音频)实例:

SMILExtract -C ./config/is09-13/IS09_emotion.conf -I /workspace/dataset/emoko/audio/000-001.wav -O /workspace/dataset/emoko/opensmile-file/1.txt

 需要根据自身的需求,更换下面命令中的conf文件名(配置文件)即可,注意音频文件必须是无损的wav格式。

 输出文件1.txt如下

 

最后一行为具体的特征数据:

 

用python批量调用命令行

    如果有很多个音频需要去提取特征,那么一个个用dos界面敲命令会非常麻烦。用python批量调用命令行源代码如下:(俩种方法只选一个)

opensmile-feature01.py

方法一
import os

path = '/workspace/dataset/emoko' 
for root,dir,files in os.walk(path):
    for i in files:
        os.system('SMILExtract -C /workspace/tts/opensmile/config/is09-13/IS09_emotion.conf -I ' + path + '/audio/' + i + ' -O ' + '/emoko' + i[:-4] + '.csv')





方法二
import os
audio_path = '/workspace/dataset/emoko/audio'  # .wav file  path
output_path='/workspace/dataset/emoko/opensmile-pro'   # feature file path
audio_list=os.listdir(audio_path)   
features_list=[]
for audio in audio_list:    # 遍历指定文件夹下的所有文件
    if audio[-4:]=='.wav':
        this_path_input=os.path.join(audio_path, audio)  # 打开一个具体的文件,audio_path+audio
        this_path_output=os.path.join(output_path,audio[:-4]+'.csv') # .txt/.csv
        # 进入opensmile中要执行的文件的目录下;执行文件 -C 配置文件 -I 语音文件 -O 输出到指定文件
        os.system( 'SMILExtract -C /workspace/tts/opensmile/config/is09-13/IS09_emotion.conf -I ' + this_path_input + ' -O ' + this_path_output)
print('over~')


*注意方法二中:这里需要三个路径

①.wav文件文件夹路径

②前面处理语音文件提取的csv文件或txt文件存放的文件路径

③opensmile的情感特征配置文件

运行这个py文件时,要在opensmile文件夹下运行。

提取的文件可保存为.txt/.csv文件

输出(每一个.wav文件对应的特征文件,且与wav文件名字相同)

提取文件后,对csv文件进行处理,提取数据特征向量部分

批量处理生成特征的文本文件,提取组合出可以用来学习处理的矩阵文件。代码如下

opensmile-pro-csv02.py

import os
audio_path = '/workspace/dataset/emoko/audio'  # .wav file  path
output_path='/workspace/dataset/emoko/opensmile-pro'   # feature file path
audio_list=os.listdir(audio_path)   
features_list=[]
for audio in audio_list:    # 遍历指定文件夹下的所有文件
    if audio[-4:]=='.wav':
        this_path_input=os.path.join(audio_path, audio)  # 打开一个具体的文件,audio_path+audio
        this_path_output=os.path.join(output_path,audio[:-4]+'.csv') # .txt/.csv
        # 进入opensmile中要执行的文件的目录下;执行文件 -C 配置文件 -I 语音文件 -O 输出到指定文件
        os.system( 'SMILExtract -C /workspace/tts/opensmile/config/is09-13/IS09_emotion.conf -I ' + this_path_input + ' -O ' + this_path_output)
print('over~')

 

*注意:这里需要三个路径

①.wav文件文件夹路径

②前面处理语音文件提取的csv文件或txt文件存放的文件路径

③opensmile的情感特征配置文件

运行这个py文件时,要在opensmile文件夹下运行。

可以通过如下Python代码进行特征解析:

def feature_file_reader(feature_fp):
    """
    读取生成的ARFF格式csv特征文件中特征值
    :param feature_fp: csv特征文件路径
    :return: np.array
    """
    with open(feature_fp) as f:
        last_line = f.readlines()[-1]  # ARFF格式csv文件最后一行包含特征数据
    features = last_line.split(",")
    features = np.array(features[1:-1], dtype="float64")  # 第2~倒数第二个为特征数据
    return features

保存为一个npy文件

import os
import numpy as np
txt_path='输出文件夹路径'
txt_list=os.listdir(txt_path)
features_list=[]
for txt in txt_list:
    if txt[-4:]=='.txt':
        this_path=os.path.join(txt_path,txt)
        f=open(this_path)
        last_line=f.readlines()[-1]
        f.close()
        features=last_line.split(',')
        features=features[1:-1]
        features_list.append(features)
features_array=np.array(features_list)
np.save('保存文件的路径/opensmile_features.npy',features_array)

创建自己的配置文件

可参考audio - How to create custom config files in OpenSMILE - Stack Overflow

 openSMILE 3.0 - audEERING 

opensmile 参数详解

01.运行命令参数

更多可查看Reference section — openSMILE Documentation

首先是处理数据时

'lldsink','lldhtksink','lldarffsink','csvsink','htksink',cArffSink ,'arffsink'具体可查看opensmile/standard_data_output.conf.inc at master · naxingyu/opensmile · GitHub

 

opensmile自带的配置文件:

config/对于音乐信息检索和语音处理领域的常见任务,我们在目录中为以下常用功能集提供了一些示例配置文件 。这些还包含 2009-2013 年 INTERSPEECH 影响和副语言学挑战的基线声学特征集:

  • 用于键和弦识别的色度特征

  • 用于语音识别的 MFCC

  • 用于语音识别的 PLP

  • 韵律(音调和响度)

  • INTERSPEECH 2009 情感挑战赛功能集

  • INTERSPEECH 2010 副语言挑战赛功能集

  • INTERSPEECH 2011 演讲者状态挑战功能集

  • INTERSPEECH 2012 演讲者特质挑战赛功能集

  • INTERSPEECH 2013 ComParE 功能集

  • 用于暴力场景检测的 MediaEval 2012 TUM 功能集。

  • 用于情感识别的三个参考特征集(旧集,被新的 INTERSPEECH 挑战集淘汰)

  • 基于 INTERSPEECH 2010 副语言挑战音频功能的视听功能。

ESPnet

Linux(Ubuntu20.04)安装

apt-get install cmake
apt-get install sox
apt-get install flac

git clone https://github.com/espnet/espnet
cd espnet/tools

#python环境下
bash setup_python.sh $(command -v python3)

make

#根据make后出来的值复制 TH_VERSION 和 CUDA_VERSION 版本

make TH_VERSION=1.13.1 CUDA_VERSION=11.4

其他请参考Installation — ESPnet 202304 documentation

检查安装

 bash -c ". ./activate_python.sh; . ./extra_path.sh; python3 check_install.py"

【PS1】bash: SMILExtract: command not found

https://fxburk.medium.com/machine-classification-of-emotional-speech-with-emodb-and-python-25a67753210e

apt install automake
apt install autoconf
apt install libtool
apt install m4
apt install gcc
apt  update

 尝试1

./SMILExtract -h

出现bash: ./SMILExtract: No such file or directory

  尝试2

strace ./SMILExtract

出现strace: Can't stat './SMILExtract': No such file or directory

参考文献

[1]opensmile/INSTALL at master · naxingyu/opensmile · GitHub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/643146.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java集合框架:链表和LinkedList详解

目录 一、ArrayList的缺陷 二、链表(主要介绍不带头的非循环的 单链表 / 双链表) 注: 三、模拟链表的实现: MySingleList(单链表) MyLinkedList(双链表) 四、LinkedList的使用 …

HNU计算机体系结构-实验一:RISC-V指令理解

HNU计算机体系结构-实验一 前言1.实验目的2.实验步骤1.安装模拟器Ripes2.生成汇编指令3.思考问题1)指令add x15, x14, x152)指令bge x15 x14 -683)指令lw x15, -20 x84)指令sw x15, -20 x85)简述BranchE信号的作用6&am…

通达信筹码集中度计算公式,解决了结果不同的问题

筹码分布图基本上是国内股票交易软件的标配,一般在K线图窗口的右侧。通达信软件中,在右下角有个“筹”,点击之后就可以看到“筹码分布图”。(如下图)筹码分布图是根据一定的模型计算出的流通股票持仓成本分布情况&…

postman接口关联实战解析

在使用postman做接口测试时,有时候后面的接口需要获取前面接口的某一个返回值做为请求参数,这时就可以使用关联。 如从A接口提取出a字段的值,供B接口的b字段使用。 一个接口的返回报文如下: {"retCode": "0&quo…

【数据库原理与实践】知识点归纳(上)

第1章 数据库系统概述 (数据处理技术的发展 数据库的基本概念和特点) 一:数据、信息、知识、决策 对应:Data、Information、Knowledge、Decision 二:数据库技术的产生与发展 产生原因:数据管理任务的…

如何正确使用Postman变量?又该如何灵活设置变量?

目录 引言 理解变量 postman的变量类型 变量作用域 变量覆盖规则 创建变量 创建全局变量 创建环境变量 创建集合变量 使用变量 引言 Postman变量可以帮助你快速生成测试数据、模拟不同的场景和环境。 但是,如何正确使用Postman变量?又该如何…

Android的服务Service

Android学了太久了,都忘了。复习下四大组件之一的Service。 介绍 Android的Service是一种在后台执行长时间运行操作的组件,它可以在没有用户界面的情况下执行任务,并且可以与应用程序的其他组件进行通信。Service通常用于处理网络请求、音乐…

快速创建Django项目

环境搭建 安装Django之前需要先安装python环境和pycharm。 目前 Django 1.6.x 以上版本已经完全兼容 Python 3.x。 python安装教程:https://blog.csdn.net/David_house/article/details/100110542 项目创建 打开pycharm,选择文件–>新建项目 创建D…

MySQL操作基础

文章目录 一、Mysql的基本概念1.1数据库有哪些组成数据表数据库 1.2数据库系统和数据库管理系统1.3数据库的发展史 二、数据库的分类三、数据库的数据类型三、数据库的操作3.1查看数据库的结构3.2创建及删除数据库和表3.3管理表中的数据记录3.4修改表名和表结构 Linux操作系统&…

11.JavaWeb-Spring框架

1.Spring概念 Spring框架是一个轻量级开源的应用程序框架,用于开发Java企业级应用程序。它提供了一种综合的编程和配置模型,可以帮助开发人员构建灵活、可扩展且易于维护的应用程序。 Spring的根本使命:简化Java开发 【Spring给予了Java新生】…

文心一言 VS 讯飞星火 VS chatgpt (40)-- 算法导论5.4 4题

四、一次聚会需要邀请多少人,才能让其中 3 人的生日很可能相同? 文心一言: 为了解决这个问题,我们需要先计算出所有可能的生日组合数,然后计算出其中生日相同的组合数。 已知需要邀请的人数为:23人 根据组合数公式…

大数据开发之Hive案例篇12:HDFS rebalance 一例

文章目录 一. 问题描述二. 解决方案2.1 增加节点2.2 rebalance2.3 rebalance引发的问题 一. 问题描述 公司的离线数仓是CDH集群,19个节点,HDFS存储空间大约400TB左右,使用量在200TB左右。 由于历史遗留的问题,数据仓库需要重构&a…

将Qtcreator编译器、调试器等配置为MSVC2017/2019

目录 1. 前言 2. 工具/原料 2.1. 安装Windows下的软件开发调试器 3. 配置Qtcreator 1. 前言 安装Qt或Qtcreator时,一般选择MinGW 64-bit或MSVC编译器。对于MinGW 64-bit很简单,一般安装后会自动在Qtcreator配置好,不用费心就可以进行开发…

一种对不同类型齐格勒-尼科尔斯 P-I-D 控制器调谐算法研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

基于NIM_DUILIB_FRAMEWORK框架的网易云信demo:NIM_PC_DEMO

NIM_PC_DEMO 网易云信 PC IM Demo 是基于网易云信 PC SDK 制作的即时通讯示例程序,UI 库使用 NIM Duilib 制作。 github地址:。 1、预览 2、最低要求 CMake 3.10 或以上版本。Visual Studio 2017 或以上版本。Git。 3、开发步骤 NIM Demo 从 8.4.0 版本开始使…

selenium面试题总结

今天有同学问到seleinum面试的时候会问到的问题,随便想了想,暂时纪录一下。欢迎大家在评论中提供更多问题。 1.selenium中如何判断元素是否存在? selenium中没有提供原生的方法判断元素是否存在,一般我们可以通过定位元素异常捕获…

Java网络开发(Tomcat同步数据增删改查)—— 用Jsp语法实现同步请求的 增删改查

目录 引出显示所有数据到前端(1)前端代码:list.jsp(2)后端代码:CompanyListServlet.java 新增数据---转发类型信息---新增信息业务(1)在list.jsp页面点击添加(2&#xff…

don‘t have write permissions for the /System/Library/Frameworks/Ruby.framework

don’t have write permissions for the /System/Library/Frameworks/Ruby.framework sudo gem install sigh或sudo gem install -n /usr/local/bin cocoapods --pre出现: appleCQIMAC-L1A9Q05R ~ % sudo gem update --system Password: Updating rubygems-update F…

社会心理学(1) 社会心理学的定义

今天开始 我们一起学习一门课程 社会心理学 社会心理学 他是 应用心理学 或者 心理学专业的一个必修课 吴江霖教授说过 心理学应该分为两大分支 生理心理学 和 社会心理学 如果认同他的观点 那么 社会心理学可谓是相当重要了 社会心理学的定义之广可以说 有多少社会心理学教…

书山有路勤为径 学海无涯苦作舟(AI引领时代浪潮)

书山有路勤为径 学海无涯苦作舟 AI模型是如何训练的? 数据准备 在训练AI模型之前,需要准备大量的数据集。数据集的质量和多样性直接影响模型训练的效果。数据集准备的主要工作包括: 数据清洗:清除数据中的噪声、错误、重复等不…