WSJ0数据中的.wv1文件(sph)读取

WSJ0数据中语音文件都是.wv1格式,为sph文件,在Windows下无法正常读取,需要进行转换。 转换工具:sph2pipe_v2.5,如果安装过Kaldi的话,可以直接使用 $KALDI_ROOT/tools/sph2pipe_v2.5/sph2pipe,如果没有安装的话,可以单独下载:http://sourceforge.net/projects/kaldi/files/sph2pipe_v2.5.tar.gz 如果是在Windows环境下的话直接使用sph2pipe.exe即可,如果是在linux环境下的话,则需要进行GCC编码:gcc -o sph2pipe  *.c -lm 最简单使用方式为 sph2pipe -f wav filename.wv1 filename.wav      

Matlab处理log文件

一般文本类文件都用java或python处理方便很多,此处记录一下matlab 处理文本文件的一些语法。 例如,程序记录下的日志文件为:dl4ss_output.log_2017_03_10_210643,其部分内容为: [Epoch: 1] - SDR:1.308344, SIR:2.063156, SAR:-1.509836, NSDR:2.908430   Epoch 1/1   50/50 [==============================] - 178s - loss: 1.9203 - val_loss: 1.7383   Epoch 1/1   50/50 [==============================] - 176s - loss: 1.6208 - val_loss: 1.5113   Epoch 1/1   50/50 [==============================] - 176s - loss: 1.4212 - val_loss: 1.3334   Epoch 1/1   50/50 [==============================] - 175s - loss: 1.2612 - val_loss: 1.1911   Epoch 1/1   50/50 [==============================] - 176s - loss: 1.1320 - val_loss: 1.0740   [Epoch: 6] - SDR:2.128937, SIR:3.154744, SAR:0.774681, NSDR:3.729023   Epoch 1/1   50/50 [==============================] - 175s - loss: 1.0312 - val_loss: 0.9913   现在想对该日志文件进行处理,并将Epoch迭代过程中评估的结果值绘制成图,方法如下: clc    clear   colours = ’rbckgcmbkgcmbkgcmbgrcmykbgrcmykb’;  % ’bgrcmykw’ modified by jacoxu@msn.com    symbols = ’.x^os*.dvph><x+^os*.dvph><+’;  % ’.ox+*sdv^<>ph’ %参考 http://blog.sina.com.cn/s/blog_618af1950100kdi2.html    linetypes = {‘-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’,’-’};  % {‘-’,’:’,’-.’,’–’}    figureSize = [300,200,500,300];    lineWidth = 1.5;    para_list = {‘SDR’, ’SIR’, ’SAR’, ’NSDR’};       log_file = ’dl4ss_output.log_2017_03_10_210643′;    log_file_fd = fopen(log_file);    epoch_idx = 0;    … 继续阅读

Python下调用Matlab接口

1. 安装Matlab到目录$Matlab_Path 2. 安装Matlab Engine API for Python cd $Matlab_Path/extern/engines/python python setup.py install 3. 在Python中使用 (a). 加载库 import matlab.engine (b). 开启引擎 mat_eng = matlab.engine.start_matlab() (c). 把matlab文件放到当前工程目录下,如’./BSS_EVAL.m’ (d). 如有需要进行tpye转换,如 input = matlab.double(input) (d). 调用BSS_EVAL.m函数 params = mat_eng.BSS_EVAL(input)

记录一段Shell脚本,文件/文件夹清空复制内容修改和创建

前几年写过一段shell脚本,大致的功能是完成制定目录下的文件夹/文件自动清空和复制工作,同时针对不同目录下复制的文件进行一些内容修改。并在另外一个文件中进行记录。主要涉及 if-then-fi, for, sed 等基本操作,这里记录下这段shell脚本以备查阅使用。 #!/bin/bash    #auther:Jacob Xu 20130811, create for Solr master indexing    echo “====================== choose the configure for user! ====================”   solrToolPath=/home/jacoxu/solrProject/solrTools/    creatIndexFolder=1    replaceSchame=0    replaceMasterConf=1    replaceSlaveConf=0    generateCoreMap=0    generateSolrXml=1       ################## configure the index folder for user!###################    rawFolder=$solrToolPath“collection1970_01_1″   destFolder=/home/jacoxu/solrProject/solrHome_NormSMS/multicore/    startDate=201001    endDate=201412    coreChildren=( 1 2 3 )    conf=conf    prefixPath=collection    … 继续阅读

libSVM多类别概率输出问题

在libsvm模型进行预测时predict返回的三个参数分别为: -predicted_label:第一个返回值 nx1,表示样本的预测类标号; -accuracy:第二个返回值,1×1,表示分类的正确率; -prob_estimates:第三个返回值,nxk,每一行表示这个样本分别属于每一个类别的概率。 然而,坑来了。。。。 您的程序中所返回的第三个参数中的概率顺序极有可能并不是按照真实的类别0-(k-1)的类别排序的。 注意,是可能。因为大部分情况是正常的,因而查询了很多也没注意到相关介绍,最后在 [这里] 看到相同情况。 此时,才留意到,其实predict返回的概率结果排序是按照标签的输入顺序依次排序的,因而前面的标签会排在前面。 此时可通过model.Label将标签顺序打印出来,并根据此进行重排序 [label,rOrder] = sort(model.Label); predict_scoresR = predict_scores(:,rOrder); 得到正确的顺序 predict_scoresR.

JAVA基于正则表达式的模糊替换

示例: 输入字符串:黄家驹 alias KaKuiWong(英)Koma(日)、黄伯、黑仔、四眼仔 输出字符串:黄家驹 alias KaKuiWong、Koma、黄伯、黑仔、四眼仔 代码: String inputStr = inputStr.replaceAll(“\\((.)\\)”, “、”); 有时候我们需要对括号内部的长度进行限制,如只有长度在5以内才被判断为后缀信息,若长度很长,则可能是内容信息: 代码: String inputStr = inputStr.replaceAll(“\\((.{0,5})\\)”, “、”);

对HashMap中的Value或Key进行排序

以下函数段功能,对Map结构变量tagStatMap以Value为标准进行排序,然后存放到tagInfoList结构中。 //开始对Tag进行排序    List<Map.Entry<String, Integer>> tagInfoList =            new ArrayList<Map.Entry<String, Integer>>(tagStatMap.entrySet());    Collections.sort(tagInfoList, new Comparator<Map.Entry<String, Integer>>() {           @Override   public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {                  return (o2.getValue() - o1.getValue());             //return (o1.getKey()).toString().compareTo(o2.getKey());        }    });     for (int i = 0; i < tagInfoList.size(); i++) {        String tagStr = tagInfoList.get(i).getKey();        int tagFrq = tagInfoList.get(i).getValue();        tagStaticsWriter.write(tagFrq+“<->”+tagStr+“\n”);                    }