自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (7)
  • 收藏
  • 关注

原创 Perl中uc和lc函数

这两个函数的作用是把字符串的大写字母和小写字母进行转换。如:$side = uc $attrs[0]; 把attrs[0]转换成大写,然后给side变量赋值。$gender = lc $attrs[1]; 把attrs[1]转换成小写,然后给gender赋值。注意:两个函数都是把转换之后的字符串作为返回的值 。uc是大写,表示upper convert,lc是小写,表示

2014-07-01 14:11:57 14733

原创 git使用技巧-撤销未提交修改

如果已经对git仓库中的某一个文件(如example.cpp)进行了修改,后来发现修改不对,想撤销所有的修改,保留和git远程中提交版本一致,这时需要执行如下命令git checkout example.cpp这样就可以把对example.cpp的未提交的修改,撤销了。example.cpp的版本就和远程库中一样,或者和本地上次提交的一致了。

2014-06-11 10:15:32 2067

翻译 离散余弦变换定义

在处理复数域信号时,离散傅立叶变换能够把它转换至频域,然而在实际中,大部分的信号都是处理实域信号,这样在离散傅立叶变换之后,由于其对称性,导致一半的冗余数据。在时域,信号的虚部为全0。在频域,其实部和虚部分别具有偶对称以及奇对称性。相比而言,离散余弦变换是针对时域信号的处理方法,它能够避免数据的冗余。另外,由于离散余弦变换是从离散傅立叶变换继承而来,它保留了一些离散傅立叶变换的优点。

2014-06-08 19:55:41 3969

原创 从WAVE头文件中获取压缩方式

在解析WAV文件时,会从头文件中读取TAG值,表示当前文件的压缩格式,如该值为1,表示没有压缩,其它表示不同的压缩方式。如其中为6时,表示压缩方式是alaw列表如下:TAG值音频描述00x0000Unknown10x0001Microsoft PCM2

2014-04-25 18:12:54 1888 3

原创 Linux下批量修改名字方法

假设任务是把目录下所有的.log后缀文件名中的2014去掉。方法一) 脚本 这种方法通过ls把当前目录下所有的文件进行遍历,然后获取文件名,进行mv操作,如下:#!/bin/shfor file in `ls ./*.log`do newfilename=`echo $file|sed 's/2014//g'` mv $file $newfilename done

2014-04-22 09:20:50 1625

原创 共轭对称序列和共轭反对称序列

共轭是针对复数而言的,如果两个复数的实部相等,其虚部为相反数,那么这两个复数就是共轭的。在公式上表示时,共轭使用 *来表示,如        如果满足条件如下:        则称为共轭对称序列,记为 :。如果虚部为 0的时候,此时表示一个偶序列。        如果满足条件如下:        则称为共轭反对称序列,记为 :,如果虚部为 0

2014-04-16 17:50:49 65373 9

原创 C语言清除输入缓冲区

在使用scanf输入时,如果输入不合法,此时可以检查其返回值为0,但下次再调用时,上次不合法的输入,还在输入缓冲区中,此时就会接着不合法,如下:#include int main(int argc,char** argv){ int id ; int ret = scanf("%d",&id); while(ret == 0){

2014-03-28 13:22:21 2349

原创 C语言字符串函数-strpbrk函数

一,strpbrk函数函数原型:extern char * strpbrk(char *s1,char *s2);头文件:功能:在字符串s1中寻找字符串s2中任何一个字符相匹配的第一个字符的位置,但s2中不能包含'\0'。这个函数可以认为是strchr的一个扩展版本。其它:这个函数名字不如strcpy、strcmp那么直接,它的意思是【string pointer break】

2014-03-22 13:30:54 1247

原创 关于socket通信时SIGPIPE的问题

