收藏

机器学习根据话音预测年龄

2022-01-30  本文已影响0人  刘小白DOER

    为了达到使用oneclass svm或者IsolationForest 完成特定语音分类,笔者在kaggle找到一个例子Common Voice | Kaggle,根据mp3文件提取话音特征来预测说话者的年龄,这个例子很好阐述怎么将语音特征提取出来,然后基于特征和性别来有监督学习,最后使用回归模型完成年龄预测。

    整个算法分为以下几个个部分:

1、Data Collection 数据探索

    查看csv文件中数据内容如下:

2、Data Pre-processing 数据处理

    将age、gender列没有空行的数据提取出来。同时将年龄的字符串格式转为机器学习能够识别的数值型数据。

3、Feature Engineering 特征提取

    Librosa是一个用于音频分析的Python软件包,提供了创建音频信息检索系统所需的构建模块。Librosa帮助可视化音频信号,并使用不同的信号处理技术进行特征提取。

 3.1函数feature_extraction完成特征提取

    函数feature_extraction完成四个特征提取:Spectral Centroid、Spectral Centroid、Spectral Rolloff、MFCCs 。然后将csv文件中原有的gender加入到特征features中,性别对于年龄来说也是一个重要的特征。

3.2函数create_df_features组成新的特征dataframe

    使用函数create_df_features来存储特征,形成新的dataframe数据,方便后面的训练和测试。

3.3特征标准正态分布StandardScaler

    使用StandardScaler将特征转换为标准正态分布。

3.4LabelEncoder将性别类别数字化

    使用LabelEncoder将性别类别数字化处理。

3.5SelectKBest过滤特征,选择22个特征

4、Model Selection 模型选择

    选择了两个模型:Support Vector Machine(SVM)、Random Forest(随机森林)。

4.1使用网格搜索来完成模型参数选择,总的来说SVM模型更高。

4.2使用SVM模型训练并测试

    使用train_test_split完成训练和测试数据分离,使用SVC模型在训练集训练,在测试集测试。

    画出混淆矩阵如下:

    classification_report获得测试得分如下:

上一篇下一篇

猜你喜欢

热点阅读