- 博客(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
14938
原创 git使用技巧-撤销未提交修改
如果已经对git仓库中的某一个文件(如example.cpp)进行了修改,后来发现修改不对,想撤销所有的修改,保留和git远程中提交版本一致,这时需要执行如下命令git checkout example.cpp这样就可以把对example.cpp的未提交的修改,撤销了。example.cpp的版本就和远程库中一样,或者和本地上次提交的一致了。
2014-06-11 10:15:32
2115
翻译 离散余弦变换定义
在处理复数域信号时,离散傅立叶变换能够把它转换至频域,然而在实际中,大部分的信号都是处理实域信号,这样在离散傅立叶变换之后,由于其对称性,导致一半的冗余数据。在时域,信号的虚部为全0。在频域,其实部和虚部分别具有偶对称以及奇对称性。相比而言,离散余弦变换是针对时域信号的处理方法,它能够避免数据的冗余。另外,由于离散余弦变换是从离散傅立叶变换继承而来,它保留了一些离散傅立叶变换的优点。
2014-06-08 19:55:41
4115
原创 从WAVE头文件中获取压缩方式
在解析WAV文件时,会从头文件中读取TAG值,表示当前文件的压缩格式,如该值为1,表示没有压缩,其它表示不同的压缩方式。如其中为6时,表示压缩方式是alaw列表如下:TAG值音频描述00x0000Unknown10x0001Microsoft PCM2
2014-04-25 18:12:54
1926
原创 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
1644
原创 共轭对称序列和共轭反对称序列
共轭是针对复数而言的,如果两个复数的实部相等,其虚部为相反数,那么这两个复数就是共轭的。在公式上表示时,共轭使用 *来表示,如 如果满足条件如下: 则称为共轭对称序列,记为 :。如果虚部为 0的时候,此时表示一个偶序列。 如果满足条件如下: 则称为共轭反对称序列,记为 :,如果虚部为 0
2014-04-16 17:50:49
68028
10
原创 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
2387
原创 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
1299
原创 关于socket通信时SIGPIPE的问题
一,SIGPIPE信号的产生在Linux平台下,写socket的程序时,难免总是会碰到SIGPIPE 的问题,此时如果不作处理,那你可能需要一个监控,每1分钟检查进程是否存在,不存在的话,就重新启动,因为进程对SIGPIPE的默认响应是退出。SIGPIPE 的产生是由于往一个断开的连接上写数据,该连接已经被复位,这就会引起操作系统抛出一个SIGPIPE信号给相应的进程,而相应的进程在收到操
2014-02-28 15:36:21
2328
原创 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
5650
原创 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
13999
原创 多个静态库合并
这个方法适合下面的问题合并多个静态库。静态库的多级依赖。静态库级联调用,导致链接错误。。。。。。。第一步:生成静态库文件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
5415
原创 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
2360
原创 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
7618
1
原创 VAD实现 (二) --- 数据预处理
在用VAD算法确定静音和语音数据的开始和起止点之前,需要对语音数据进行处理,然后再计算语音数据的开始和起止点,这个过程称为数据的预处理,有些VAD算法是基于短时能量和过零率实现的,并不进行预处理操作,但实验表明,对数据进行预处理之后的效果要比不进行预处理的效果好。这里,对数据进行去除直流和加窗两个预处理。一,去除直流至少有这几个理由,要求我们去除直流。直流,是频域的慢变成分,一
2013-06-14 12:01:17
6049
1
原创 VAD实现 (一) --- 读取语音数据
一,什么是VADVAD,也就是语音端点检测技术,是Voice Activity Detection的缩写。这个技术的主要任务是从带有噪声的语音中准确的定位出语音的开始和结束点,因为语音中含有很长的静音,也就是把静音和实际语音分离开来,因为是语音数据的原始处理,所以VAD是语音信号处理过程的关键技术之一。它的好坏,直接影响成败,由于技术本身的特殊性,所以在涉及语音信号处理的领域,端点检测技术的应
2013-06-14 11:12:29
10237
2
原创 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
2687
原创 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
3377
原创 C语言可变参数的简单理解-计算最大值
可变参数是C里面的一个使用技巧,用宏来实现的,其实主要是根据一个可变参数指针,然后不断的往后移指针。但是理解是怎么用的,还是比较容易的。#include //使用可变参数需要的头文件#include int max(int count, ...){ va_list ap;//1)定义一个可变参数,这个地方其实是一个指针,用于访问可变参数中的参数列表 v
2013-04-08 11:34:47
1170
原创 C语言实现的常见日志-abort\log\info\error
有这些时候:我们一个小的项目或者是一个独立的由几个文件组成的可执行文件,希望有一些简单的输出,包括日志以及异常退出。但是我们又不希望因为这些需求安装一些类似于glog、log3cpp等日志开源的包,因为我们不需要一些类似于线程安全等之类的调用、就是希望简单一点,越简单越好。。。。是的,就是这样。头文件log.h 如下#ifndef _LOG_H_#define _LOG_H_
2013-04-08 10:39:46
2021
原创 uniq处理全角字符时的问题
一个进程运行了整整一天还没结束,本来应该只需要半天左右就可以全部build完成了,一步一步查原因,发现在uniq处理全角字符的问题上。先看下面这个现象[root@localhost build]$ cat text 12580100862008658000858[root@localhost build]$ uniq text125805805[root@loc
2013-03-20 12:51:24
1344
原创 gdb断点调试的两个技巧-condition和ignore
今天调试一个程序时,程序有一个循环调用,但我想观察循环中间的,此时condition就很有用了,可以根据条件来停止当前的断点。一,condition这个功能很强大,可以在我们设置的条件成立时,自动停止当前的程序,先使用break(或者watch也可以)设置断点,然后用condition来修改这个断点的停止(就是断)的条件。使用方法很简单,如下:condition 修改当前的断点
2013-03-13 10:59:14
3397
原创 HTK数据文件的字节顺序交换
由于HTK很多工具都提供对二进制文件读写,如语音文件、MMF文件,HMM定义文件都可以定义为二进制文件,这样就可能会出现字节顺序在不同的机器上不一致的问题。为了避免这个字节序不同而在不同机器上不兼容的问题,HTK的二进制都统一默认使用大端,如果需要改变这个默认的设置,可以使用下面两个选项NATURALWRITEORDER。NATURALREADORDER。如果设置了这两个选
2013-03-06 12:42:11
1598
原创 GDB调试-数组查看技巧
GDB是在Linux上开发的必备调试工具,也是一个强大的调试工具,在查看数组的值时,可以查看数组中的多个值。如:我定义的一个数组变量如下char **monophoneStrs如果用GDB查看,如下:(gdb) p *monoLookup->monophoneStrs$8 = 0x627ec0 "aa"(gdb) 这样就只显示数组的第一个值,如果我需要输出多个值
2013-02-28 14:17:21
13667
原创 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
2464
原创 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
1809
原创 HTK语音信号处理-帧序列
本文假设所处理的语音输入格式是WAVEFORM(SOURCEKIND的值设置),由HTK库中HWave库提供处理支持,对于其它的格式,基本也是相通的。从原始语音到最后的特征向量(如MFCC)文件需要经过原始语音->预加重->分帧->加窗处理->快速傅里叶转换->滤波组处理->离散余弦转换(计算倒谱参数)->对数能量->差量倒谱参数(向量的形式了)->MFCC特征本文只完成对预加重、分帧及加
2013-02-26 12:34:55
2419
原创 C语言实现简单内存池
在用C语言开发时,特别是在服务器端,内存的使用会成为系统性能的一个瓶颈,如频繁的分配和释放内存,会不断的增加系统的内存碎片,影响内核之后分配内存的效率,这个时候一个比较可行的做法是采用内存池,先分配好比较多的内存,然后在这个已经分配的内存里使用内存,这样就不需要内核过多的参与内存分配和释放的过程。内存池根据应用不同有多种实现的策略,如有些分配很大的内存,然后将内存分配成大小相等的块,并将每个块
2013-02-22 17:58:32
4316
原创 通过SSH认证连接GIT
一,连接权限认证 有多种办法可以连接到GIT服务器,以获取或提交资料,主要包括1. 每个开发者建立账账户。2. SSH公钥认证。3. 集中授权,然后与SHELL访问权相同。二,生成公钥 为了方便使用(就是不用账户什么的东西),我们所有的项目都用SSH公钥进行认证,所以我们的第一步骤是产生公钥。
2013-02-21 12:19:35
1703
原创 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
22162
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
3082
原创 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
1249
原创 探索extern "C"
有一种说法是C++是另一种C语言,虽然在C++创建之初的初衷也是期望一个更好的C,但是C++中全局变量和函数所采用的编译和连接方式却与C语言不完全相同。这就会引起C++和C语言在处理全局变量和函数时所采用的不同方式,并且当这两种方式需要C++与C兼容时,就会引入一些平衡两种处理方式的另一种处理方法。 下面的代码段,在C程序里,应该经常可见#ifdef __cplusplus
2013-02-19 13:46:53
724
原创 linux中字符转换命令-tr的用法
可以把tr看作为一个简化的sed工具,tr表示为:translate。tr命令主要用于实现以下两个功能替换操作的字符串转换。删除操作的字符串转换,可以很容易的删除一些控制字符或者是空行。tr命令能够实现的功能,都能够用sed命令来实现。但就具体的替换功能来说,tr用起来更容易,也比较简单。一,命令格式tr [option] ["string1"] ["string2
2013-02-19 13:42:38
1299
原创 语音信号的加窗处理
平稳的随机过程是研究语音信号的主要手段,但是语音信号本身并不是平衡的。一,语音信号不平稳语音信号在产生过程中与环境和发声器官的联系很紧密,与各种运动都是相关的,信号本身是不平移的信号。主要是由于发声器官的运动不可预测带来的短时变。但发声器官的状态变化速度较声音振动的速度要缓慢的多,因此语音信号可以认为是短时平稳的。研究发现,在10~30ms的范围内,语音频谱特征和一些物理特征参数基本保
2013-02-18 15:18:34
24180
2
原创 HTK数据准备工具-HList
HTK在数据准备工具是主要是处理标签标记数据和音频数据,HCopy工具可以将音频数据转换成HTK的特征文件数据(参见 数据准备HCopy),HList并不处理什么数据,从字面意思就可以知道,这是一个查看工具,也非常有用一,功能查看所有HTK支持的格式文件的内容,可以支持多个文件。二,语法HList [options] file ....这个命令会输出file的文件内容,
2013-02-18 11:05:31
3135
原创 HTK数据准备工具-HCopy
HTK的数据准备工具主要是针对语言文件和语音标签数据文件的处理,前面介绍了处理语音标签数据文件的处理工具,如下:HLEd。根据发音词典,自动对标签文件进行标记。该工具还可以对标签文件进行编辑处理,其实主要是对标签文件进行编辑,按照发音词典进行扩展也是编辑的一种,另外可以对发音词典进行替换、删除、写入等编辑操作。参见:数据准备工具-HLEdHLStats。这个工具主要是对标签文件根据发音
2013-02-18 10:34:41
7753
2
原创 语音信号预加重算法
一,为什么需要预加重操作语音信号低频段能量大,高频段信号能量明显小;而鉴频器输出噪声的功率谱密度随频率的平方而增加(低频噪声小,高频噪声大),造成信号的低频信噪比很大,而高频信噪比明显不足,从而导致高频传输衰弱,使高频传输困难,从而使得整个信息传输的信噪比得到改善。因此,在传输之前把信号的高频部分进行加重,然后接收端再去重,提高信号传输质量。预加重算法只要起到作用,并不是单一的某一算法,如一阶
2013-02-18 06:21:04
11171
原创 向Linux登录终端发消息
同一台服务器,可能有很多个用户登录在上面,每个用户都是一个系统终端,可以向其他终端发送消息,同在服务器上开发的开发人员可以简单的互动(不能回复)一下哈!一,效果先登录一个终端,如下:[root@localhost /]# whoroot tty1 2013-02-16 18:14 (:0)root pts/0 2013-02-17 02
2013-02-17 18:00:09
2466
基于DNN技术的大规模连续语音识别
2013-03-13
模式识别讲义
2013-02-18
linus shell
2013-02-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人