我正在用java中的文本进行语音项目。以下我做了:
1)我已经读取了音频信号的字节,然后将它们转换为双数组
2)然后我通过了高通滤波器(公式如下)。 x是输入信号的双重数组。
double y[]=new double[x.length];
y[0]=x[0];
for(int i=1;i<x.length;i++)
y[i] = (0.95 * y[i-1]) + (0.95 * (x[i] - x[i-1]));
3)然后我把它分成持续时间为0.01s的帧到2D双阵列中
4)然后我通过了汉明窗户
5)然后我通过对一行的所有频率求和来得到所有帧的FFT
6)然后我通过以下方式将频率转换为mel ceptrum:
mf=2595*Math.log10(1+(f/700));
7)然后采用离散余弦变换
8)最后我将信号与两个DCT结果的DTW相匹配。
我得到的输出并不令人满意。像
因为'a'我得到'k'
因为'b'我得到'e'
因为'x'我得到了's'。
我做错了什么?