[Audio processing] 数据集生成 & 性别年龄分类训练

1、重命名,Python中文路径各种错误,所以需要先将所有文件的路径名全都改成中文。用的是MAC系统,所以WIN下的命令行批处理没法解决,所以用C来完成

//  Created by Carl on 16.
//  Copyright (c) 2016年 Carl. All rights reserved.
//

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <dirent.h>
#include <unistd.h>
using namespace std;

void getFileList()
{
    string sourceDir = "/Users/karl/Work/database/rawdata/children_CN/";
    string targetDir = "/Users/karl/Work/database/rawdata/children/";
    DIR *dir;
    struct dirent *ptr;
    int i = 0;
    if ((dir=opendir(sourceDir.c_str())) == NULL)
    {
        perror("Open dir error...");
        exit(1);
    }
    while ((ptr=readdir(dir)) != NULL)
    {
        if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0)    ///current dir OR parrent
            continue;
        else if(ptr->d_type == 8)
        {
            printf("%s %s\n",(sourceDir + ptr->d_name).c_str(),(targetDir + to_string(i) + ".wav").c_str());
            if(rename((sourceDir + ptr->d_name).c_str(), (targetDir + to_string(i++) + ".wav").c_str())<0)
                cout<<"error"<<endl;
            else
                cout<<"ok"<<endl;
        }

    }
    return;
}

int main() {
    getFileList();
    return 1;
}

2、然后再使用FFMPEG那篇文章写的Python代码,将所有音频文件转成统一格式

#coding=utf-8
#!/usr/bin/env python
‘‘‘CREATED:2016-03-08
Use example of ffmpeg
‘‘‘
import argparse
import sys
import os
import string
import subprocess as sp

#Full path of ffmpeg
FFMPEG_BIN = "/Users/karl/Documents/python/audio/tool/ffmpeg"
#Full path of sourceDir
sourceDir = "/Users/karl/Work/database/rawdata/male/"
#Full path of targetDir
targetDir = "/Users/karl/Work/database/age/male/"
#Channel setting 1 for mono
ac = 1
#Sample frequency
sf = 16000
#Extension setting
ext = ‘wav‘

def convert(sourceDir, targetDir, ac, sf, ext):
    i = 0
    if not os.path.exists(targetDir):
        os.mkdir(targetDir)
    files = os.listdir(sourceDir)
    for f in files:
        if f.endswith(‘.wav‘):
            command = [ FFMPEG_BIN,
                       ‘-i‘, os.path.join(sourceDir, f),
                       ‘-ac‘, str(ac),
                       ‘-ar‘, str(sf), os.path.join(targetDir, str(i) + "." + ext)]
            i += 1
            print command
            pipe = sp.Popen(command, stdout = sp.PIPE, bufsize = 10**8)

if __name__ == ‘__main__‘:
    convert(sourceDir, targetDir, ac, sf, ext)

时间: 2024-08-24 01:12:20

[Audio processing] 数据集生成 & 性别年龄分类训练的相关文章

//随机生成 10到20条数据 数据包含 用户名(5-10位的字母) 性别 年龄(1-100岁)

//随机生成 10到20条数据 数据包含 用户名(5-10位的字母) 性别 年龄(1-100岁)/*生成随机数的方法*/function random(min, max) { if (min < 0 || max < 0) { console.log("请输入大于0的数据"); return false } if (max == null) {//判断如果只传入一个参数 var max = min;//将参数设置为最大值 min = 0;//将最小值设置为零 } retur

中文识别数据集生成脚本

概述 该脚本能够将用户指定的字符输出为不同字体的图像文件,用于训练文字识别的机器学习模型或用于其他文字识别OCR项目 详细 代码下载:http://www.demodashi.com/demo/13952.html 一.开发背景 随着近几年来计算机算力的不断提升,机器学习也迎来了爆发式的发展,图像识别作为机器学习最典型也是最主要的应用之一,目前应用前景火热. 机器学习最重要的一步就是获取数据集,没有一个坚实的数据集做支撑是无法训练出好用的模型的.因此,本文实现了一个脚本,能够生成任意数量,任意字

利用keras自带影评数据集进行评价正面与否的二分类训练

1 from keras.datasets import imdb 2 from keras import layers 3 from keras import models 4 from keras import optimizers 5 import matplotlib.pyplot as plt 6 import numpy as np 7 8 def vectorize_data(x, dim = 10000): 9 res = np.zeros([len(x), dim]) 10 f

利用keras自带路透社数据集进行多分类训练

1 import numpy as np 2 from keras.datasets import reuters 3 from keras import layers 4 from keras import models 5 from keras import optimizers 6 from keras.utils.np_utils import to_categorical 7 import matplotlib.pyplot as plt 8 9 def vectorize_data(

Opencv学习之路—Opencv下基于HOG特征的KNN算法分类训练

在计算机视觉研究当中,HOG算法和LBP算法算是基础算法,但是却十分重要.后期很多图像特征提取的算法都是基于HOG和LBP,所以了解和掌握HOG,是学习计算机视觉的前提和基础. HOG算法的原理很多资料都可以查到,简单来说,就是将图像分成一个cell,通过对每个cell的像素进行梯度处理,进而根据梯度方向和梯度幅度来得到cell的图像特征.随后,将每个cell的图像特征连接起来,得到一个BLock的特征,进而得到一张图片的特征.Opencv当中自带HOG算法,可以直接调用,进行图像的特征提取.但

PHPTree——快速生成无限多级分类

在开发中经常需要用到树形数据,比如无限多级分类,就是典型的树形结构.这里面的算法,用到了递归思想,为了简化开发过程,我编写了一个工具来提升开发效率, 它就是PHPTree. git地址:https://git.oschina.net/jiusem/PHPTree.git 使用方法: <?php  require('PHPTree.class.php'); //原始数据, 从数据库读出 $data = array( array( 'id'=>1, 'name'=>'book', 'pare

JavaScript的一个关于年龄分类的练习

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript"> function getAgeName(){ var age =document.getElementById('in').value; document.getElementById

[Audio processing] FFMPEG转音频格式和采样率

利用FFMPEG转音频格式和采样率 import os import string import subprocess as sp #Full path of ffmpeg FFMPEG_BIN = "/Users/karl/Documents/python/audio/tool/ffmpeg" #Full path of sourceDir sourceDir = "/Users/karl/Documents/python/audio/" #Full path o

[Audio processing] wav音频文件读取int和double数组的关系

直接读取wav文件是int数组,但是有一些实现返回的是double数组,还有些输入是double数组:那我们要互相调用的时候还是要看看两者到底有什么关系,其实很简单. 以单身道,16bit为例 /** * For Mono, 16bit, only! * @author karl * */ public class BasicIntDoubleConvetor { private static final float floatScale = 32768; public double[] arr