我正在建立一个语音验证系统,为此,我正在使用C#语音识别,它允许我保存我转换的音频文件并将其存储为wav文件。
我有另一个wav文件,我已经存储了我的声音。
然后我使用提及here的FFT来比较2个wav文件,我使用来自here的交叉关联代码。
我的openWav代码如下:
public static void openWav(string filename, out double[] left, out double[] right)
{
var numArray = File.ReadAllBytes(filename);
int num1 = numArray[22];
int index1;
int index2;
int num2;
for (index1 = 12;
numArray[index1] != 100 || numArray[index1 + 1] != 97 ||
(numArray[index1 + 2] != 116 || numArray[index1 + 3] != 97);
index1 = index2 + (4 + num2))
{
index2 = index1 + 4;
num2 = numArray[index2] + numArray[index2 + 1] * 256 + numArray[index2 + 2] * 65536 +
numArray[index2 + 3] * 16777216;
}
var index3 = index1 + 8;
var length = (numArray.Length - index3) / 2;
if (num1 == 2)
length /= 2;
left = new double[length];
right = num1 != 2 ? null : new double[length];
var index4 = 0;
while (index3 < numArray.Length)
{
left[index4] = bytesToDouble(numArray[index3], numArray[index3 + 1]);
index3 += 2;
if (num1 == 2)
{
right[index4] = bytesToDouble(numArray[index3], numArray[index3 + 1]);
index3 += 2;
}
++index4;
}
}
它没有错误,但每次我得到0.6到0.8之间的答案,即使它不是我的声音。
任何人都可以建议我在哪里做错了,或者在C#中有没有其他方法可以做到这一点?