一,SIGPIPE信号的产生在Linux平台下,写socket的程序时,难免总是会碰到SIGPIPE 的问题,此时如果不作处理,那你可能需要一个监控,每1分钟检查进程是否存在,不存在的话,就重新启动,因为进程对SIGPIPE的默认响应是退出。SIGPIPE 的产生是由于往一个断开的连接上写数据,该连接已经被复位,这就会引起操作系统抛出一个SIGPIPE信号给相应的进程,而相应的进程在收到操

2014-02-28 15:36:21 2280

原创 rpmbuild打包错误记录

一,在rpmbuild给spec脚本指定变量rpmbuild --define="version ${version}" --define="project ${PROJECTNAME}" -ba ./rpm/project.spec这样,在spec脚本中可以用%version获取到version的变量值,如下:Name: %projectVersion: %version

2014-02-24 18:12:35 5587

原创 CMake 执行shell

使用cmake时,可以在cmakelist.txt中如下执行shell一,方法1set(LOG "log.txt")add_custom_command(OUTPUT ${LOG} COMMAND echo "Generating log.txt file..." COMMAND echo "welcome" COMMAND sh -x shell.sh COMME

2014-02-20 19:03:34 13922

原创 多个静态库合并

这个方法适合下面的问题合并多个静态库。静态库的多级依赖。静态库级联调用,导致链接错误。。。。。。。第一步:生成静态库文件echo CREATE lib-static.a > ar.mac 回车echo SAVE >> ar.mac 回车echo END >> ar.mac 回车ar -M  第二步:加入.o文件至静态库ar -q lib-static

2014-02-20 18:59:23 5366

原创 C语言简单的进度条实现

实现一个简单的进度条,就是从0%-100%之间显示,我给一个数字,如:56,进度条就应该显示  56% 。

2013-07-15 15:36:15 4725

原创 Linux上获取所有网卡信息

#include #include #include #include #include int main(){ struct ifreq ifr; struct ifconf ifc; char buf[2048]; int success = 0; int sock = socket(AF_INET, SOCK_DGRAM, IPPROT

2013-06-18 17:53:57 2330

原创 VAD实现 (三) --- 算法计算流程与框架

在实现VAD算法之前,先给出在这里VAD算法的实现流程和算法框架。调用关系依次是 detect_wav -> detect_frame->process_vad->energy_detect,energy_detect比较复杂,所以暂时不在这里,这只是表示出基本的计算流程和框架int frame_size = 256 ; int sample_rate = 8000 ;// 采样频

2013-06-18 11:12:53 7544 7

原创 VAD实现 (二) --- 数据预处理

在用VAD算法确定静音和语音数据的开始和起止点之前,需要对语音数据进行处理,然后再计算语音数据的开始和起止点,这个过程称为数据的预处理,有些VAD算法是基于短时能量和过零率实现的,并不进行预处理操作,但实验表明,对数据进行预处理之后的效果要比不进行预处理的效果好。这里,对数据进行去除直流和加窗两个预处理。一,去除直流至少有这几个理由,要求我们去除直流。直流,是频域的慢变成分,一

2013-06-14 12:01:17 5989 1

原创 VAD实现 (一) --- 读取语音数据

一,什么是VADVAD,也就是语音端点检测技术,是Voice Activity Detection的缩写。这个技术的主要任务是从带有噪声的语音中准确的定位出语音的开始和结束点,因为语音中含有很长的静音,也就是把静音和实际语音分离开来,因为是语音数据的原始处理,所以VAD是语音信号处理过程的关键技术之一。它的好坏,直接影响成败,由于技术本身的特殊性,所以在涉及语音信号处理的领域,端点检测技术的应

2013-06-14 11:12:29 10116 3

原创 accept的一个小陷阱

先看下面的代码:监听127.0.0.1 : 5563 ,如果有连接,就输出这个客户端的IP、端口和连接描述符。#include #include int main(int argc,char** argv){ int _socket = 0 ; struct sockaddr_in addr_server,addr_client;

2013-05-30 17:52:42 2663

原创 C++使用hash_map时警告

在C++中使用hash_map时,警告如下:。。。。。。。。。。。。。/usr/lib/gcc/x86_64-redhat-linux/4.4.7/../../../../include/c++/4.4.7/backward/backward_warning.h:28:2: 警告:#warning This file includes at least one deprecated or a

2013-04-09 10:47:39 3346

原创 C语言可变参数的简单理解-计算最大值

可变参数是C里面的一个使用技巧,用宏来实现的,其实主要是根据一个可变参数指针,然后不断的往后移指针。但是理解是怎么用的,还是比较容易的。#include //使用可变参数需要的头文件#include int max(int count, ...){ va_list ap;//1)定义一个可变参数,这个地方其实是一个指针,用于访问可变参数中的参数列表 v

2013-04-08 11:34:47 1140

原创 C语言实现的常见日志-abort\log\info\error

有这些时候:我们一个小的项目或者是一个独立的由几个文件组成的可执行文件,希望有一些简单的输出,包括日志以及异常退出。但是我们又不希望因为这些需求安装一些类似于glog、log3cpp等日志开源的包,因为我们不需要一些类似于线程安全等之类的调用、就是希望简单一点,越简单越好。。。。是的,就是这样。头文件log.h 如下#ifndef _LOG_H_#define _LOG_H_

2013-04-08 10:39:46 1971

原创 uniq处理全角字符时的问题

一个进程运行了整整一天还没结束,本来应该只需要半天左右就可以全部build完成了,一步一步查原因,发现在uniq处理全角字符的问题上。先看下面这个现象[root@localhost build]$ cat text 12580100862008658000858[root@localhost build]$ uniq text125805805[root@loc

2013-03-20 12:51:24 1328

原创 gdb断点调试的两个技巧-condition和ignore

今天调试一个程序时,程序有一个循环调用,但我想观察循环中间的,此时condition就很有用了,可以根据条件来停止当前的断点。一,condition这个功能很强大,可以在我们设置的条件成立时,自动停止当前的程序,先使用break(或者watch也可以)设置断点,然后用condition来修改这个断点的停止(就是断)的条件。使用方法很简单,如下:condition 修改当前的断点

2013-03-13 10:59:14 3353

原创 HTK数据文件的字节顺序交换

由于HTK很多工具都提供对二进制文件读写,如语音文件、MMF文件,HMM定义文件都可以定义为二进制文件,这样就可能会出现字节顺序在不同的机器上不一致的问题。为了避免这个字节序不同而在不同机器上不兼容的问题,HTK的二进制都统一默认使用大端,如果需要改变这个默认的设置,可以使用下面两个选项NATURALWRITEORDER。NATURALREADORDER。如果设置了这两个选

2013-03-06 12:42:11 1583 1

原创 GDB调试-数组查看技巧

GDB是在Linux上开发的必备调试工具,也是一个强大的调试工具,在查看数组的值时,可以查看数组中的多个值。如:我定义的一个数组变量如下char **monophoneStrs如果用GDB查看,如下:(gdb) p *monoLookup->monophoneStrs$8 = 0x627ec0 "aa"(gdb) 这样就只显示数组的第一个值,如果我需要输出多个值

2013-02-28 14:17:21 13403

原创 N-Gram的数据结构

ARPA的n-gram语法如下:\data\ngram 1=64000ngram 2=522530ngram 3=173445\1-grams:-5.24036 'cause -0.2084827-4.675221 'em -0.221857-4.989297 'n -0.05809768-5.365303

2013-02-26 17:19:04 2421

原创 C++实现语音识别词典内存存储模型

对于给定的词典,如下一 ii i1一一 ii i1 ii i1一一一 ii i1 ii i1 ii i1一一一一 ii i4 ii i1 ii i4 ii i1一一一七 ii i1 ii i1 ii i1 q i1一一一三 ii i1 ii i1 ii i1 s an1一一一九 ii i1 ii i1 ii i1 j iu3一一一二 ii i1 ii i1 ii i1 ee

2013-02-26 16:05:44 1767

原创 HTK语音信号处理-帧序列

本文假设所处理的语音输入格式是WAVEFORM(SOURCEKIND的值设置),由HTK库中HWave库提供处理支持,对于其它的格式,基本也是相通的。从原始语音到最后的特征向量(如MFCC)文件需要经过原始语音->预加重->分帧->加窗处理->快速傅里叶转换->滤波组处理->离散余弦转换(计算倒谱参数)->对数能量->差量倒谱参数(向量的形式了)->MFCC特征本文只完成对预加重、分帧及加

2013-02-26 12:34:55 2387

原创 C语言实现简单内存池

在用C语言开发时,特别是在服务器端,内存的使用会成为系统性能的一个瓶颈,如频繁的分配和释放内存,会不断的增加系统的内存碎片,影响内核之后分配内存的效率,这个时候一个比较可行的做法是采用内存池,先分配好比较多的内存,然后在这个已经分配的内存里使用内存,这样就不需要内核过多的参与内存分配和释放的过程。内存池根据应用不同有多种实现的策略,如有些分配很大的内存,然后将内存分配成大小相等的块,并将每个块

2013-02-22 17:58:32 4280

原创 通过SSH认证连接GIT

一,连接权限认证         有多种办法可以连接到GIT服务器,以获取或提交资料,主要包括1.        每个开发者建立账账户。2.        SSH公钥认证。3.        集中授权,然后与SHELL访问权相同。二,生成公钥         为了方便使用(就是不用账户什么的东西),我们所有的项目都用SSH公钥进行认证,所以我们的第一步骤是产生公钥。

2013-02-21 12:19:35 1676

原创 git status简单用法

git status可以用来查看仓库的状态,这个命令是一个很有用的命令,在用GIT的过程中,会出现各种意想不到的情况,原因是我们反复提交和修改。git status可以帮助我们快速的知道当前的GIT状态。命令如下:[root@localhost gender]# git status# On branch master# Your branch is ahead of 'origin/ma

2013-02-21 12:08:18 22115 1

原创 C语言实现16位和32位按字节反转

32位反转如下:void Rev32InByte( void *val ){ unsigned int v = *((unsigned int *)val) ; v = ((v & 0x000000FF) << 24) | ((v & 0x0000FF00) << 8) | ((v & 0x00FF0000) >> 8) |

2013-02-20 10:49:38 3010

原创 A20地址线

void go_to_protected_mode(void){ /* Hook before leaving real mode, also disables interrupts */ realmode_switch_hook(); /* Move the kernel/setup to their final resting places */ move_kernel_aroun

2013-02-19 13:50:16 1210

原创 探索extern "C"

有一种说法是C++是另一种C语言,虽然在C++创建之初的初衷也是期望一个更好的C,但是C++中全局变量和函数所采用的编译和连接方式却与C语言不完全相同。这就会引起C++和C语言在处理全局变量和函数时所采用的不同方式,并且当这两种方式需要C++与C兼容时,就会引入一些平衡两种处理方式的另一种处理方法。      下面的代码段,在C程序里,应该经常可见#ifdef __cplusplus

2013-02-19 13:46:53 705

原创 linux中字符转换命令-tr的用法

可以把tr看作为一个简化的sed工具,tr表示为:translate。tr命令主要用于实现以下两个功能替换操作的字符串转换。删除操作的字符串转换,可以很容易的删除一些控制字符或者是空行。tr命令能够实现的功能,都能够用sed命令来实现。但就具体的替换功能来说,tr用起来更容易,也比较简单。一,命令格式tr [option] ["string1"] ["string2

2013-02-19 13:42:38 1264

原创 语音信号的加窗处理

平稳的随机过程是研究语音信号的主要手段,但是语音信号本身并不是平衡的。一,语音信号不平稳语音信号在产生过程中与环境和发声器官的联系很紧密,与各种运动都是相关的,信号本身是不平移的信号。主要是由于发声器官的运动不可预测带来的短时变。但发声器官的状态变化速度较声音振动的速度要缓慢的多,因此语音信号可以认为是短时平稳的。研究发现,在10~30ms的范围内,语音频谱特征和一些物理特征参数基本保

2013-02-18 15:18:34 24031 2

原创 HTK数据准备工具-HList

HTK在数据准备工具是主要是处理标签标记数据和音频数据,HCopy工具可以将音频数据转换成HTK的特征文件数据(参见 数据准备HCopy),HList并不处理什么数据,从字面意思就可以知道,这是一个查看工具,也非常有用一,功能查看所有HTK支持的格式文件的内容,可以支持多个文件。二,语法HList [options] file ....这个命令会输出file的文件内容,

2013-02-18 11:05:31 3097

原创 HTK数据准备工具-HCopy

HTK的数据准备工具主要是针对语言文件和语音标签数据文件的处理,前面介绍了处理语音标签数据文件的处理工具,如下:HLEd。根据发音词典,自动对标签文件进行标记。该工具还可以对标签文件进行编辑处理,其实主要是对标签文件进行编辑,按照发音词典进行扩展也是编辑的一种,另外可以对发音词典进行替换、删除、写入等编辑操作。参见:数据准备工具-HLEdHLStats。这个工具主要是对标签文件根据发音

2013-02-18 10:34:41 7696 2

原创 语音信号预加重算法

一,为什么需要预加重操作语音信号低频段能量大,高频段信号能量明显小;而鉴频器输出噪声的功率谱密度随频率的平方而增加(低频噪声小,高频噪声大),造成信号的低频信噪比很大,而高频信噪比明显不足,从而导致高频传输衰弱,使高频传输困难,从而使得整个信息传输的信噪比得到改善。因此,在传输之前把信号的高频部分进行加重,然后接收端再去重,提高信号传输质量。预加重算法只要起到作用,并不是单一的某一算法,如一阶

2013-02-18 06:21:04 11074

原创 向Linux登录终端发消息

同一台服务器,可能有很多个用户登录在上面,每个用户都是一个系统终端,可以向其他终端发送消息,同在服务器上开发的开发人员可以简单的互动(不能回复)一下哈!一,效果先登录一个终端,如下:[root@localhost /]# whoroot tty1 2013-02-16 18:14 (:0)root pts/0 2013-02-17 02

2013-02-17 18:00:09 2437

Matlab实现EM算法

资源有三个m文件,主要是实现EM算法,数据聚类通过多高斯分量

2013-07-17

gitosis.tar.gz

如果使用git clone git://eagain.net/gitosis.git gitosis无法下载gitosis时,就从这里下载吧!

2013-03-18

全面了解HTML5

对html5一个简单的了解,包括html5的产生背景,与html4的区别,以及新增加的属性等等

2013-03-15

基于DNN技术的大规模连续语音识别

本文介绍基于DNN的连续语音识别技术,包括深度神经网介绍、上下文相关方法、DNN-HMM。另外,由于中文的资料太少,这是英文的资料,不过不是很难看懂。

2013-03-13

统计自然语言处理基础

比较详细的说明了统计自然语言的基础,包括n-gram,HMM等,以及一些基本的语法基础

2013-02-22

模式识别讲义

模式识别的讲义,第一章 引论 第二章 聚类分析 第三章 判别域代数界面方程法 第四章 统计判决 第五章 学习、训练与错误率估计 第六章 最近邻方法 第七章 特征提取和选择

2013-02-18

linus shell

一本关于linux shell编程书。主要内容包括一些基本知识,如常用命令的回顾、SHELL的基本运行原理。然后是SHELL编程的语法,没有深入讲解SHELL,但是SHELL入门的话,是一本不错的书籍。

2013-02-18

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除