语音识别 - 线性预测编码



我正在为教育目的工作/研究一个项目创意,并希望做一个关于语音识别的项目,没有什么大不了的,只是一个让我开始进入该领域的介绍。基本上,项目和算法将接受(.wav)文件的输入,然后识别说话的人是说"是"还是说"否"。我希望使用线性预测编码。

基本上,在我的脑海中,我正在考虑以下算法:

  1. 将.wav(原始数据)读入向量
  2. 将矢量拆分为大小相等的块
  3. 处理每个模块的特定特性
  4. 查找其型号最有可能与生成的电话串匹配的单词。

然后,我想使用相关性等相似性度量来找到正确的电话。

所以,基本上,在数据文件被读入之后,并分成块。它应该/将包含如下:

rawdata = 
[0] => 'Y',
[1] => 'E',
[2] => 'S'

或者将包含频率结果,然后可以与电话进行比较。

我的问题是,这看起来是否是一个很好的算法来解决问题。

我的下一个问题:

当我尝试将.wav文件读入内存时,我得到(有点)以下结果。

20 30 10 30 40 50 .. 20 20 .. 10 20 .. 60 40 
10 20 30 40 50 60 ... .. . . . . 

它们都是整数值,所以,一旦我获取了所有标头信息。其余的数据是我需要转换为正确介质的,然后这就是数据..?我有点困惑。

希望有人可以帮助我,而且,我已经正确地写出了问题。谢谢。

如果你不相信我的意见,不,这不是一个好的算法。

首先,人们说话的速度不同,他们也用不同的速度发音字符。您不能从随机切片输入数据开始。

其次,为了获得一些好的结果,您需要大幅降低输入的噪声。您需要专注于人类语音最常使用的频率。然后你需要一些东西来识别元音,然后你尝试猜测单词,你需要一些真实的数据。不过,您可能不会得到任何可用的。

回答你关于 WAW 文件的问题,那就是标题 + 数据,我不知道标题,但由于 WAW 是一种古老的格式,因此获得一些文档并不难。

数据部分是一个整数值数组,即给定时刻声音的强度。对于44 kHz waw文件,强度每秒测量44 000次,并存储。它只是原始数字,根本没有压缩(有没有想过为什么 WAW 文件如此之大?)除了标头,它告诉您采样率和整数类型(通常为 16 位)等。

您分析这些庞大的数据以获取有关所用频率的一些信息,但是在开始之前,您应该真正研究声音的数学和所有内容。哎呀,即使我不确定我能写一些东西,成功识别大约一半的 3 个字母的单词。